← 返回更新日志

OpenClaw v2026.5.16-beta.4 预发布

2026-05-17 · GitHub 原文
### 变更 - 安全/审计:新增 `security.audit.suppressions` 用于有意接受的审计发现,将已抑制的匹配项从活跃摘要中移除,同时在 JSON 输出中保留并附带活跃抑制通知。(#76949) 感谢 @100menotu001。 - 代理/子代理:将委派任务和子代理完成交接标记为待父级审查,并告知请求代理在调用完成前审查/验证结果。(#78985) 感谢 @100menotu001。 - 提供商/媒体:为共享的 `music_generate` 工具新增 fal 和 OpenRouter 音乐生成提供商,包括 fal MiniMax/ACE/Stable Audio 端点和 OpenRouter Lyria 音频输出。 - 维护工具:在原始 Crabbox AWS 机器上运行 JS 包命令前发出警告,引导维护人员使用 Actions hydration 或 Blacksmith Testbox 进行类似 CI 的验证。 - 控制 UI:在概览卡片和聊天标头中显示提供商配额使用情况,并在错过终端事件后恢复卡顿的聊天进行中状态。(#82647) - Mac 应用远程设置现在可通过 `openclaw-mac configure-remote` 预配置,当配置已完成时跳过引导流程,支持直接 LAN/Tailnet 网关 URL,允许私有同源控制 UI 加载,并在选择 SSH 时拥有 SSH 隧道进程。 - 提供商/xAI:新增 xAI Grok OAuth 登录(适用于 SuperGrok 订阅者),使 `xai/*` 模型及 xAI 媒体/工具提供商无需 `XAI_API_KEY` 即可进行身份验证。 - CLI/定时任务:新增 `openclaw cron run --wait`,支持超时和轮询间隔控制,以及精确的 `cron.runs --run-id` 过滤,使自动化可以阻塞等待单个排队的手动运行。(#81929) 感谢 @ificator。 - 维护工具:通过仓库代理的 AWS 配置路由 Crabbox skill 默认值,将 Blacksmith Testbox 设为显式选择加入而非广泛验证的默认值。 - CLI/引导:已将设置向导和捆绑频道设置流程本地化为英文、简体中文和繁体中文。(#80645) 感谢 @GaosCode。 - 代理/skills:在热网关回合间缓存已水化的 `resolvedSkills`,同时通过脱敏的有效配置键控重用,减少冗余的 skill 快照重建,且不跨越配置限定的 skill 边界。(#81451) 感谢 @solodmd。 - 群聊:新增核心入站事件分类,可选择 `messages.groupChat.unmentionedInbound: "room_event"`,使始终在线的未提及房间对话可作为安静上下文运行,并仅通过消息工具以可见方式发言。(#81317) 感谢 @obviyus。 - Codex/上下文引擎:将线程引导投影周期绑定到 Codex 应用服务器线程,将脱敏的工具结果上下文带入新线程,并在投影状态改变时轮换后端线程。(#82351) 感谢 @jalehman。 - 代理/媒体:在基于会话的聊天中,通过共享的异步媒体生成任务生命周期运行 `image_generate`,包含任务状态、重复保护,以及匹配音乐/视频的消息工具完成交付。 - 网关:新增可选择加入的重启跟踪日志,涵盖重启信号、活跃工作排空、关闭、下一次启动、就绪及内存跨度。(#82396) 感谢 @samzong。 - 网关/性能:将启动基准测试 HTTP 监听计时与完整网关就绪计时分离,并在重启就绪跟踪中添加绑定后插件和 sidecar 诊断。(#82603) 感谢 @samzong。 - QA-Lab:新增确定性本地个人代理场景包,涵盖提醒、线程回复、作用域内存召回、编辑和安全工具跟进。(#78219) 感谢 @iFiras-Max1。 - QA-Lab:为 `openclaw qa suite` 新增 `--pack personal-agent`,使维护人员可通过选择器运行已接受的个人代理场景包。(#82760) 感谢 @iFiras-Max1。 - QA-Lab:新增私有 Codex-vs-Pi 运行时一致性轴,包含运行时配对套件运行、一致性报告和发布检查连接。(#80238) 感谢 @100yenadmin。 - Slack:新增 Slack 助手线程生命周期支持,包含助手视图清单条目、建议提示、线程作用域助手会话以及 Slack 提供的助手上下文。修复 #80787。感谢 @mobybot27。 ### 修复 - 代理/子代理:在必要时通过仅消息工具交接路由群组/频道子代理完成,并避免活跃请求者唤醒失败导致完成交付丢失。修复 #82803。感谢 @galiniliev、@yozakura-ava 和 @moeedahmed。 - 内存核心:启动时扫描持久化内存源会话,将磁盘上的对话记录与索引进行比较,仅将缺失/较新/调整大小的文件标记为脏数据以进行增量同步。修复 #82341。(#82341) 感谢 @giodl73-repo。 - Telegram:当命名账户或绑定与顶层凭据一起添加时,将顶层默认账户保留在账户列表中,保留默认轮询,同时仍允许仅命名配置解析为单个账户。修复 #82794。(#82794) 感谢 @giodl73-repo。 - WhatsApp:对出站图片、GIF 和视频媒体强制执行强制文档交付,使 `forceDocument`/`asDocument` 发送保留原始媒体字节,而非使用压缩后的媒体负载。(#79272) 感谢 @itsuzef。 - 网关/使用情况:在后台刷新大型会话使用情况摘要,并重用持久的对话记录元数据,使 `sessions.usage` 不再阻塞网关请求等待完整对话记录重新扫描。修复 #82773。(#82778) 感谢 @hclsys。 - TUI:当聊天忙碌时恢复已提交的草稿,而非清除它或排队另一个运行。修复 #45326。(#82774) 感谢 @hyspacex。 - 浏览器插件:从 Chrome MCP 诊断中编辑附件详细信息,并保留原始 Chrome 启动错误输出足够长时间,以便在用户报告中显示而不泄露敏感路径。 - 系统提示:在嵌入式语音核心/系统提示框架中,将 MEMORY 指导置于通用的 TTS 提示之上,使代理优先使用内存存储而非语音默认值。修复 #81930。感谢 @giodl73-repo。 - 代理/认证:在缺失 API 密钥错误中包含已检查的凭据来源,使用户可以看到需要修复的环境变量、配置文件或配置路径。修复 #82785。感谢 @loeclos。 - 提供商/GitHub Copilot:使用 sha256 而非弱 32 位哈希对 Responses 重放项 ID 进行哈希,并为同一提供商 Copilot 工具调用 ID 构建唯一标识,使并发工具调用重放不再冲突并拒绝后续回合。 - 代理/重放:在传输转换前规范化格式错误的助手重放内容,同时保留空停止重放修复,使不良提供商历史不再因不可迭代内容而崩溃。修复 #43795。(#82748) 感谢 @IWhatsskill。 - 网关/macOS:将 LaunchAgent stdout 写入 `~/Library/Logs/openclaw`,抑制 stderr,并将 stdin 附加到 `/dev/null`,使 launchd 启动避免符号链接状态目录日志失败和静默模块评估挂起。修复 #40207 和 #46153。感谢 @dhruvkelawala 和 @frankr。 - CLI/configure:让仅模型部分的设置直接进入提供商认证,而非首先询问网关运行位置,从而解除在终端中该无关提示无响应时 OAuth/令牌设置的阻塞。修复 #39223。感谢 @LevityLeads。 - 提供商/Anthropic-messages:在助手重放期间从 `thinking` 块中提取 `reasoning_content`,使通过 An anthropic-messages 传输路由的代理提供商在工具调用后续回合中保留推理上下文。感谢 @Sunnyone2three。 - 代理/GitHub Copilot:在分派前规范化重放的 Responses 工具调用 ID,使具有历史过长工具 ID 的恢复会话能够继续,而非失败于 Copilot 模式验证。(#82750) 感谢 @galiniliev。 - CLI/web:解析提供商作用域的网页搜索/获取 SecretRefs(用于 `infer web ... --provider ...`),同时不触及无关的插件密钥。修复 #82621。感谢 @leno23。 - 提供商/Anthropic Vertex:从包本地 `dist/` 解析已安装提供商公共表面,在插件外部化后恢复 `anthropic-vertex/*` 模型调用。修复 #82781。感谢 @0L1v3DaD。 - 网关/执行批准:将路径形式的允许列表、安全二进制信任、skill 自动允许、始终允许持久化以及批准审计元数据绑定到可执行文件的真实路径,使符号链接的二进制文件在重新目标后无法保留批准。修复 #45595。感谢 @jasonftl。 - Mac 应用:让菜单网关/会话错误文本能够跨几行换行,并在菜单打开时停止重建动态上下文/网关菜单行,减少闪烁。 - Mac 应用:使设备配对批准表单更友好,包含简洁的 Mac/设备副本、缩短的标识符、友好的作用域标签,并将批准设为主要操作。 - 提供商/Qwen:对 `qwen-chat-template` 负载遵循会话思考级别,使 `/think off` 禁用嵌套 llama.cpp 聊天模板思考控制。修复 #82768。感谢 @bfox55。 - 飞书/wiki:在创建 Lark 客户端前拒绝数字形式的 wiki 空间 ID,并将看似数字的 ID 记录为带引号的不透明字符串,防止知识库调用中的 JavaScript 精度损失。修复 #45301。(#82769) 感谢 @hyspacex。 - 控制 UI:将语音设置简化为语音、模型和灵敏度默认值,将提供商、传输、精确 VAD 和计时控制置于高级设置中。 - Telegram:让通配符提及模式匹配无说明的群组照片,使仅媒体的群组消息在群组被配置为响应所有消息时能够到达代理。修复 #44833。(#82756) 感谢 @IWhatsskill。 - 网关/配对:拒绝来自非本地代理路径的伪造环回控制 UI 来源,并在 Tailscale 绑定模式下将移动配对设置指向用户使用 Tailscale Serve/Funnel 而非明文 tailnet WebSocket。 - Telegram/网关:仅在主线程分派后持久化隔离轮询偏移量,并保留网关调用者作用域以用于 Telegram 消息操作,修复已消费但未路由的轮询更新和递归 CLI 发送作用域批准。修复 #82277。(#82705) 感谢 @udaymanish6。 - 内存核心:中止超时的嵌入提供商调用,使远程嵌入 HTTP 请求在内存查询或索引超时后不再继续运行。修复 #82732。感谢 @adityarya24。 - 通道/流预览:抑制被拒绝的后台草稿流刷新,使预览发送失败不会作为致命的未处理拒绝浮出水面。修复 #82712。(#82713) 感谢 @coygeek。 - Codex/应用服务器:保持共享的原生应用服务器客户端按代理运行时密钥隔离,使启动一个代理不再关闭另一个代理的活跃 Codex 回合。修复 #82758。感谢 @PashaGanson。 - 提供商/OpenAI Codex:在捆绑的 Codex 目录中包含基础 `gpt-5.5` 和 `gpt-5.4` 推理元数据,使 `/think xhigh` 对这些模型仍然可用。修复 #82744。 - 提供商/OpenAI Codex:将原生钩子中继保留为最终的 Codex 应用服务器线程配置补丁,使即使较低优先级的配置禁用钩子,钩子支持的批准仍保持启用。感谢 @solomonneas。 - 提供商/MiniMax:在插件清单中声明 CN 端点认证别名,使 `minimax-cn` 和 `minimax-portal-cn` 重用正确的基准认证配置文件,而非在 401 后回退到无关模型。修复 #63823。感谢 @kamusis。 - 密钥/审计:将 `$VAR` 认证配置文件值视为环境 SecretRef,并停止将环境引用凭据报告为明文,包括混合了 `keyRef` 加环境引用配置文件状态的情况。修复 #53998。感谢 @schirloc 和 @artwalker。 - 代理/模型回退:当活跃的 OpenAI Codex 运行时报告相同的规范 OpenAI 模型时,抑制回退通知。 - 代理/音乐生成:移除模型控制的请求超时,将内部提供商请求默认设置为五分钟,并将配置的超时保持在 120 秒的下限。 - 代理/媒体生成:当未期望生成媒体时,停止将已交付的失败摘要记录为缺失的消息工具交付。 - 代理/会话:在相同会话通道中,将手动用户回合优先于排队的定时任务和维护工作,使可见的后续工作不再等待后台运行。修复 #82764。(#82765) 感谢 @galiniliev。 - 代理/编辑工具:在解析编辑恢复目标时遵循 `file_path` 和相关路径别名,使写入后错误不再在文件实际更改后表面化虚假的编辑失败。修复 #81909。感谢 @giodl73-repo。 - QQBot:仅将显式真值 `QQBOT_DEBUG` 视为启用调试日志,使类似 `0` 的假值不再暴露调试输出。修复 #82644。(#82697) 感谢 @leno23。 - 代理/会话状态:针对实时运行会话解析隐式无参数状态查找,使 `/think` 更改报告当前思考级别而非过时沙箱状态。修复 #82669。(#82696) 感谢 @leno23。 - Discord:在默认编码工具配置文件下,为仅消息工具的频道回复保持进度草稿可见。修复 #82747。感谢 @eliranwong。 - Discord:使未提及的房间事件历史保持可见,直到可见的 Discord 发送成功,使安静的上下文在消息工具交付前不会消失。(#82573) 感谢 @obviyus。 - CLI/设置:将模型/认证提供商选择器排序为 OpenAI、Anthropic、xAI、Google,然后按字母顺序排列其余提供商。 - 诊断/使用情况/语音通话:将显式零和非有限限制视为空结果,并拒绝无效的语音通话数字 CLI 标志。修复 #82646、#82650、#82651 和 #82653。(#82679) 感谢 @leno23。 - CLI/config:为引导式 `openclaw config` 流程避免冗余的启动配置/插件检查,并在源检出 CLI 工件构建或加载时显示进度。 - 配置/Mac 应用:在内核配置验证中接受 `gateway.remote.remotePort`,使 Mac SSH 远程设置与 CLI 保持兼容。 - 网关/诊断:新增可选择加入的关键内存压力稳定性快照,包含网关日志、V8 堆、cgroup、活跃资源以及脱敏的大会话文件证据。修复 #82518。 - Doctor/网关:避免仅因环境值提及旧检出路径而将无关的 macOS LaunchAgent 视为旧版网关。 - 网关/心跳:在目标回复操作排队或活跃时推迟心跳运行,防止心跳提示在流式传输通道开始前介入 WebChat 响应。修复 #82722。感谢 @Andy-Xie-1145。 - CLI/设置:在现有配置摘要中将原始网关配置键折叠为友好的 `Model` 和 `Gateway` 行。 - CLI/config:显示简洁的人类可读配置写入输出,包含缩进备份路径,而非默认打印校验和沉重的覆盖审计详情。 - CLI/docs:调用规范的 lowercase docs MCP 搜索工具,并显示 MCP 错误而非返回空搜索结果。修复 #82702。(#82704) 感谢 @hclsys。 - QA-Lab:新增网关日志哨兵,用于插件钩子失败、Codex 应用服务器停顿/超时、定时任务允许列表漂移、实时配额阻塞以及直接回复自消息对话记录,使测试框架在自健康回归时失败。(#80323) 感谢 @100yenadmin。 - QA-Lab:在捕获运行时一致性单元时忽略仅心跳的操作对话记录,使后台检查无法替换场景回复。(#80323) 感谢 @100yenadmin。 - QA-Lab:将线程内存一致性运行固定到 `memory-core`,保持捆绑插件解析对 QA 命令启用,并重试瞬态会话存储锁读取。(#72045) 感谢 @WuKongAI-CMU。 - QA-Lab/qa-channel:保持模拟内存排名、入站媒体注释和已打开文件真实路径检查对模拟 OpenAI qa-channel 运行稳定。(#66826) 感谢 @gumadeiras。 - 网关/执行批准:等待已接受的异步批准后续运行,而非在重试使用不同 nonce 键时直接回退发送重复完成。修复 #82711。(#82717) 感谢 @udaymanish6。 - 代理/子代理:将已完成的子代理交接标记为待父级审查,使请求代理验证结果并在报告完成前继续必要的后续工作。(#82724) 感谢 @100menotu001。 - QA-Lab:验证从浏览器存储加载的 Capture 已保存视图,使格式错误的本地状态无法污染 Capture 检查器滤镜或布局控件。(#77722) 感谢 @AsaZhou923。 - 代理/性能:在本地 CLI 回合、模型目录规范化、认证查找和工具能力检查间重用已准备的插件清单元数据,恢复插件密集型安装的快速预提供商启动。感谢 @shakkernerd。 - CLI/config:为 `openclaw config unset` 新增 `--dry-run` 支持,包含 `--json` 输出和与 `config set`/`config patch` 干运行处理一致的允许执行验证。(#81895) 感谢 @giodl73-repo。 - CLI/infer:在本地提供商支持的能力运行前解析命令 SecretRefs,使网页搜索/获取及其他本地 infer 命令能够使用插件作用域的凭据引用。修复 #82621。(#82798) 感谢 @joshavant。 - 内存核心:在启动后重试禁用的做梦定时任务清理,直到定时任务可用,使持久化管理的做梦任务在重启后被移除。修复 #82383。(#82389) 感谢 @neeravmakwana。 - 提供商/xAI:将已退役的 Grok 3、Grok 4 Fast、Grok 4.1 Fast 和 Grok Code 名称从模型选择器中移除,同时保留现有配置的兼容性解析。 - 提供商/xAI:在捆绑的图像生成提供商和文档中,将已退役的 `grok-imagine-image-pro` 图像模型替换为 `grok-imagine-image-quality`。(#81399) 感谢 @KateWilkins。 - 提供商/OAuth:让浏览器托管的身份提供商页面读取成功的 localhost 回调响应,防止 xAI Grok OAuth 在 OpenClaw 完成登录后显示虚假的连接失败。 - 网关/安全:拒绝格式错误的 HTTP 和 WebSocket 请求目标,使用现有的认证失败响应,而非让无效的 URL 解析导致网关崩溃。修复 GHSA-6hc3-f4rg-377m。 - 浏览器/CDP:编辑包含凭据的 Chrome MCP 和托管 Chrome 启动诊断,并在将 `NO_PROXY` 视为已覆盖本地 CDP 代理绕过前要求精确的环回条目。 - 网关/诊断:编辑包含凭据的网关目标 URL 和客户端诊断,同时保留原始连接 URL 以供程序化使用,使连接失败日志不再暴露嵌入的令牌。 - 网关/认证:当未配置远程令牌时,将 `OPENCLAW_GATEWAY_TOKEN` 作为远程交互式后备方案,保持远程 TUI 设置与文档化的认证优先级一致。 - 提供商/xAI:当 xAI 报告正在进行的工作为 `pending` 时继续轮询视频生成,使 Grok 视频请求不再在最终 `done` 响应前失败。(#82610) 感谢 @Manzojunior。 - 日志:在返回行给读取作用域客户端前,从 `logs.tail` 输出中编辑原始的 Basic 认证和命名的安全标头。修复 #66832。感谢 @Magicray1217。 - CLI/gateway:当 `--json` 被健康、网关健康和设备列表命令请求时,为网关传输关闭/超时失败输出结构化的 JSON。修复 #79108。感谢 @TurboTheTurtle。 - Telegram:通过新的 `resolveSessionTarget` 通道钩子规范化公告群组目标,使计划的公告与入站回合使用相同的 Telegram 会话对话注册表一致解析。修复 #81229。感谢 @giodl73-repo。 - QA/RTT:让 `pnpm rtt` 租用 Convex 支持的 Telegram 凭据,同时保留 RTT 样本计数、样本超时和结果统计在 RTT 测试框架路径上。 - Discord:将延迟的网关 `identify` 重试绑定到原始套接字生成,使重新连接后触发的重试不会针对新套接字进行 identify。修复 #82225。感谢 @giodl73-repo。 - ACP/控制平面:当代理配置更改时刷新缓存的运行时句柄,使 ACP 会话在 `agents.defaults` 编辑后停止使用过时的运行时。修复 #82237。感谢 @giodl73-repo。 - 网关/会话:将会话数据查找按代理 ID 限定作用域,使多代理网关状态不会跨配置的代理泄露会话记录。(#81386) 感谢 @pgondhi987。 - 网关/重启:在强制重启前将活跃的主会话标记为重启中止,使启动恢复能够恢复中断的回合,而非让它们作为运行状态滞留。修复 #82433。(#82772) 感谢 @joshavant。 - 代理/媒体:要求生成的音乐/视频完成代理使用消息工具进行可见交付,并停止将生成的图像附件合并到仅消息工具的源回复镜像中,避免直接的回退发布可能重复模型已发送的媒体。 - 代理/媒体:在内部完成事件上接受生成的媒体附件,并将交付丢失失败报告为错误,使完成的背景音乐/视频任务在提供商成功后不会消失。 - Matrix/批准:当频道批准处理程序在交付中途停止时释放正在进行的反应绑定,防止重启后出现过时的批准目标。修复 #82485。(#82482) 感谢 @Feelw00。 - Matrix/E2EE:停止请求 MSC4222 `state_after` 同步响应,使具有不完整 state-after 数据的 homeserver 不会使新加密的房间缺少出站房间加密器。修复 #82515。感谢 @nickdecooman。 - TUI:当自动回退解析在回合中途换入不同模型时实时更新显示的模型,使状态行反映实际处理运行的模型。修复 #82296。感谢 @giodl73-repo。 - 网关/会话:当提供商使用情况遥测缺失时,从本地/OpenAI 兼容的对话记录中估算上下文使用情况,使状态不再对真实的本地模型会话显示空使用情况。修复 #73990。(#82317) 感谢 @giodl73-repo。 - 更新/安装程序:对 OpenClaw 管理的包安装覆盖 npm `min-release-age` 隔离,使 `openclaw update`、插件更新和托管的安装程序脚本能够立即安装请求的最新版本。 - 代理/会话:跨过时的使用情况更新保留紧凑后新鲜的令牌快照,防止每条消息后重复的自动压缩。修复 #82576。(#82578) 感谢 @njuboy11。 - 代理/回复:在 LLM 边界保留活跃的入站回复上下文,使 Discord 引用消息的回合不会从过时的会话历史中回答。修复 #82608。(#82801) 感谢 @joshavant。 - 代理/OpenAI Responses:为没有详情信息的 `response.failed` 事件记录脱敏的诊断信息,同时保留失败的响应 ID,使操作员能够关联提供商端故障。修复 #82558。 - 代理/OpenRouter:从后续请求中剥离不可重放的 Anthropic/xAI 推理来源标签,防止中毒的思考签名破坏第二回合。修复 #82335。(#82380) 感谢 @hclsys。 - 提供商/xAI:仅为 Grok 4.3 发送可配置的推理努力,保留 xAI 默认的低推理,同时为 Grok 4.20 推理模型省略不支持的控制。(#81227) 感谢 @jason-allen-oneal。 - 图像生成:将 Google、OpenRouter 和 xAI 托管提供商默认超时提高到 180 秒,使缓慢的托管图像请求有更多时间完成。(#75337) - 代理/认证:在通用令牌屏蔽前,针对内存中的、尝试过的和重新加载的凭据编辑 OAuth 刷新失败原因,同时确保失败的 ACP 分派清理关闭已初始化的运行时。 - Google/Gemini CLI OAuth:为 `google-gemini-cli` 新增提供商拥有的刷新支持,使过期的 Gemini CLI 令牌在 OpenClaw 中刷新,而非回退到通用的未知提供商路径。修复 #42541。感谢 @jason-allen-oneal。 - 代理/Anthropic 传输:从兼容的思考块中重放 `reasoning_content`,用于 Xiaomi/MiMo 风格 Anthropic Messages 路由,防止后续回合丢失所需的推理上下文。修复 #81261。感谢 @Sunnyone2three。 - Telegram:按账户和令牌指纹缓存成功的启动机器人身份最多 24 小时,使重启可以在 Telegram API 慢速期间跳过冗余的 `getMe` 探测,而不会永久固定重命名的机器人。参考 #82525。 - Telegram:当延迟的 TTS 音频到达时,保持流式文本回复在原位,将音频作为后续消息发送而非删除预览。修复 #82570。(#82820) 感谢 @joshavant。 - 网关/会话:在重新创建死掉的主会话行时丢弃过时的元数据,使替换会话不会继承旧的标签或对话记录路径。 - Codex 应用服务器:将原生上下文压缩完成事件标记为成功,防止在成功的 Codex 管理压缩后出现虚假的“压缩未完成”通知。修复 #82470。(#81593) 感谢 @Kyzcreig。 - Codex 应用服务器:在当前回合批准、用户输入、动态工具和通知取得进展时保持长时间运行的回合活跃,并将该进展带入外部运行超时。(#82601) 感谢 @100yenadmin。 - 网关/频道:在启动诊断阶段之外移交跟踪的频道账户启动,使长时间运行的频道任务不会将存活警告固定在频道启动上。参考 #82398。 - 网关/重启:在网关启动循环仍在返回其服务器句柄时排队重启和关闭信号,使启动时的重启不会在更新波动期间被丢弃。(#82660) 感谢 @samzong。 - 网关/重启:将操作员重启意图原因带入 macOS LaunchAgent 重启跟踪,使级联诊断标识 `gateway.restart` 而非裸的 SIGTERM。 - GitHub Copilot:通过仅 GitHub 策略的插件 SSRF 保护路由设备登录请求。 - 群组/频道回复:当代理错过消息工具时,将首选消息工具的最终回复保持私有,并在网关调试日志中记录受抑制的负载元数据,用于更安静的诊断。 - 网关/WebChat:在嵌入图像前,通过配置的视觉能力 `imageModel` 计划路由图像附件,并在运行时重试中携带该图像模型回退链。(#82524) 感谢 @frankekn。 - macOS 应用:在原生 WebKit 窗口中打开 Dashboard,带有标准 macOS 交通灯控件,默认保持 Dock 图标可见,并重用应用已连接的网关认证进行自动控制 UI 登录。 - WebChat:手动 `/compact` 运行时通过将会话操作事件流式传输到订阅的控制 UI 客户端来显示进度。修复 #82407。感谢 @Conan-Scott。 - Codex 应用服务器:将规范的 OpenAI Codex 应用服务器归属重写限制为本地对话记录和轨迹记录,将运行时/工具路由留在选定的 OpenAI 模型元数据上,使 OpenAI API 密钥备份配置文件保留其计费路径。 - Codex 应用服务器:从动态工具暴露中隐藏原生工具搜索控制工具,同时保留消息工具。 - Android/聊天:通过保留渲染 Markdown 中的 Compose URL 注释,使聊天消息中的裸 URL 和 Markdown URL 可点击。修复 #82187。(#82392) 感谢 @neeravmakwana。 - 插件/doctor:将遗留的顶层插件 `tools` 声明迁移到 `contracts.tools`,使 `openclaw doctor --fix` 修复本地插件以匹配清单工具合同。(#81112) 感谢 @100yenadmin。 - Slack:引导代理使用上下文中的稳定 `<@USER_ID>` 提及令牌而非纯 `@name` 文本,使用户提及能够正确链接和通知。修复 #82090。(#82152) 感谢 @neeravmakwana。 - 认证:通过认证配置文件锁序列化提供商登录写入,用于 OpenAI Codex、Anthropic、Cloudflare AI Gateway、GitHub Copilot 和 z.ai,保留更新写入语义,使活动的网关无法用过期的内存快照覆盖刚刷新的 OAuth 凭据。 - 认证/Codex:移除对 `oauthRef` sidecar 支持 OAuth 配置文件的运行时支持,并添加 doctor 修复,将受影响的 Codex 配置文件迁移回内联的 `auth-profiles.json` 凭据。(#82777) 感谢 @joshavant。 - Slack:将 DM 线程回复保留在主直接消息会话上,而非路由到不可见的线程作用域会话。参考 #82390。(#82418) 感谢 @kagura-agent。 - 认证/macOS:避免在钥匙串中自动创建 OAuth 配置文件主密钥,回退到文件备份的密钥,使无头代理不会触发钥匙串提示。 - Codex 应用服务器:当 `turn/completed` 缺失时释放原始助手完成,同时将评论/状态项保留为进度,防止完成的 Codex 运行挂起直到超时。修复 #82343。(#82403) 感谢 @IWhatsskill。 - Codex 应用服务器:在工具后原始助手完成后保持有界终端守卫,使缺失的 `turn/completed` 事件快速失败,而非让嵌入的运行卡住。修复 #82775。(#82816) 感谢 @joshavant。 - 代理/会话:在原子替换成功后移除由 `repairSessionFileIfNeeded` 写入的临时 `*.bak-<pid>-<ts>` 备份,使持久格式错误的 JSONL 行导致的卡顿会话不再每次修复调用积累一个快照。修复 #80960。(#80969) 感谢 @100yenadmin。合作作者 @tynamite。 - CLI/status:当没有频道或会话时,显示简单的空状态消息,而非空的频道和会话表。 - CLI/dashboard:在交出 Dashboard URL 前探测网关就绪状态,当网关停止时提示启动或安装托管服务,并打印恢复命令而非打开死掉的浏览器标签页。 - CLI/dashboard:将网关 `device identity required` 探测视为 Dashboard 监听器可达的证据,使 `openclaw dashboard` 仍能打开控制 UI。 - CLI:在不太可能正确渲染的终端上隐藏装饰性的启动和状态表情符号,保留语义消息和身份表情符号完好。 - CLI/gateway:当 `openclaw dashboard` 从剥离的桌面 Shell(如 VNC 终端)启动网关时,恢复 Linux 用户 systemd 总线环境。 - 网关/WebSocket:将预期的启动 `1013 gateway starting` 重试关闭记录为调试而非警告,同时为意外的连接前失败保留 WARN。修复 #76361。(#82457) 感谢 @IWhatsskill。 - 提供商/Xiaomi:从 MiMo 工具模式中剥离合成的空数组 `items`,同时保留类型化数组项,避免严格 OpenAI 兼容模式拒绝。 - Telegram:在进度模式工具草稿后发送对话记录备份的完整最终答案,当调度程序最终负载是省略号截断的快照时。修复 #82409。感谢 @PashaGanson。 - 提供商/Ollama:对标记为非推理的模型省略真值的原生 `think` 负载,同时保留支持的推理模型和显式 `think: false`。(#82445) 感谢 @leno23。 - 更新/频道:通过包交换 doctor 和核心后插件修复保留更新前的频道配置,使外部化的频道升级不会丢弃配置的聊天频道。修复 #82533。感谢 @imbaig。 - CLI/上下文引擎:为 CLI 回合引导并最终确定非遗留上下文引擎,同时保留对话记录快照和延迟维护所有权。(#81869) 感谢 @sahilsatralkar。 - Telegram:通过重启重放持久化轮询更新,使排队的同主题消息按顺序恢复,而非在网关重启后丢失上下文。(#82256) 感谢 @VACInc。 - 网关/Gmail:在关闭前中止正在进行的 Gmail 监视器启动和热重新加载重启,使重新加载无法在网关关闭后生成 `gog serve`。感谢 @frankekn。 - 代理/Codex:当 OpenAI 隐式的 Codex 测试框架偏好无法找到注册的 Codex 插件时,回退到嵌入式 PI 运行器,防止 OpenAI 兼容网关请求因未注册的测试框架错误而失败。修复 #82437。 - 代理/OpenAI:对显式的 OpenAI PI 运行,将 `openai-codex:*` 条目置于 API 密钥备份之前,并接受 `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。 - 代理/沙箱:在容器创建期间遵循具有凭据外观名称的显式 Docker 沙箱环境变量,并在有效环境策略更改时重新创建受影响的沙箱容器。修复 #82695。(#82763) 感谢 @joshavant。 - 插件:接受已弃用的 `api.on("deactivate")` 注册作为 `gateway_stop` 的旧兼容别名,使外部插件清理处理程序在网关关闭时运行,同时作者获得迁移指导。 - 插件:从打包根目录解析捆绑的入口、dist-runtime、包状态和公共工件路径,使捆绑的插件探测和硬链接的公共表面不再回退到源文件或在重启期间失败。修复 #78462。修复 #75797。参考 #76865。感谢 @ginishuh 和 @ymebosma。 - 媒体:当字节嗅探为通用容器时忽略图像 MIME 和文件名提示,使错误标记为图像的 zip/octet-stream 负载在暂存时不会变成本地图像媒体或保留图像文件扩展名。 - 更新/doctor:避免为拒绝 `groupAllowFrom` 的频道模式物化该字段,使包交换 doctor 修复不会在外部化 Slack 配置上失败。 - 网关/媒体:防止图像文件名覆盖通用非图像字节嗅探,使错误标记为图像的 zip/octet-stream 负载在成为内联图像附件前被卸载或拒绝。 - 插件/网页搜索:将过时的可选提供商安装降级为警告,使网关和 doctor 修复路径在启动提供商选择后继续运行。参考 #82313。感谢 @crackmac。 - Telegram/网关:将针对性的 Telegram `/stop@bot` 消息路由到控制通道,无需缓存的机器人元数据,并在原始/规范会话别名间匹配网关停止请求。(#82298) 感谢 @VACInc。 - MS Teams/媒体:在内嵌 `data:image/*` 附件字节暂存前嗅探,跳过实际上不是图像的负载。 - WebChat/媒体:在保留本地音频回复路径用于显示前要求受信任的本地媒体来源,使不受信任的看似音频的路径通过正常暂存和读取策略检查。 - WebChat:信任块流式回复(包括 ACP 分派的尾部)上的本地 Auto-TTS 音频,使合成的浏览器音频得以渲染而非被静默丢弃。修复 #82628。(#82701) 感谢 @leno23。 - 代理/工具媒体:将生成的工具附件合并到最终回复负载时保留受信任的本地媒体来源,使受信任的音频/媒体在出站显示规范化中幸存。 - Anthropic/Claude CLI:在重用本地 Claude CLI 认证时写入模型作用域的 `claude-cli` 运行时策略,使升级后的 Telegram 和 Dashboard 网关回合继续使用 CLI 后端,而非回退到 Anthropic API 计费。修复 #82344。感谢 @amknight。 - 更新:让包交换 `doctor --fix` 在插件模式仍在收敛时持久化核心配置修复,防止外部化频道配置上的更新失败。 - 更新:将插件验证绕过带入配置变更写入前读取,使包更新 doctor 修复可以在外部化插件模式收敛时完成。 - 更新/doctor:在顶层 `$include` 配置写入路径上保留插件验证绕过,使包修复可以更新包含的插件配置文件,而无需将其扁平化到根配置中。 - 代理/子代理:当生命周期清理失败时发出警告并继续完成公告清理,防止已结束的子代理运行变成静默幽灵。修复 #82306。感谢 @SebTardif。 - Telegram:让授权的文本 `/stop` 命令在排队的代理工作前使用快速中止路径,使活跃回合立即停止,而非在回合结束后处理中止;外来机器人 `/stop@otherbot` 提及现在停留在常规主题通道上,而非路由到我们的控制通道。修复 #82162。感谢 @civiltox。 - 会话:丢弃具有无效会话 ID 的持久化条目,并在水化会话运行时状态前剥离格式错误的对话记录文件元数据。 - 认证/设备:在返回或保留令牌条目前规范化格式错误的持久化设备认证令牌元数据。 - 配对:在批准有效的频道配对码前跳过格式错误的持久化待处理配对请求。 - 承诺:在匹配待处理的后续操作前从持久化承诺中剥离格式错误的可选提醒作用域元数据。 - 配置持久化:规范化格式错误的认证配置文件凭据字段/状态,跳过 JSON 有效的垃圾对话记录检查点行,并让 `openclaw doctor --fix` 移除无法修复的定时任务作业行。 - 定时任务:在内存中跳过具有格式错误的计划或负载形状的持久化作业行,将存储留给 `openclaw doctor --fix` 而非将其水化为运行时状态。 - 定时任务:将遗留的字符串计划和空白系统事件作业保留为运行时修复/跳过处理可用,而非作为格式错误的持久化行丢弃。 - 定时任务:在持久化作业前拒绝空计划的主/隔离负载,保持运行时存储与格式错误行强化兼容。 - 任务持久化:从任务和任务流 SQLite sidecar 中丢弃格式错误的数组/标量请求者来源 JSON,而非将其作为交付元数据恢复。 - 代理/超时:澄清模型空闲超时错误和文档,显示提供商 `timeoutSeconds` 受整个代理/运行超时上限限制。 - 代理/OpenAI 流:在处理突发的 Completions 和 Responses 块时协作式让步,保持中止、通道存活计时器和启动心跳在嘈杂模型输出下保持响应。参考 #82462。 - 媒体/图像:在准备图像请求时避免广泛的模型/插件发现,防止可能导致 Telegram 轮询阻塞的 Windows 事件循环停顿。修复 #82338。(#82799) 感谢 @joshavant。 - 发布工具:对齐已发布的启动器 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 Responses:将 `input_tokens - cached_tokens` 钳位为零,并从 input + output + cached 组件重构 `totalTokens`,使 Responses API 流在提供商少报 `input_tokens`(相对于 `cached_tokens`)时报告一致的用量。 - 代理:将在适配器捕获的工具执行失败标记为嵌入式 Pi 会话中的错误工具结果,使模型可以重试可恢复的编辑失败,而非看到成功的工具结果。修复 #81546。(#81564) 感谢 @najef1979-code 和 @MonkeyLeeT。 - 插件:在安装、发现和后更新负载检查中拒绝格式错误的 `package.json` `openclaw.extensions` 元数据,而非静默丢弃无效条目。 - 插件:拒绝其 `package.json` 解析到插件根之外的包元数据记录,而非信任持久化或重建的注册表快照。 - 插件:忽略格式错误的持久化包频道/安装元数据,而非使目录重建崩溃或泄露无效安装提示。 - 插件发布:拒绝会从 npm 插件 tarball 中省略广告的包本地运行时条目的包 `files` 否定。 - 媒体/文件:在信任声明的 MIME 标头前嗅探 `input_file` 字节,在它们成为代理可见文本前拒绝伪造的图像或 zip 负载。 - 插件/依赖:清理过时的托管根 `openclaw` 所有权元数据,而不删除链接的活跃主机包,防止插件安装降级 npm 全局主机。修复 #79462。感谢 @lisandromachado。 - 网关/更新:将关闭钩子运行器导入保持在稳定的 dist 入口上,并发送遗留块别名,使包交换不会使运行的网关在缺失关闭块时搁浅。修复 #81819。感谢 @najef1979-code。 - 配置持久化:忽略格式错误的数组/标量认证配置文件、定时任务作业状态和会话存储条目,而非将其水化为数字配置文件 ID、崩溃的定时任务行或无效的会话记录。 - 配置持久化:在加载时剥离格式错误的待定最终交付会话字段,使重放/恢复路径跳过中毒的回复元数据,而非因原始对象崩溃。 - 配置持久化:在加载时剥离格式错误的插件扩展状态和提升的会话槽所有权,使损坏的会话行不会将中毒的插件元数据泄露到重放/投影路径。 - 网关/会话:在会话投影期间忽略格式错误的压缩检查点行,使损坏的存储不会使会话列表/描述响应崩溃或显示虚假的检查点计数。 - 网关/会话:当导入的树形对话记录引用缺失或遗留的父行时,保持可达的对话记录历史,防止部分导入后会话历史读取变空。 - 轨迹导出:报告不完整的对话记录父链并停止循环分支遍历,使格式错误的导入不会挂起 `/export-trajectory`。 - 会话重放:在静默会话重置期间跳过格式错误的用户/助手形状的对话记录行,而非将无效条目复制到新对话记录中。 - 备份验证:用稳定的错误报告格式错误的存档清单,而非泄露原始 JSON 解析器详情。 - 会话导出:报告跳过的格式错误对话记录 JSONL 行,而非从导出的 HTML 存档中静默省略它们。 - 提供商:拒绝格式错误的成功 Runway、BytePlus 和 Ollama 嵌入响应,使用提供商拥有的错误而非原始解析器/类型失败、静默错误向量或长时间虚假轮询。 - 提供商/图像:拒绝格式错误的成功 OpenAI 兼容、OpenAI、Google、fal 和 OpenRouter 图像响应,使用提供商拥有的错误而非原始形状失败、静默无效 base64 跳过或空图像结果。 - 提供商/视频:拒绝格式错误的成功 xAI、OpenRouter 和 fal 视频创建、轮询和结果响应,使用提供商拥有的错误而非原始解析器失败或长时间虚假轮询。 - 提供商/视频:让选定模型的能力覆盖清除继承的 `providerOptions`,使回退跳过明确不接受提供商特定选项的模型,而非转发不支持的旋钮。 - TTS/提供商:在路由模型覆盖指令时遵循首选提供商别名,使别名选择的语音提供商接收未限定的 `[[tts:*]]` 覆盖。 - 提供商/音频:拒绝格式错误的成功 OpenAI 兼容、ElevenLabs 和 Deepgram 语音响应,使用提供商拥有的错误而非原始解析器失败、形状错误的转录或视为音频的 JSON/文本正文。 - 提供商/嵌入:拒绝格式错误的成功 OpenAI 兼容、Google Gemini 和 Amazon Bedrock 嵌入响应,而非静默返回空或强制转换的向量。 - 提供商/目录:拒绝格式错误的成功 LM Studio、GitHub Copilot、DeepInfra、Vercel AI Gateway 和 Kilocode 模型列表响应,使用提供商拥有的错误而非原始解析器/类型失败或静默回退目录。 - 提供商/轮询:拒绝数组、null 或标量的成功操作状态响应,使用提供商拥有的格式错误 JSON 错误,而非等待超时。 - ACPX/Codex:在包装器崩溃后启动时收割插件本地 Codex ACP 适配器孤儿,同时将直接适配器命令排除在启动租约注入之外。修复 #82364。(#82459) 感谢 @joshavant。 - 代理/模型回退:定期探测配置的主模型以获取自动固定的回退会话,宣布回退/恢复转换,并在恢复时清除固定,防止会话无限期停留在回退模型上。修复 #82544。感谢 @crpol。 - Telegram:通过渲染回退文本和内联按钮发送仅展示负载,而非将其视为空。修复 #82404。(#82449) 感谢 @joshavant。 - 提供商/Kimi:在启用思考时保留 Kimi Coding `reasoning_content` 重放并回填助手工具调用占位符,使 `kimi-for-coding` 后续工具回合在先前工具使用后不再失败。修复 #82161。感谢 @amknight。 - 提供商/搜索工具:拒绝格式错误的成功 xAI、Gemini 和 Kimi 网页/代码搜索响应,使用提供商拥有的错误而非静默的 `No response` 负载或无根基的回退状态。 - 轨迹导出:在 `manifest.json` 中跳过并报告格式错误的会话/运行时 JSONL 行,而非让形状错误的会话行使支持包导出崩溃。 - 语音通话:持久化被拒绝的入站通话重放密钥,使重复的运营商 webhook 重试在网关重启后仍被忽略。 - 配置/doctor:在 `openclaw doctor --fix` 期间将启用了回退的频道 `allowFrom` 条目复制到显式的 `groupAllowFrom` 允许列表中,保留当前群组访问权限,而不添加运行时回退转换标志。 - 配置/doctor:在 `openclaw doctor --fix` 期间,从受信任的目录元数据替换仅源版本的官方 Brave 和 Slack 插件安装,解除升级后外部化库存插件恢复的阻塞。(#82425) 感谢 @joshavant。 - 配置/内存:对于选择官方外部 `memory-lancedb` 槽位但插件尚未安装的配置,发出警告而非拒绝,并附带显式的无持久化内存启动警告和安装提示。修复 #82428。(#82438) 感谢 @giodl73-repo。 - 代理/引导:在工作区设置清理失败后忽略过时完成的根 `BOOTSTRAP.md` 上下文,防止频道代理回合将其视为目录。(#82463) 感谢 @joshavant。 - 更新/doctor:当配置的 OpenAI 代理模型需要 Codex 运行时,在 `openclaw doctor --fix` 期间重新启用 Codex 插件,防止升级后的配置因未注册的 Codex 测试框架而失败。修复 #82368。(#82502) 感谢 @joshavant。 - Configure:显示一个 OpenAI 提供商条目,包含 ChatGPT/Codex 登录和 API 密钥选择,并将浏览过的 Codex 模型保留在保存的 `/model` 选择器允许列表中。 - 代理/模型回退:在延迟配置重新加载时保留自动回退链,当会话回退来源存在但 `modelOverrideSource` 缺失时。修复 #81982。感谢 @joshavant。 - 钩子:将有界网关生命周期钩子等待预算提高到关闭 5 秒和预重启 10 秒,给短重启通知处理程序时间在关闭继续前完成。(#82273) 感谢 @bryanbaer。 - 插件发布:在 npm 插件发布计划中要求外部包兼容性元数据,在包发布前匹配 ClawHub 包合同。 - 代理/OpenAI 兼容:在嵌入的 OpenAI 完成运行中遵循每个模型的 `max_completion_tokens`/`max_tokens` 参数,使高令牌 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。 - 模型选择器:为官方 OpenAI 路由首先显示有效的 Codex 运行时,同时保持 Pi 作为替代可用,并保持 Pi 优先的自定义 OpenAI 兼容提供商。修复 #82269。感谢 @rendrag-git。 - 代理/自动回复:将 `NO_REPLY` 提示指导限制为自动群组/频道回复,移除旧版静默回复重写,并抑制意外的直接聊天静默令牌,而非交付回退文本。修复 #82254。感谢 @absol89。 - Telegram:当最终回调仅携带省略号截断的快照时,保留更长的部分流预览,防止可见答案和对话记录镜像被短预览替换。修复 #82239。感谢 @crash2kx。 - Telegram/活跃内存:对直接消息回合通过 Telegram 提供商运行阻塞内存召回,即使钩子上下文携带原始聊天 ID,防止嵌入的召回针对无效数字频道启动。修复 #82177。感谢 @cslash-zz。 - 控制 UI/WebChat:防止乐观图像消息嵌入大型内联 `data:` 预览,并保留仅图像的用户回合在聊天历史中,避免发送图像附件时的浏览器堆栈溢出。修复 #82182。感谢 @ExploreSheep。 - 代理/媒体:为生成的音乐和视频完成交接保留仅消息工具交付,使群组/频道完成不会在不发布生成的附件时结束。 - Telegram:在轮询重新连接确认新的 `getUpdates` 活动后排空排队的出站交付,使过时套接字和网络恢复不会留下失败的回复。修复 #50040。参考 #82175。感谢 @dmitriiforpost-commits 和 @shellyrocklobster。 - 网关/模型认证:当通过网关控制平面移除已保存的认证时中止活跃提供商运行,刷新实时运行时认证快照,并向客户端显示 `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。 - 代理:从交付的回复中剥离带有属性或自闭合语法的 Gemini/Gemma `<final>` 标签,包括严格的最终标签流强制。修复 #65867。感谢 @grizdum。 - macOS/更新:当 `openclaw update` 从旧版 `ai.openclaw.update.*` LaunchAgent 启动时解除其武装,防止 KeepAlive 重新启动循环反复重启网关并重放更新延续。修复 #82167。感谢 @DougButdorf。 - 代理/重放:从提供商重放和待定最终交付恢复中剥离内部运行时上下文元数据和 `NO_REPLY` 哨兵,使重启和心跳恢复不会将控制文本反馈给模型。修复 #76629。感谢 @fuyizheng3120、@bryan-chx 和 @cael-dandelion-cult。 - 代理/重放:在去重嵌入式助手间隙填充时跳过格式错误的对话记录尾行,防止截断的 JSONL 在重放恢复中重复最终助手回复。 - LINE:在代理处理前确认签名的 webhook 事件,使缓慢的模型回复不会导致 LINE `request_timeout` 交付失败。修复 #65375。感谢 @myericho。 - LINE:阻止定时任务恢复从规范会话密钥中推断小写的 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` 报告 `none returned` 而非计数幻影限制。 - Codex/Lossless:将 Codex 显式压缩保留在原生的应用服务器线程上,同时允许 Lossless 通过上下文引擎槽位;`openclaw doctor --fix` 现在将旧版 `compaction.provider: "lossless-claw"` 配置迁移到 `plugins.slots.contextEngine`。 - 定时任务/doctor:报告具有显式 `payload.model` 覆盖的已调度作业,包括提供商命名空间计数和默认模型不匹配,使过时的定时任务模型固定在认证或计费调查期间可见。修复 #82151。感谢 @mgonto。 - Codex 应用服务器:在最后一个非助手当前回合项完成后保持短回合完成空闲看门狗武装,使安静的 Codex 应用服务器在外部尝试超时前释放 OpenClaw 会话通道。修复 #82171。(#82172) 感谢 @funmerlin。 - 提供商/OpenRouter:停止向助手工具调用重放消息添加空的 DeepSeek V4 `reasoning_content` 占位符,并在后续 Chat Completions 请求前剥离空的重放工件,使 `openrouter/deepseek/deepseek-v4-pro` 在工具使用后不再失败。修复 #82150。(#82158) 感谢 @luyao618 和 @Suquir0。 - OpenAI 兼容提供商:在决定是否发送 `stream_options.include_usage` 时遵循流使用兼容性元数据,同时使捆绑的 Volcengine 路由选择加入 Ark 流使用。参考 #44845。(#82181) 感谢 @xuruiray。 - 网关/批准:将 `turnSourceTo` 视为 `canBridgeNoDeviceChatApprovalFromBackend` 中的可选字段,匹配现有的 `turnSourceAccountId` 和 `turnSourceThreadId` 可选处理。没有接收者概念的频道(webchat、control-ui)在批准快照和重放参数上都留下 `turnSourceTo` 为空,因此之前的必需字符串检查拒绝了每个后端重放并返回 `APPROVAL_CLIENT_MISMATCH`。跨频道重放仍受必需的 `turnSourceChannel` 和 `sessionKey` 检查限制。修复 #82132。(#82136) 感谢 @ottodeng。 - OC Path:新增 `openclaw path set --dry-run --diff`,使地址化编辑可以在写入前作为统一差异进行审查。 - 定时任务:在隔离的定时任务模型和交付解析前加载运行时插件,使外部频道可以被选择用于调度运行。(#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 的剩余清理器泄漏。感谢 @5toCode。 - 控制 UI/WebChat:当用户点击可见的输入 chrome 时聚焦编辑器,并恢复更大、带标签的桌面编辑器控件,同时保持紧凑的移动点击。修复 #45656。感谢 @BunsDev。 - Discord:默认在出站消息上抑制生成的链接嵌入,使代理发送的 URL 保持为纯链接,除非禁用了 `channels.discord.suppressEmbeds`。 - 系统事件:将所有者降级保留在结构化元数据中,同时将排队的提示文本渲染为纯 `System:` 行,保留最小权限唤醒而不在提示中可见的信任标签。(#82067) - 网关/代理:当诊断检测到过时的原生工具调用时中止活跃的嵌入式运行,防止嵌套代理会话在重启恢复中保持死锁。修复 #81976。(#82369) 感谢 @joshavant。 - Slack:默认关闭出站机器人链接展开,使代理发送的 URL 不再展开为内联预览,除非启用了 `channels.slack.unfurlLinks`。(#82123) 感谢 @kibi-bsp。 - Slack:当后续同一回合的工具警告正常交付时,保持最终确定的草稿预览回复可见,而非清除编辑过的答案。修复 #81903。(#81979) 感谢 @neeravmakwana。 - 提供商/Xiaomi:在多回合工具调用重放中保留 MiMo `reasoning_content`,包括自定义 Xiaomi 兼容代理路由,使后续回合不再因 `400 Param Incorrect` 失败。修复 #81419。(#81589) 感谢 @lovelefeng-glitch 和 @jimdawdy-hub。 - Slack/插件:在压缩代理可见系统事件之前,通过 Slack 交互处理程序路由插件拥有的模态 `view_submission` 和 `view_closed` 事件,使插件可以在对话记录保持紧凑的同时持久化完整的提交表单状态。修复 #82102。感谢 @shannon0430。 - 提供商/Xiaomi:将旧版 MiMo V2 仅推理的最终答案提升为可见文本,包括 Xiaomi 兼容代理路由,使 `mimo-v2-pro` 和 `mimo-v2-omni` 回复在答案出现在 `reasoning_content` 中时不再显示为空白。修复 #60261。(#60304) 感谢 @HiddenPuppy。 - 提供商:在保持股票 OpenAI/Qwen 剥离路径完整的同时,为 Kimi K2.6/K2 思考和 MiMo V2.6 OpenAI 兼容工具调用后续回合保留必需的 `reasoning_content` 重放。修复 #82139。感谢 @yimao。 - 内存搜索:停止为内存和 QMD 监视器使用 chokidar 写入稳定性轮询,使大型 Markdown extraPath 树不再积累常规文件描述符;现在更改的文件通过现有的去抖同步队列稳定下来。修复 #77327 和 #78224。(#81802) 感谢 @frankekn、@loyur 和 @JanPlessow。 - 消息工具:将对模型暴露的 Discord 频道创建模式字段从 `type` 重命名为 `channelType`,避免 NVIDIA NIM JSON Schema 解析器失败,同时仍然接受旧版 `type` 工具调用。(#78920) 感谢 @YashSaliya。 - 飞书:将 CardKit 流式卡片作为已交付的增量发送,并重试失败的更新,防止重复或丢失的流式文本。修复 #82417。(#82419) 感谢 @hclsys。 - WhatsApp:为出站目标接受以 `group:` 为前缀的群组 JID,使 `whatsapp:group:<jid>@g.us` 解析为规范的群组 JID。感谢 @mcaxtr。 - 网关/Gmail:在热重新加载前停止排队的就绪后 Gmail sidecar,并中止过时的 Tailscale 设置,使取消的监视器重启无法重写旧的公共钩子目标或将中止终止的命令报告为成功。(#82395) 感谢 @samzong。