← 返回更新日志

OpenClaw v2026.5.16-beta.1 预发布

2026-05-16 · GitHub 原文
### 变更 - 维护工具:将 Crabbox 技能默认值路由到由仓库代理的 AWS 配置,使 Blacksmith Testbox 成为显式选择加入而非广泛默认的备选项。 - CLI/入门:将设置向导和捆绑频道设置流程本地化为英语、简体中文和繁体中文。(#80645)感谢 @GaosCode。 - 代理/技能:在热网关轮次中缓存已水化的 `resolvedSkills`,同时通过红acted有效配置进行键复用,减少冗余的技能快照重建,且不跨越配置限制的技能边界。(#81451)感谢 @solodmd。 - Telegram/群聊:添加可选设置 `messages.groupChat.ambientTurns: "room_event"` 处理,使持续启用的环境闲聊可以作为安静的房间上下文运行,仅通过消息工具进行可见发言。(#81317)感谢 @obviyus。 ### 修复 - 发布工具:对齐已发布的启动器 Node 最低版本、`npm start`、包脚本检查、分片 lint 锁定、Vitest 根项目覆盖率以及插件 SDK 声明构建缓存元数据,以确保发布/包验证不会静默跳过或交付过时内容。 - 定时任务/代理:在独立的定时运行中遵从事先配置的子代理模型后备策略,并将该后备策略转发到嵌入代理的超时故障切换中。修复 #74985。感谢 @chrisgwynne。 - Codex 应用服务器/MCP:通过可选的 `mcp.servers.<name>.codex.agents` 列表将用户 MCP 服务器限定到特定的 OpenClaw 代理 ID,并接受 `codex.defaultToolsApprovalMode`(`auto`/`prompt`/`approve`)作为原生 Codex 批准默认值;OpenClaw 在将 `mcp_servers` 配置交给 Codex 之前会剥离 `codex` 块。(#82180)感谢 @sercada。 - 代理/OpenAI 响应:将 `input_tokens - cached_tokens` 钳制为零,并从 input + output + cached 组件重构 `totalTokens`,以便当提供者在 `input_tokens` 上相对于 `cached_tokens` 报告不足时,Responses-API 流报告一致的使用量。 - 插件:在安装、发现和后更新负载烟雾测试期间,拒绝格式错误的 `package.json` 中 `openclaw.extensions` 元数据,而不是静默丢弃无效条目。 - 媒体/文件:在信任声明的 MIME 头部之前嗅探 `input_file` 字节,在伪造的图像或 zip 负载成为代理可见文本之前拒绝它们。 - 配置持久化:忽略格式错误的数组/标量认证配置文件、定时任务状态和会话存储条目,而不是将它们水化为数字配置文件 ID、崩溃的定时任务行或无效的会话记录。 - 提供者:使用提供者自有错误拒绝格式错误的成功 Runway、BytePlus 和 Ollama 嵌入响应,而不是原始解析器/类型失败、静默坏向量或长期虚假轮询。 - 轨迹导出:跳过并报告 `manifest.json` 中格式错误的会话/运行时 JSONL 行,而不是让形状错误的会话行导致支持包导出崩溃。 - 配置/诊断:在 `openclaw doctor --fix` 期间,将启用了后备的频道 `allowFrom` 条目复制到显式的 `groupAllowFrom` 允许列表中,保留当前群组访问权限,而不添加运行时后备转换标志。 - 钩子:将有界网关生命周期钩子等待预算提升至关闭时 5 秒和重启前 10 秒,使短的重启通知处理程序有时间在关闭继续前完成。(#82273)感谢 @bryanbaer。 - 插件发布:在 npm 插件发布计划中要求外部包兼容性元数据,与 ClawHub 包契约匹配,然后包才能发布。 - 代理/OpenAI 兼容:在嵌入的 OpenAI 补全运行中遵从事先配置的每个模型 `max_completion_tokens`/`max_tokens` 参数,使高 token 的 Kimi 风格路由保持其配置的补全上限。修复 #82230。感谢 @albert-zen。 - 代理/本地:在受信任的 `openclaw agent --local` 运行周围安装本地网关请求作用域,使子代理补全公告可以使用进程内网关调度而不会崩溃。修复 #82140。感谢 @Kushmaro。 - 定时任务:防止失败的单代理运行在仅交付了失败通知时标记为成功的结果交付。修复 #72985。感谢 @Allenbluff。 - Discord:在规范化频道历史之前验证消息读取结果,并使用 Discord 边界错误报告意外负载,而不是 `map is not a function`。修复 #82252。感谢 @jessewunderlich。 - 代理/运行时:将 `agents.defaults.models["provider/*"].agentRuntime` 作为提供者范围的模型运行时策略应用,同时保留精确模型运行时优先级。修复 #82243。感谢 @rendrag-git。 - 代理/自动回复:将 `NO_REPLY` 提示指导限制为自动群组/频道回复,移除旧版静默回复重写,并抑制意外的直接聊天静默令牌,而不是交付后备文本。修复 #82254。感谢 @absol89。 - Telegram:在最终回调仅携带省略截断的快照时,保留更长的部分流预览,防止可见答案和转录镜像被短预览替换。修复 #82239。 - Telegram/主动记忆:即使钩子上下文携带原始聊天 ID,也通过 Telegram 提供者针对直接消息轮次运行阻塞记忆召回,防止嵌入的召回针对无效的数字频道启动。修复 #82177。感谢 @cslash-zz。 - 控制 UI/WebChat:防止乐观图片消息嵌入大型内联 `data:` 预览,并在聊天历史中保留仅图片的用户轮次,避免在发送图片附件时出现浏览器堆栈溢出。修复 #82182。感谢 @ExploreSheep。 - 代理/媒体:为生成的音乐和视频补全交接保留仅消息工具的交付,使群组/频道补全不会在未发布生成的附件时结束。 - Telegram:在轮询重连确认新的 `getUpdates` 活动后,排空排队的出站交付队列,使过时套接字和网络恢复不会让失败的回复滞留。修复 #50040。参考 #82175。感谢 @dmitriiforpost-commits 和 @shellyrocklobster。 - Telegram:当排队的入站积压在 Bot API 轮询仍然成功时停滞,将单轮询入口标记为不健康,使网关/频道健康度在 Telegram DM 处理卡住后不再保持绿色。修复 #82175。感谢 @shellyrocklobster。 - 代理:从交付的回复中剥离带有属性或自闭合语法的 Gemini/Gemma `<final>` 标签,包括严格的最终标签流式强制。修复 #65867。 - macOS/更新:当 `openclaw update` 从其中一个启动时,解除旧的 `ai.openclaw.update.*` LaunchAgent,防止 KeepAlive 重新启动循环反复重启网关并重放更新续操作。修复 #82167。 - 代理/重放:从提供者重放和待定最终交付恢复中剥离内部运行时上下文元数据和 `NO_REPLY` 哨兵,使重启和心跳恢复不会将控制文本回馈给模型。修复 #76629。感谢 @fuyizheng3120、@bryan-chx 和 @cael-dandelion-cult。 - LINE:在代理处理之前确认签名的 Webhook 事件,使慢速模型回复不会导致 LINE `request_timeout` 交付失败。修复 #65375。感谢 @myericho。 - LINE:阻止定时任务恢复从规范会话密钥中推断小写的 LINE 接收者,使长时间运行的任务回复不会静默重试不可交付的推送目标。修复 #81628。(#81704)感谢 @edenfunf。 - TTS:即使提供者输出本身不兼容语音,也保留频道派生的语音笔记交付用于 `/tts audio` 回复。(#82174)感谢 @xuruiray。 - Codex 应用服务器:在镜像的用户提示(包括失败快照)上保留入站发送者元数据和源频道来源,使频道历史保持原始发送者身份。(#82184)感谢 @zknicker。 - Codex 账户/状态:将仅元数据的速率限制桶视为已返回但为空,使 `/codex status` 和 `/codex account` 报告 `none returned` 而不是计数幻影限制。 - Codex/Lossless:将 Codex 显式压缩保留在原生应用服务器线程上,同时允许 Lossless 通过上下文引擎插槽;`openclaw doctor --fix` 现在将旧的 `compaction.provider: "lossless-claw"` 配置迁移到 `plugins.slots.contextEngine`。 - 定时任务/诊断:报告具有显式 `payload.model` 覆盖的定时任务,包括提供者命名空间计数和默认模型不匹配,使过时的定时任务模型固定在认证或计费调查期间可见。修复 #82151。感谢 @mgonto。 - Codex 应用服务器:在最后一个非助手当前轮次项完成后,保持短的轮次完成空闲看门狗启用,使安静的 Codex 应用服务器在外部尝试超时前释放 OpenClaw 会话通道。修复 #82171。(#82172)感谢 @funmerlin。 - 提供者/OpenRouter:停止向助手工具调用重放消息添加空的 DeepSeek V4 `reasoning_content` 占位符,并在后续聊天补全请求之前剥离空的回放伪影,使 `openrouter/deepseek/deepseek-v4-pro` 在工具使用后不再失败。修复 #82150。(#82158)感谢 @luyao618 和 @Suquir0。 - OpenAI 兼容提供者:在决定是否发送 `stream_options.include_usage` 时考虑流式使用兼容性元数据,同时保持绑定的 Volcengine 路由选择加入 Ark 流式使用。参考 #44845。(#82181)感谢 @xuruiray。 - 网关/批准:在 `canBridgeNoDeviceChatApprovalFromBackend` 中将 `turnSourceTo` 视为可选,匹配现有的 `turnSourceAccountId` 和 `turnSourceThreadId` 可选处理。没有接收者概念的频道(webchat、control-ui)在批准快照和重放参数上都保持 `turnSourceTo` 为 null,因此先前的必需字符串检查以 `APPROVAL_CLIENT_MISMATCH` 拒绝了每次后端重放。跨频道重放仍由所需的 `turnSourceChannel` 和 `sessionKey` 检查控制。修复 #82132。(#82136)感谢 @ottodeng。 - 定时任务:在独立定时模型和交付解析之前加载运行时插件,以便可以为定时运行选择外部频道。(#82111)感谢 @medns。 - 定时任务:将成功的直接定时交付镜像到解析的目标会话转录中,同时保留独立交付感知策略。(#80786)感谢 @cavit99。 - 定时任务:在会话绑定的定时运行压缩后保留轮换的转录身份,使 `sessionTarget: "current"` 将下一条用户消息保留在同一对话中。修复 #82164。感谢 @weissfl。 - Twitch:保持网关账户运行直到关闭,而不是将成功的监控启动视为干净的频道退出,防止立即自动重启循环。修复 #60071。(#81853)感谢 @edenfunf。 - 代理/自动回复:当通用代理运行失败回滚决定是否发送可见的回退文本时,遵从事先配置的 `agents.defaults.silentReply` 和每个表面群组静默回复策略。修复 #82060。(#82086)感谢 @taozengabc。 - Discord:将频道主题上下文作为结构化不可信元数据呈现在回复提示中,并停止重复入站消息正文或暴露原始 `EXTERNAL_UNTRUSTED_CONTENT` 信封。修复 #82168。感谢 @ronan-dandelion-cult。 - Codex 应用服务器:一旦 Codex 接受一个轮次,就启用短的闲置看门狗,使已接受但无当前轮次进度的轮次在外部模型超时前释放 OpenClaw 会话通道。修复 #82129。感谢 @Francois3d。 - 代理/回复:同时剥离在相邻已剥离的工具调用 XML 块后可见的 `<function_response>` 工作流输出,关闭 #47444 中剩余的清理器泄漏。 - 控制 UI/WebChat:当用户点击可见的输入 chrome 时聚焦撰写器,并恢复更大、带标签的桌面撰写器控件,同时保留紧凑的移动点击。修复 #45656。感谢 @BunsDev。 - Discord:默认禁止出站消息上的生成链接嵌入,使代理发送的 URL 保持为纯链接,除非禁用了 `channels.discord.suppressEmbeds`。 - 系统事件:将所有者降级保留在结构化元数据中,同时将排队的提示文本呈现为纯 `System:` 行,保持最低权限唤醒而不带提示可见的信任标签。(#82067) - Slack:默认关闭出站机器人链接展开,使代理发送的 URL 不再扩展为内联预览,除非启用了 `channels.slack.unfurlLinks`。(#82123)感谢 @kibi-bsp。 - Slack:在稍后的同轮次工具警告正常交付时,保留最终确定的草稿预览回复可见,而不是清除编辑过的答案。修复 #81903。(#81979)感谢 @neeravmakwana。 - 提供者/小米:在多次工具调用重放中保留 MiMo `reasoning_content`,包括自定义小米兼容代理路由,使后续轮次不再因 `400 Param Incorrect` 失败。修复 #81419。(#81589)感谢 @lovelefeng-glitch 和 @jimdawdy-hub。 - Slack/插件:在压缩代理可见系统事件之前,通过 Slack 交互处理程序路由插件拥有的模态 `view_submission` 和 `view_closed` 事件,使插件可以持久化完整提交的表单状态,同时保持转录紧凑。修复 #82102。感谢 @shannon0430。 - 提供者/小米:将旧的 MiMo V2 推理仅最终答案提升为可见文本,包括小米兼容代理路由,使当答案出现在 `reasoning_content` 中时 `mimo-v2-pro` 和 `mimo-v2-omni` 回复不再显示为空白。修复 #60261。(#60304)感谢 @HiddenPuppy。 - 提供者:为 Kimi K2.6/K2 思考和 MiMo V2.6 OpenAI 兼容工具调用后续轮次保留必需的 `reasoning_content` 重放,同时保持标准的 OpenAI/Qwen 剥离路径不变。修复 #82139。感谢 @yimao。 - 记忆搜索:停止使用 chokidar 写入稳定性轮询来监视记忆和 QMD 观察器,使大型 Markdown extraPath 树不再积累常规文件描述符;已更改的文件现在通过现有的去重同步队列进行稳定。修复 #77327 和 #78224。(#81802)感谢 @frankekn、@loyur 和 @JanPlessow。 - 消息工具:将暴露给模型的 Discord 频道创建模式字段从 `type` 重命名为 `channelType`,避免 NVIDIA NIM JSON Schema 解析器失败,同时仍接受旧的 `type` 工具调用。(#78920)感谢 @YashSaliya。