← 返回更新日志

OpenClaw v2026.5.16-beta.3 预发布

2026-05-16 · GitHub 原文
### 变更 - Providers/xAI:为 SuperGrok 订阅用户添加 xAI Grok OAuth 登录,使 `xai/*` 模型及 xAI 媒体/工具提供商无需 `XAI_API_KEY` 即可进行身份验证。 - CLI/cron:添加带超时和轮询间隔控制的 `openclaw cron run --wait`,以及精确的 `cron.runs --run-id` 过滤,使自动化可以阻塞等待某个已排队的手动运行。 (#81929) 感谢 @ificator。 - 维护者工具:通过仓库代理的 AWS 配置路由 Crabbox 技能默认值,将 Blacksmith Testbox 保留为显式选择加入,而非广泛证明的默认值。 - CLI/入门向导:将设置向导和捆绑频道设置流程本地化为英文、简体中文和繁体中文。 (#80645) 感谢 @GaosCode。 - Agents/skills:在热网关轮次中缓存水化的 `resolvedSkills`,同时通过脱敏的有效配置键控复用,减少冗余的技能快照重建,而不会跨越配置限制的技能边界。 (#81451) 感谢 @solodmd。 - Telegram/群组聊天:添加可选 `messages.groupChat.ambientTurns: "room_event"` 处理,使常开的环境聊天可以静默运行,仅通过消息工具进行可见发言。 (#81317) 感谢 @obviyus。 - Codex/上下文引擎:将线程引导投影周期绑定到 Codex 应用服务器线程,将脱敏的工具结果上下文带入新线程,并在投影状态变化时轮换后端线程。 (#82351) 感谢 @jalehman。 - Gateway:为重启信号、活跃工作排空、关闭、下一次启动、就绪和内存跨度添加可选的重启跟踪日志。 (#82396) 感谢 @samzong。 - Gateway/性能:将启动基准测试 HTTP 监听时机与完整网关就绪时机拆分,并在重启就绪跟踪中添加绑定后插件和边车诊断。 (#82603) 感谢 @samzong。 ### 修复 - Gateway/诊断:脱敏包含凭证的网关目标 URL 和客户端诊断,同时保留原始连接 URL 供程序化使用,使连接失败日志不再暴露嵌入的令牌。 - Telegram:通过新的 `resolveSessionTarget` 频道钩子规范化公告群组目标,使计划公告与入站轮次一致地解析到相同的 Telegram 会话对话注册表。修复 #81229。感谢 @giodl73-repo。 - Discord:将延迟的网关 `identify` 重试绑定到原始套接字生成,使重连后触发的重试不会针对新套接字进行 identify。修复 #82225。感谢 @giodl73-repo。 - ACP/控制平面:在代理配置更改时刷新缓存的运行时句柄,使 ACP 会话在编辑 `agents.defaults` 后停止使用过时的运行时。修复 #82237。感谢 @giodl73-repo。 - Gateway/sessions:按代理 ID 限定会话数据查找范围,使多代理网关状态不会在已配置的代理之间交叉泄漏会话记录。 (#81386) 感谢 @pgondhi987。 - Agents/media:在内部完成事件中接受生成的媒体附件,并将投递失败报告为错误,使完成的背景音乐/视频任务在提供商成功后不会消失。 - Matrix/审批:在频道审批处理器中途停止时释放进行中的反应绑定,防止重启后出现过期的审批目标。修复 #82485。 (#82482) 感谢 @Feelw00。 - Matrix/E2EE:停止请求 MSC4222 `state_after` 同步响应,使状态后数据不完整的家庭服务器不会让新加密的房间缺少出站房间加密器。修复 #82515。感谢 @nickdecooman。 - TUI:当自动回退解析在轮次中交换为不同模型时,实时更新显示的模型,使状态行反映实际处理运行的模型。修复 #82296。感谢 @giodl73-repo。 - Gateway/sessions:当缺少提供商使用遥测数据时,从本地/OpenAI 兼容转录本估算上下文使用量,使状态不再对真实本地模型会话显示空使用量。修复 #73990。 (#82317) 感谢 @giodl73-repo。 - 更新/安装程序:覆盖 OpenClaw 管理包安装的 npm `min-release-age` 隔离,使 `openclaw update`、插件更新和托管安装脚本可以立即安装请求的最新版本。 - Agents/sessions:在过时的使用更新中保留压缩后的新令牌快照,防止每条消息后重复自动压缩。修复 #82576。 (#82578) 感谢 @njuboy11。 - Agents/OpenAI Responses:记录无详细信息的 `response.failed` 事件的脱敏诊断信息,同时保留失败的响应 ID,使操作员可以关联提供商端失败。修复 #82558。 - Agents/auth:在通用令牌掩码之前,脱敏针对内存、尝试和重新加载凭证的 OAuth 刷新失败原因,同时确保失败的 ACP 分发清理关闭已初始化的运行时。 - Telegram:按账户和令牌指纹缓存成功的启动机器人身份,最长 24 小时,使重启在 Telegram API 缓慢期间可以跳过冗余的 `getMe` 探测,而不会永久固定已重命名的机器人。参考 #82525。 - Gateway/sessions:在重建失效主会话行时丢弃过期的元数据,使替代会话不会继承旧标签或转录路径。 - Codex 应用服务器:将原生上下文压缩完成事件标记为成功,防止在成功的 Codex 管理压缩后出现错误的“压缩未完成”通知。修复 #82470。 (#81593) 感谢 @Kyzcreig。 - Codex 应用服务器:在当前轮次审批、用户输入、动态工具和通知取得进展时保持长时间运行的轮次活跃,并将这些进展带入外部运行超时。 (#82601) 感谢 @100yenadmin。 - Gateway/channels:在启动诊断阶段之外移交跟踪频道账户启动,使长期运行的频道任务不会将存活警告固定在频道启动上。参考 #82398。 - Gateway/重启:在网关启动循环仍在返回其服务器句柄时,将重启和关闭信号排队,使启动时的重启在更新轮换期间不会被丢弃。 (#82660) 感谢 @samzong。 - GitHub Copilot:通过插件 SSRF 防护路由设备登录请求,并采用仅 GitHub 的策略。 - 群组/频道回复:当代理错过消息工具时,保持消息工具首选的最终回复为私有,并在网关调试日志中记录被抑制的负载元数据,以便更安静地诊断。 - Gateway/WebChat:在嵌入图片之前,通过配置的视觉能力 `imageModel` 计划路由图片附件,并在运行时重试中携带该图片模型回退链。 (#82524) 感谢 @frankekn。 - WebChat:在手动 `/compact` 运行时显示进度,通过将会话操作事件流式传输到订阅的 Control UI 客户端。修复 #82407。感谢 @Conan-Scott。 - Codex 应用服务器:将规范的 OpenAI Codex 应用服务器归属重写限制为本地转录本和轨迹记录,将运行时/工具路由保留在所选 OpenAI 模型元数据上,使 OpenAI API 密钥备份配置文件保持其计费路径。 - Codex 应用服务器:隐藏原生工具搜索控制工具,使其不暴露在动态工具中,同时保留消息工具。 - Android/聊天:使聊天消息中的裸 URL 和 markdown URL 可点击,通过在渲染的 markdown 中保留 Compose URL 注释。修复 #82187。 (#82392) 感谢 @neeravmakwana。 - 插件/诊断:将遗留的顶级插件 `tools` 声明迁移到 `contracts.tools`,使 `openclaw doctor --fix` 修复本地插件以符合清单工具合约。 (#81112) 感谢 @100yenadmin。 - Slack:引导代理使用来自上下文的稳定 `<@USER_ID>` 提及令牌,而不是纯 `@name` 文本,使用户提及能够正确链接和通知。修复 #82090。 (#82152) 感谢 @neeravmakwana。 - Auth:通过 OpenAI Codex、Anthropic、Cloudflare AI Gateway、GitHub Copilot 和 z.ai 的认证配置文件锁序列化提供商登录写入,保留 upsert 语义,使活动网关无法用过期的内存快照覆盖新刷新的 OAuth 凭证。 - Slack:将 DM 线程回复保留在主直接消息会话上,而不是路由到不可见的线程作用域会话。参考 #82390。 (#82418) 感谢 @kagura-agent。 - Auth/macOS:避免自动在钥匙串中创建 OAuth 配置文件主密钥,回退到文件备份密钥,使无头代理不会触发钥匙串提示。 - Codex 应用服务器:当缺少 `turn/completed` 时释放原始助手补全,同时保留评论/状态项作为进度,防止已完成的 Codex 运行挂起直到超时。修复 #82343。 (#82403) 感谢 @IWhatsskill。 - Agents/sessions:在原子替换成功后移除由 `repairSessionFileIfNeeded` 写入的临时 `*.bak-<pid>-<ts>` 备份,使卡住的会话(包含持续格式错误的 JSONL 行)不再累积每个修复调用的快照。修复 #80960。 (#80969) 感谢 @100yenadmin。由 @tynamite 共同编写。 - CLI/status:当没有频道或会话时,显示简单的空白状态消息,而不是空的 Channels 和 Sessions 表格。 - CLI/dashboard:在提供仪表板 URL 之前探测网关就绪状态,当网关停止时提示启动或安装托管服务,并打印恢复命令,而不是打开一个死掉的浏览器标签页。 - CLI/dashboard:将网关 `device identity required` 探测视为仪表板监听器可访问的证据,使 `openclaw dashboard` 仍然可以打开 Control UI。 - CLI:在不太可能正确渲染表情符号的终端上隐藏装饰性启动和状态表情符号,同时保留语义消息和身份表情符号。 - CLI/gateway:在 `openclaw dashboard` 从剥离的桌面 shell(如 VNC 终端)启动网关时,恢复 Linux 用户 systemd 总线环境。 - Gateway/WebSocket:将预期的启动 `1013 gateway starting` 重试关闭记录为调试而不是警告,同时为意外的预连接失败保留警告。修复 #76361。 (#82457) 感谢 @IWhatsskill。 - Providers/Xiaomi:从 MiMo 工具模式中剥离合成空数组 `items`,同时保留类型化数组项,避免严格的 OpenAI 兼容模式拒绝。 - Telegram:在进度模式工具草稿后,当调度器最终负载是省略号截断的快照时,发送基于转录本的完整最终答案。修复 #82409。感谢 @PashaGanson。 - Providers/Ollama:为标记为非推理的模型省略真实的本机 `think` 负载,同时保留支持的推理模型和显式 `think: false`。 (#82445) 感谢 @leno23。 - 更新/频道:通过包交换诊断和后核心插件修复保留更新前的频道配置,使外部化的频道升级不会丢弃已配置的聊天频道。修复 #82533。感谢 @imbaig。 - CLI/上下文引擎:为 CLI 轮次引导并最终确定非遗留上下文引擎,同时保留转录本快照和延迟维护所有权。 (#81869) 感谢 @sahilsatralkar。 - Telegram:在重启重放中持久化轮询更新,使排队的相同主题消息按顺序恢复,而不是在网关重启后丢失上下文。 (#82256) 感谢 @VACInc。 - Gateway/Gmail:在关闭前中止进行中的 Gmail 监视器启动和热重载重启,使重载无法在网关关闭后生成 `gog serve`。感谢 @frankekn。 - Agents/Codex:当 OpenAI 的隐式 Codex 工具偏好无法找到已注册的 Codex 插件时,回退到嵌入式 PI 运行器,防止 OpenAI 兼容网关请求因未注册工具错误而失败。修复 #82437。 - Agents/OpenAI:在显式 OpenAI PI 运行中,尊重 `auth.order.openai` 中置于 API 密钥备份之前的 `openai-codex:*` 条目,并接受 `models auth login --provider openai-codex --device-code` 进行无头登录。修复 #82521。 (#82605) - CLI/channels:在 `channels add --channel <id>` 期间安装缺失的外部化相同 ID 频道插件,使 WhatsApp 和其他外部化标准频道的恢复不需要单独的 `plugins enable` 步骤。修复 #82533。 - MCP 插件工具:通过 `createPluginToolsMcpHandlers().callTool` 将主机 MCP `tools/call` `AbortSignal` 转发到插件 `tool.execute`,使主机取消实际上会取消进行中的插件工具调用,而不是让它们运行完成。修复 #82424。 (#82443) 感谢 @joshavant。 - 插件:接受已弃用的 `api.on("deactivate")` 注册作为 `gateway_stop` 的过时兼容别名,使外部插件清理处理器在网关关闭时运行,同时为作者提供迁移指导。 - Media:当字节嗅探显示为通用容器时,忽略图像 MIME 和文件名提示,使被错误标记为图像的 zip/八位字节流负载不会成为本地图像媒体,也不会在暂存时保留图像文件扩展名。 - 更新/诊断:避免为拒绝 `groupAllowFrom` 的频道模板具体化 `groupAllowFrom`,使包交换诊断修复不会在外部化 Slack 配置上失败。 - Gateway/media:防止图像文件名覆盖通用的非图像字节嗅探,使被错误标记为图像的 zip/八位字节流负载在成为内联图像附件之前被卸载或拒绝。 - 插件/网络搜索:将过时可选的提供商安装降级为警告,使网关和诊断修复路径在启动提供商选择后继续运行。参考 #82313。感谢 @crackmac。 - Telegram/Gateway:将定向的 Telegram `/stop@bot` 消息路由到控制通道,无需缓存的机器人元数据,并在原始/规范会话别名之间匹配网关停止请求。 (#82298) 感谢 @VACInc。 - MS Teams/media:在暂存之前嗅探内联 `data:image/*` 附件字节,跳过实际上不是图像的有效负载。 - WebChat/media:在保留本地音频回复路径进行显示之前,要求受信任的本地媒体来源,使不受信任的类似音频路径通过正常暂存和读取策略检查。 - Agents/tool media:在将生成的工具附件合并到最终回复负载中时,保留受信任的本地媒体来源,使受信任的音频/媒体在出站显示规范化中幸存。 - Anthropic/Claude CLI:在重用本地 Claude CLI 认证时写入模型作用域的 `claude-cli` 运行时策略,使升级的 Telegram 和 Dashboard 网关轮次继续使用 CLI 后端,而不是回退到 Anthropic API 计费。修复 #82344。感谢 @amknight。 - 更新:让 `doctor --fix` 在插件模板仍在收敛时持久化核心配置修复,防止在外部化频道配置上更新失败。 - 更新:在配置突变预写读取中携带插件验证绕过,使包更新诊断修复可以在外部化插件模板收敛时完成。 - 更新/诊断:在顶级 `$include` 配置写入路径上保持插件验证绕过,使包修复可以更新包含的插件配置文件,而无需将它们扁平化到根配置中。 - Agents/subagents:在生命周期清理失败时发出警告并继续完成公告清理,防止已结束的子代理运行成为静默幽灵。修复 #82306。感谢 @SebTardif。 - Telegram:让授权的文本 `/stop` 命令在排队代理工作之前使用快速中止路径,使活动轮次立即停止,而不是在轮次结束后处理中止;外来机器人 `/stop@otherbot` 提及现在保留在常规主题通道上,而不是被路由到我们的控制通道。修复 #82162。感谢 @civiltox。 - Sessions:删除具有无效会话 ID 的持久化条目,并在水合会话运行时状态之前去除格式错误的转录文件元数据。 - Auth/device:在返回或保留令牌条目之前,规范化格式错误的持久化设备认证令牌元数据。 - Pairing:在批准有效的频道配对码之前,跳过格式错误的持久化待处理配对请求。 - Commitments:在匹配待处理的后续提醒之前,从持久化承诺中去除格式错误的可选提醒范围元数据。 - 配置持久化:规范化格式错误的认证配置文件凭证字段/状态,跳过 JSON 有效但垃圾的转录检查点行,并让 `openclaw doctor --fix` 删除无法修复的 cron 作业行。 - Cron:跳过内存中格式错误的作业行(包含格式错误的计划或负载形状),将存储留给 `openclaw doctor --fix`,而不是将它们水合到运行时状态中。 - Cron:保留遗留字符串计划和空白系统事件作业,以便运行时修复/跳过处理,而不是将它们作为格式错误的持久化行丢弃。 - Cron:在持久化作业之前拒绝空的计划主/隔离负载,使运行时存储与格式错误行强化兼容。 - 任务持久化:从任务和任务流 SQLite 边车中删除格式错误的数组/标量请求者来源 JSON,而不是将其恢复为投递元数据。 - Agents/timeouts:澄清模型空闲超时错误和文档,使提供商 `timeoutSeconds` 显示为由整个代理/运行超时上限限制。 - Agents/OpenAI streams:在处理突发的 Completions 和 Responses 块时协作让步,使中止、通道存活计时器和启动心跳在嘈杂的模型输出下保持响应。参考 #82462。 - 发布工具:对齐已发布的启动器 Node 最低版本、`npm start`、包脚本检查、分片 lint 锁定、Vitest 根项目覆盖率以及插件 SDK 声明构建缓存元数据,使发布/包验证不会静默跳过或提供过时的表面。 - Cron/agents:为隔离的计划运行尊重已配置的子代理模型回退,并将该回退策略转发到嵌入的代理超时故障切换。修复 #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。 - Agents/OpenAI Responses:将 `input_tokens - cached_tokens` 钳制为零,并从输入 + 输出 + 缓存组件重建 `totalTokens`,使 Responses-API 流在提供商少报 `input_tokens`(相对于 `cached_tokens`)时报告一致的用量。 - Agents:将适配器捕获的工具执行失败标记为嵌入式 Pi 会话中的错误工具结果,使模型可以重试可恢复的编辑失败,而不是看到成功的结果。修复 #81546。 (#81564) 感谢 @najef1979-code 和 @MonkeyLeeT。 - 插件:在安装、发现和后更新负载烟雾测试中拒绝格式错误的 `package.json` `openclaw.extensions` 元数据,而不是静默丢弃无效条目。 - 插件:拒绝 `package.json` 解析到插件根目录之外的包元数据记录,而不是信任持久化或重建的注册表快照。 - 插件:忽略格式错误的持久化包频道/安装元数据,而不是使目录重建崩溃或泄漏无效安装提示。 - 插件发布:拒绝会省略广告中包本地运行时条目的 `files` 否定模式(从 npm 插件 tarball 中)。 - Media/files:在信任声明的 MIME 头部之前嗅探 `input_file` 字节,在它们成为代理可见文本之前拒绝伪造的图像或 zip 负载。 - 插件/依赖:清理过时的托管根 `openclaw` 所有权元数据,而不删除链接的活动主机包,防止插件安装降级 npm 全局主机。修复 #79462。感谢 @lisandromachado。 - Gateway/update:将关闭钩子运行器导入保持在稳定的发布入口,并提供遗留块别名,使包交换不会因为缺少关闭块而使运行中的网关卡住。修复 #81819。感谢 @najef1979-code。 - 配置持久化:忽略格式错误的数组/标量认证配置文件、cron 作业状态和会话存储条目,而不是将它们水合为数字配置文件 ID、崩溃的 cron 行或无效的会话记录。 - 配置持久化:在加载时去除格式错误的待处理最终投递会话字段,使重放/恢复路径跳过中毒的回复元数据,而不是在原始对象上崩溃。 - 配置持久化:在加载时去除格式错误的插件扩展状态和提升的会话槽所有权,使损坏的会话行不会将中毒的插件元数据泄漏到重放/投影路径中。 - Gateway/sessions:在会话投影期间忽略格式错误的压缩检查点行,使损坏的存储不会导致会话列表/描述响应崩溃或显示虚假的检查点计数。 - Gateway/sessions:当导入的树形转录本引用缺失或遗留的父行时,保留可及的转录历史,使部分导入后会话历史读取不会变为空。 - 轨迹导出:报告不完整的转录父链并停止循环分支遍历,使格式错误的导入不会挂起 `/export-trajectory`。 - 会话重放:在静默会话重置期间跳过格式错误的用户/助手形转录行,而不是将无效条目复制到新转录本中。 - 备份验证:使用稳定的错误报告格式错误的存档清单,而不是泄漏原始 JSON 解析器详细信息。 - 会话导出:报告跳过的格式错误转录 JSONL 行,而不是静默地将它们从导出的 HTML 存档中省略。 - Providers:拒绝格式错误的成功 Runway、BytePlus 和 Ollama 嵌入响应,使用提供商拥有的错误,而不是原始解析器/类型失败、静默错误向量或长时间虚假轮询。 - Providers/images:拒绝格式错误的成功 OpenAI 兼容、OpenAI、Google、fal 和 OpenRouter 图像响应,使用提供商拥有的错误,而不是原始形状失败、静默无效 base64 跳过或空图像结果。 - Providers/videos:拒绝格式错误的成功 xAI、OpenRouter 和 fal 视频创建、轮询和结果响应,使用提供商拥有的错误,而不是原始解析器失败或长时间虚假轮询。 - Providers/videos:让所选模型的能力覆盖层清除继承的 `providerOptions`,使回退跳过明确不接受特定提供商选项的模型,而不是转发不受支持的旋钮。 - TTS/providers:在路由模型覆盖指令时尊重首选提供商别名,使别名选择的语音提供商接收不合格的 `[[tts:*]]` 覆盖。 - Providers/audio:拒绝格式错误的成功 OpenAI 兼容、ElevenLabs 和 Deepgram 语音响应,使用提供商拥有的错误,而不是原始解析器失败、错误形状的转录本或被视为音频的 JSON/文本主体。 - Providers/embeddings:拒绝格式错误的成功 OpenAI 兼容、Google Gemini 和 Amazon Bedrock 嵌入响应,而不是静默返回空或强制转换的向量。 - Providers/catalogs:拒绝格式错误的成功 LM Studio、GitHub Copilot、DeepInfra、Vercel AI Gateway 和 Kilocode 模型列表响应,使用提供商拥有的错误,而不是原始解析器/类型失败或静默回退目录。 - Providers/polling:拒绝数组、空值或标量成功操作状态响应,使用提供商拥有的格式错误 JSON 错误,而不是等待超时。 - ACPX/Codex:在包装器崩溃后启动时,清理插件本地的 Codex ACP 适配器孤儿,同时将直接适配器命令排除在启动租约注入之外。修复 #82364。 (#82459) 感谢 @joshavant。 - Telegram:通过渲染回退文本和内联按钮发送仅展示负载,而不是将其视为空。修复 #82404。 (#82449) 感谢 @joshavant。 - Providers/Kimi:在启用思考时,保留 Kimi Coding `reasoning_content` 重放并回填助手工具调用占位符,使 `kimi-for-coding` 后续工具轮次在先前工具使用后不再失败。修复 #82161。感谢 @amknight。 - Providers/search tools:拒绝格式错误的成功 xAI、Gemini 和 Kimi 网络/代码搜索响应,使用提供商拥有的错误,而不是静默的“无响应”负载或无依据的回退状态。 - 轨迹导出:跳过并报告 `manifest.json` 中格式错误的会话/运行时 JSONL 行,而不是让形状错误的会话行导致支持包导出崩溃。 - 语音呼叫:持久化被拒绝的入站呼叫重放密钥,使重复的运营商 webhook 重试在网关重启后仍被忽略。 - 配置/诊断:在 `openclaw doctor --fix` 期间,将启用回退的频道 `allowFrom` 条目复制到显式 `groupAllowFrom` 允许列表中,保留当前群组访问,而不添加运行时回退转换标志。 - 配置/诊断:在 `openclaw doctor --fix` 期间,从受信任的目录元数据中替换仅源官方的 Brave 和 Slack 插件安装,解除升级后外部化标准插件恢复的阻塞。 (#82425) 感谢 @joshavant。 - 配置/memory:当配置选择了官方外部 `memory-lancedb` 槽但插件尚未安装时,发出警告而非拒绝,同时提供显式的无可持久化内存启动警告和安装提示。修复 #82428。 (#82438) 感谢 @giodl73-repo。 - Agents/bootstrap:在工作区设置清理失败后,忽略过时的已完成根 `BOOTSTRAP.md` 上下文,防止频道代理轮次将其视为目录。 (#82463) 感谢 @joshavant。 - 更新/诊断:当配置的 OpenAI 代理模型需要 Codex 运行时,在 `openclaw doctor --fix` 期间重新启用 Codex 插件,防止升级后的配置因未注册的 Codex 工具而失败。修复 #82368。 (#82502) 感谢 @joshavant。 - 配置:显示一个 OpenAI 提供商条目,包含 ChatGPT/Codex 登录和 API 密钥选择,并将浏览过的 Codex 模型保留在保存的 `/model` 选择器允许列表中。 - Agents/model fallback:在延迟配置重载时保留自动回退链,即使会话回退来源幸存但 `modelOverrideSource` 缺失。修复 #81982。感谢 @joshavant。 - Hooks:将有界网关生命周期钩子等待预算提高到关闭 5 秒和预重启 10 秒,为短重启通知处理器提供足够时间在关闭继续之前完成。 (#82273) 感谢 @bryanbaer。 - 插件发布:在 npm 插件发布计划中要求外部包兼容性元数据,匹配 ClawHub 包合约,然后再发布包。 - Agents/OpenAI-compatible:在嵌入的 OpenAI 补全运行中尊重每个模型的 `max_completion_tokens`/`max_tokens` 参数,使高令牌 Kimi 风格路由保持其配置的补全上限。修复 #82230。感谢 @albert-zen。 - Agents/local:在受信任的 `openclaw agent --local` 运行周围安装本地网关请求作用域,使子代理完成公告可以使用进程内网关分发而不会崩溃。修复 #82140。感谢 @Kushmaro。 - Cron:防止失败的隔离代理运行将成功的结果投递标记为已交付,当只有失败通知被投递时。修复 #72985。感谢 @Allenbluff。 - Discord:在规范化频道历史之前验证消息读取结果,并使用 Discord 边界错误报告意外负载,而不是 `map is not a function`。修复 #82252。感谢 @jessewunderlich。 - Agents/runtime:应用 `agents.defaults.models["provider/*"].agentRuntime` 作为提供商标配模型运行时策略,同时保留精确模型运行时优先级。修复 #82243。感谢 @rendrag-git。 - Model picker:对于官方 OpenAI 路由,首先显示有效的 Codex 运行时,同时将 Pi 作为备选保留,并为自定义 OpenAI 兼容提供商保留 Pi 优先。修复 #82269。感谢 @rendrag-git。 - Agents/auto-reply:将 `NO_REPLY` 提示指导限制为自动群组/频道回复,移除遗留的静默回复重写,并抑制意外的直接聊天静默令牌,而不是提供回退文本。修复 #82254。感谢 @absol89。 - Telegram:当最终回调仅携带省略号截断的快照时,保留更长的部分流预览,防止可见答案和转录镜像被短预览替换。修复 #82239。感谢 @crash2kx。 - Telegram/active-memory:对于直接消息轮次,即使钩子上下文携带原始聊天 ID,也通过 Telegram 提供商运行阻塞性记忆回忆,防止嵌入的回忆针对无效的数字频道启动。修复 #82177。感谢 @cslash-zz。 - Control UI/WebChat:防止乐观图像消息嵌入大型内联 `data:` 预览,并在聊天历史中保留仅图像的用户轮次,避免发送图像附件时浏览器堆栈溢出。修复 #82182。感谢 @ExploreSheep。 - Agents/media:为生成的音乐和视频完成交接保留仅消息工具的投递,使群组/频道完成不会在没有发布生成附件的情况下结束。 - Telegram:在轮询重连确认新的 `getUpdates` 活动后,清空排队的出站投递,使过期套接字和网络恢复不会留下失败的回复。修复 #50040。参考 #82175。感谢 @dmitriiforpost-commits 和 @shellyrocklobster。 - Gateway/model auth:当通过网关控制平面移除已保存的认证时,中止活动的提供商运行,刷新实时运行时认证快照,并向客户端显示 `stopReason: "auth-revoked"`。修复 #81987。 (#82346) 感谢 @joshavant。 - Codex 应用服务器:在 `custom_tool_call_output` 通知后保持原始工具输出空闲监视器武装,使工具后流静默快速失败,而不是等待终端空闲超时。修复 #82274。 (#82378) 感谢 @joshavant。 - Codex 应用服务器:为 Codex 原生应用服务器 shell 和审批路径强制执行 OpenClaw `before_tool_call` 策略,防止原生工具执行绕过插件策略。修复 #82372。 (#82496) 感谢 @joshavant。 - Telegram:当缓冲的入站积压停滞但 Bot API 轮询仍然成功时,将隔离的轮询入口标记为不健康,使网关/频道健康在 Telegram DM 处理卡住后不再保持绿色。修复 #82175。感谢 @shellyrocklobster。 - Telegram:在审批 ID 过期后,从隔离轮询中丢弃过期的审批回调,使过期的内联按钮更新不会在重启间永久重试。修复 #82347。 (#82455) 感谢 @joshavant。 - Agents:从已投递的回复中剥离带有属性或自闭合语法的 Gemini/Gemma `<final>` 标签,包括严格的最终标签流式强制执行。修复 #65867。感谢 @grizdum。 - macOS/update:当 `openclaw update` 从一个启动时,解除遗留的 `ai.openclaw.update.*` LaunchAgents,防止 KeepAlive 重新启动循环反复重启网关和重放更新延续。修复 #82167。感谢 @DougButdorf。 - Agents/replay:从提供商重放和待处理最终投递恢复中剥离内部运行时上下文元数据和 `NO_REPLY` 哨兵,使重启和心跳恢复不会将控制文本回馈给模型。修复 #76629。感谢 @fuyizheng3120、@bryan-chx 和 @cael-dandelion-cult。 - Agents/replay:在去重嵌入助手间隙填充时跳过格式错误的转录尾行,防止截断的 JSONL 在重放恢复期间复制最终的助手回复。 - LINE:在代理处理之前确认签名的 webhook 事件,使缓慢的模型回复不会导致 LINE `request_timeout` 投递失败。修复 #65375。感谢 @myericho。 - LINE:停止 cron 恢复从规范会话密钥推断小写的 LINE 收件人,使长时间运行的任务回复不会静默重试不可投递的推送目标。修复 #81628。 (#81704) 感谢 @edenfunf。 - TTS:即使提供商输出原生不兼容语音,也保留从频道派生的语音笔记投递,用于 `/tts audio` 回复。 (#82174) 感谢 @xuruiray。 - Codex 应用服务器:在镜像用户提示(包括失败快照)上保留入站发送者元数据和源频道来源,使频道历史保留原始发送者身份。 (#82184) 感谢 @zknicker。 - Codex 应用服务器:在嵌入运行通知之间将投影器工作交给事件循环,同时保留轮次前速率限制捕获,减少由账户和 MCP 状态通知引起的网关停顿。修复 #81936。 (#82333) 感谢 @joshavant。 - 插件/网络搜索:在网关启动时启动配置的 web_search 提供商插件,包括允许列表后的自动启用外部提供商。修复 #82313。 (#82376) 感谢 @joshavant。 - Codex 账户/状态:将仅元数据的速率限制桶视为已返回但为空,使 `/codex status` 和 `/codex account` 报告“无返回”而不是计数幻影限制。 - Codex/Lossless:在原生应用服务器线程上保留 Codex 显式压缩,同时允许 Lossless 通过上下文引擎槽;`openclaw doctor --fix` 现在将遗留的 `compaction.provider: "lossless-claw"` 配置迁移到 `plugins.slots.contextEngine`。 - Cron/诊断:报告具有显式 `payload.model` 覆盖的计划作业,包括提供商命名空间计数和默认模型不匹配,使过时的 cron 模型引脚在认证或计费调查中可见。修复 #82151。感谢 @mgonto。 - Codex 应用服务器:在最后一个非助手当前轮次项完成后,保持短轮次完成空闲监视器武装,使安静的 Codex 应用服务器在外部尝试超时之前释放 OpenClaw 会话通道。修复 #82171。 (#82172) 感谢 @funmerlin。 - Providers/OpenRouter:停止在助手工具调用重放消息中添加空的 DeepSeek V4 `reasoning_content` 占位符,并在后续聊天补全请求之前剥离空的重放工件,使 `openrouter/deepseek/deepseek-v4-pro` 在工具使用后不再失败。修复 #82150。 (#82158) 感谢 @luyao618 和 @Suquir0。 - OpenAI 兼容提供商:在决定是否发送 `stream_options.include_usage` 时尊重流式使用兼容性元数据,同时保持打包的 Volcengine 路由选择加入 Ark 流式使用。参考 #44845。 (#82181) 感谢 @xuruiray。 - Gateway/approvals:将 `turnSourceTo` 视为 `canBridgeNoDeviceChatApprovalFromBackend` 中的可选字段,匹配现有的 `turnSourceAccountId` 和 `turnSourceThreadId` 可选处理。没有收件人概念的频道(webchat、control-ui)在审批快照和重放参数上都将 `turnSourceTo` 保留为 null,因此之前的必需字符串检查拒绝了每个带有 `APPROVAL_CLIENT_MISMATCH` 的后端重放。跨通道重放仍由必需的 `turnSourceChannel` 和 `sessionKey` 检查限制。修复 #82132。 (#82136) 感谢 @ottodeng。 - OC Path:添加 `openclaw path set --dry-run --diff`,使地址化编辑可以在写入前作为统一差异进行审查。 - Cron:在隔离的 cron 模型和投递解析之前加载运行时插件,使外部频道可以被选择用于计划运行。 (#82111) 感谢 @medns。 - Cron:将成功的直接计划投递镜像到解析的目标会话转录本中,同时保留隔离投递感知策略。 (#80786) 感谢 @cavit99。 - Cron:在会话绑定的计划运行压缩后保留轮换的转录本身份,使 `sessionTarget: "current"` 将下一个用户消息保持在同一对话中。修复 #82164。感谢 @weissfl。 - Twitch:保持网关账户运行直到关闭,而不是将成功的监视器启动视为干净的频道退出,防止立即自动重启循环。修复 #60071。 (#81853) 感谢 @edenfunf。 - Agents/auto-reply:当通用代理运行失败回退决定是否发送可见回退文本时,尊重 `agents.defaults.silentReply` 和每个表面的群组静默回复策略。修复 #82060。 (#82086) 感谢 @taozengabc。 - Discord:将频道主题上下文渲染为结构化的不受信任元数据(在回复提示中),并停止重复入站消息主体或暴露原始 `EXTERNAL_UNTRUSTED_CONTENT` 信封。修复 #82168。感谢 @ronan-dandelion-cult。 - Codex 应用服务器:一旦 Codex 接受一个轮次,就武装短空闲监视器,使没有当前轮次进展的已接受轮次在外部模型超时之前释放 OpenClaw 会话通道。修复 #82129。感谢 @Francois3d。 - Agents/replies:当相邻的剥离工具调用 XML 块后 `<function_response>` 工作流输出变得可见时,也将其剥离,关闭 #47444 中剩余的清理器泄漏。感谢 @5toCode。 - Control UI/WebChat:当用户点击可见输入 chrome 时聚焦编辑器,并恢复更大、带标签的桌面编辑器控件,同时保留紧凑的移动点击。修复 #45656。感谢 @BunsDev。 - Discord:默认情况下抑制出站消息上的生成链接嵌入,使代理发送的 URL 保持为纯链接,除非 `channels.discord.suppressEmbeds` 被禁用。 - 系统事件:将所有者降级保留在结构化元数据中,同时将排队的提示文本渲染为纯 `System:` 行,保留最低权限唤醒而不带有提示可见的信任标签。 (#82067) - Gateway/agents:当诊断检测到过时的原生工具调用时,中止活动的嵌入运行,防止嵌套代理会话通过重启恢复陷入死锁。修复 #81976。 (#82369) 感谢 @joshavant。 - Slack:默认关闭出站机器人链接展开,使代理发送的 URL 不再扩展为内联预览,除非启用 `channels.slack.unfurlLinks`。 (#82123) 感谢 @kibi-bsp。 - Slack:当后续相同轮次的工具警告正常投递时,保持最终确定的草稿预览回复可见,而不是清除编辑后的答案。修复 #81903。 (#81979) 感谢 @neeravmakwana。 - Providers/Xiaomi:在多轮工具调用重放中保留 MiMo `reasoning_content`,包括自定义小米兼容代理路由,使后续轮次不再因 `400 Param Incorrect` 失败。修复 #81419。 (#81589) 感谢 @lovelefeng-glitch 和 @jimdawdy-hub。 - Slack/plugins:在压缩代理可见系统事件之前,通过 Slack 交互处理器路由插件拥有的模态 `view_submission` 和 `view_closed` 事件,使插件可以持久化完整的提交表单状态,同时转录本保持紧凑。修复 #82102。感谢 @shannon0430。 - Providers/Xiaomi:将遗留的 MiMo V2 仅推理最终答案提升为可见文本,包括小米兼容代理路由,使 `mimo-v2-pro` 和 `mimo-v2-omni` 回复在答案出现在 `reasoning_content` 中时不再显示为空白。修复 #60261。 (#60304) 感谢 @HiddenPuppy。 - Providers:在 Kimi K2.6/K2 思考和 MiMo V2.6 OpenAI 兼容工具调用后续轮次中保留必需的 `reasoning_content` 重放,同时保持标准的 OpenAI/Qwen 剥离路径不变。修复 #82139。感谢 @yimao。 - 记忆搜索:停止对记忆和 QMD 监视器使用 chokidar 写入稳定性轮询,使大型 Markdown extraPath 树不再积累常规文件描述符;更改的文件现在通过现有的去抖动同步队列稳定下来。修复 #77327 和 #78224。 (#81802) 感谢 @frankekn、@loyur 和 @JanPlessow。 - 消息工具:将暴露给模型的 Discord 频道创建模式字段从 `type` 重命名为 `channelType`,避免 NVIDIA NIM JSON Schema 解析器失败,同时仍然接受遗留的 `type` 工具调用。 (#78920) 感谢 @YashSaliya。 - Feishu:将 CardKit 流式卡片作为已投递增量发送,并重试失败更新,防止重复或丢失流式文本。修复 #82417。 (#82419) 感谢 @hclsys。 - Gateway/Gmail:在热重载之前停止排队的就绪后 Gmail 边车,并中止过期的 Tailscale 设置,使取消的监视器重启无法重写旧公共钩子目标或将中止杀死的命令报告为成功。 (#82395) 感谢 @samzong。