← 返回更新日志

OpenClaw v2026.5.12-beta.2 预发布

2026-05-12 · GitHub 原文
### 修复 - Codex 框架:当 OpenAI 认证信息存储在代理的 auth-profile 存储中而非环境变量时,确保 `image_generate` 等基于 auth-profile 的媒体工具保持可用。 - WhatsApp/安装:允许在 pnpm 11 下使用 Baileys 固定的 libsignal git 子依赖,以便源安装和本地检查能够顺利完成。 - Codex 框架:当 OpenAI 认证信息存储在代理的 auth-profile 存储中而非环境变量时,确保 `image_generate` 等基于 auth-profile 的媒体工具保持可用。 - 修复(memory-wiki):[AI] 摄入数据需要管理员权限范围。(#80897) 感谢 @pgondhi987。 - memory-wiki:[AI] Obsidian 搜索需要写入权限范围。(#80904) 感谢 @pgondhi987。 - 构建:跳过从构建条目中排除的捆绑插件的复制元数据,防止更新/状态重建广告缺失的 QQ Bot 运行时文件。(#80925) - 控制界面/会话:在会话选择器下拉菜单中,使用视觉前缀 `└─ ` 将子代理会话嵌套在其父会话下,使父子关系更清晰。修复 #77628。(#78623) 感谢 @chinar-amrutkar。 - 自动回复:当配置的模型后端失败且回退机制未产生可见回复时,显示可见的错误提示,同时保留有意的静默回合和仅带副作用的交付。(#80917) 感谢 @dutifulbob。 - 代理/执行:跳过子代理会话执行完成时的冗余心跳唤醒,防止在父会话上产生虚假的 LLM 调用。修复 #66748。(#66749) 感谢 @ggzeng。 - 提供商流:保持 OpenAI 兼容的 SSE 和 JSON 回退流在分块传输时正常排空,并以有界的第一个事件诊断信息使 Azure Responses 流失败,而不是卡住。引用 #80926。(#80927) 感谢 @galiniliev 和 @CaptainTimon。 - 代理:将带有支持请求 ID 的通用提供商内部错误重写为用户友好的临时错误提示。(#49401) 感谢 @y471823206。 ### 变更 - 网关/OpenAI HTTP:在处理传入的 `/v1/chat/completions` 请求时,尊重 `max_completion_tokens` 和 `max_tokens`,使客户端提供的令牌上限通过 `streamParams.maxTokens` 传递至上游提供商,当两者同时发送时 `max_completion_tokens` 优先。感谢 @Lellansin。 - 模型/OpenAI CLI 认证:使 `openclaw models auth login --provider openai` 默认启动 ChatGPT/Codex 账户登录流程,而 `--method api-key` 仍作为显式的 OpenAI API 密钥配置路径。 - Google/Gemini:在 SDK OAuth 认证结果默认配置补丁中规范化已弃用的 Gemini 3 Pro Preview ID,以便辅助构建的提供商认证流程为 Gemini 3.1 测试输出 `google/gemini-3.1-pro-preview`。 - Google/Gemini:在写入配置前,规范化直接 `openclaw models auth login --set-default` 提供商认证流程返回的已弃用 Gemini 3 Pro Preview ID,使 Gemini 测试目标指向 `google/gemini-3.1-pro-preview`。 - Google/Gemini:在仅重新应用代理默认值的 API 密钥引导期间,规范化提供商目录行中的已弃用 Gemini 3 Pro Preview ID,使输出的配置继续测试 `google/gemini-3.1-pro-preview`。 - 文档/子代理:在子代理和配置参考文档中记录 `agents.defaults.subagents.announceTimeoutMs`。(#75509) 感谢 @akrimm702。 - 定时任务:新增直接 `cron.get`、`openclaw cron get <id>` 以及代理工具 `get` 支持,用于按 ID 检查单个已存储的定时任务。(#75117) 感谢 @samzong。 - 代理/工具:新增基于规范频道范围发送者键的逐发送者工具策略,使操作员能够按请求者身份在全局、代理、群组、核心、捆绑和插件工具层面限制危险工具。(#66933) 感谢 @JerranC。 - ACP:通过 ACP 会话列表和会话信息快照暴露网关会话血缘元数据,使客户端无需私有网关侧信道即可渲染子代理图。(#73458) 感谢 @samzong。 - 频道/iMessage:新增 `openclaw channels status --channel <name>` 过滤功能,并记录从 BlueBubbles 切换到 imsg 的路径,使操作员无需同时启动两个频道监控即可探测 iMessage。(#80706) 感谢 @omarshahine。 - CI:在插件预发布中添加非阻塞的 `plugin-inspector-advisory` 工件,以便发布流程捕获捆绑插件兼容性分类,且不改变阻塞门控。 - 运行时/Fly:通过运行时环境变量将 Fly Machines 识别为容器环境,使网关绑定和 Bonjour 默认值与远程容器启动相匹配。(#80209) 感谢 @liorb-mountapps。 - 提供商/fal:将 GPT Image 2 和 Nano Banana 2 的参考图像编辑请求路由至带有 `image_urls` 数组的 `/edit` 端点,使用 `aspect_ratio` 和 `resolution` 参数强制执行 NB2 编辑几何约束,将 Fal 编辑模式的输入图像上限提升至 GPT Image 2 为 10、Nano Banana 2 为 14,并允许在编辑模式下使用宽高比提示。(#77295) 感谢 @leoge007。 - 控制界面:当应用模块从未注册时,显示纯 HTML 恢复面板,为空白仪表板页面提供重试路径和浏览器扩展故障排除链接。修复 #44107。感谢 @BunsDev。 - 文档:将宽泛的工具导航重命名为“Capabilities(能力)”,保留自动化和代理协调作为独立章节,并使工具概览专注于工具、技能和插件。https://docs.openclaw.ai/tools - 构建:为 Promise、TypeScript 和运行时潜在陷阱检查启用了更多低变更率的 oxlint 规则。 - 构建:为聚焦、禁用、条件、钩子、匹配器和期望值等潜在风险启用了更严格的 Vitest lint 规则。 - 构建:在共享格式化器配置中固定 oxfmt 默认值,以确保跨版本升级时格式化行为保持稳定。 - TypeScript:对隐式返回、副作用导入、重写及未使用的生产代码启用了更严格的编译器检查。 - 日志记录:新增针对模型传输、负载、SSE 和代码模式的诊断信息,并支持脱敏 URL 处理。 - 智能体:允许将 `session.agentToAgent.maxPingPongTurns` 最高设为 20,同时保持默认值为 5,以支持更长的智能体间回复链。修复 #52382。(#52400) 感谢 @thirumaleshp。 - 智能体:新增每个智能体的 `tools.message.crossContext` 覆盖配置,使沙盒/公开智能体能够将消息发送限制在当前对话中,而无需更改全局机器人策略。 - 智能体:新增每个智能体的 `tools.message.actions.allow` 覆盖配置,使沙盒/公开智能体能够暴露并强制实施仅发送消息的工具。 - 智能体:在紧凑命令进度预览中省略沙盒工作区标记,同时保持内部沙盒诊断信息不变。 - 智能体:将进度草稿命令预览行的宽度增加 50%,以便 Discord 内联工具更新能保留更多有用的命令上下文。 - Codex 应用服务器:在受限轮次中断后终止超时的应用服务器客户端,以防止 Discord 智能体在尝试超时时重用持续占用 CPU 的 Codex 进程。 - Codex 应用服务器:将已迁移的原生插件破坏性操作策略默认设为启用,同时保留明确的全局和单插件 false 覆盖配置。 - 构建:将工作区包管理升级至 pnpm 11,并使 Docker、安装、更新和发布工作流保持与 pnpm 11 配置接口兼容。(#79414) 感谢 @altaywtf。 - 构建:使 Telegram QA 工作流和 git 源码安装与 pnpm 11 工作区构建白名单兼容。(#80588) 感谢 @altaywtf。 - 模型:新增提供商级别的 `localService` 启动功能,用于在 OpenAI 兼容请求前按需启动本地模型服务器,包括一次性模型探测。 - 智能体:精简默认系统提示词指导和仅发送消息的工具模式,以减少提示词 token 消耗,同时保留 GPT-5 人格指导。 - 上下文:新增 `/context map` 命令,用于发送当前会话上下文贡献者的树状图(treemap)图像。(#79867) - Slack:为机器人 `chat.postMessage` 回复新增 `unfurlLinks` 和 `unfurlMedia` 配置(含单账户覆盖),以便在不更改工作区全局设置的情况下禁用 Slack 链接和媒体预览。修复 #48435。(#80145) 感谢 @esegev1 和 @HemantSudarshan。 - Slack:为文本和 Block Kit 线程回复新增显式的 `replyBroadcast` 支持,使智能体可选择加入 Slack 的父频道 `reply_broadcast` 行为。(#64365) 感谢 @tony88331。 - Slack:在入站提示词上下文中保留提及目标/源元数据,使智能体能够区分对机器人的直接提及与提及他人的隐式线程唤醒。修复 #79025。(#75356) 感谢 @tmimmanuel。 - Slack:对原生 DM 频道 ID 的出站交付镜像路由进行规范化,使其指向对等用户会话,从而避免对 `D...` 目标调用 `message.send` 时将同一个 Slack DM 线程拆分为频道会话。修复 #80091。(#80111) 感谢 @bek91。 - 插件 SDK:弃用存在至少一个月且无捆绑扩展生产导入的公共子路径,保留传统的 barrel/test/zod 子路径包导出以向后兼容,并在 SDK 表面报告中同时追踪这两类。 - 插件 SDK:弃用目前仅由一两个捆绑插件所有者使用的公共子路径,保持其可导入状态,同时引导新插件代码转向聚焦的共享 SDK 接口或插件自有 API。 - 插件 SDK:在将 Chutes、GitHub Copilot 和 OpenAI Codex 的认证流程移回提供商自有模块后,移除所有者专用的 `provider-auth-login` 公共子路径。 - 插件 SDK:在将捆绑调用方移回提供商自有模块后,从公共导出中移除提供商特定的模型、流和 xAI 兼容性辅助函数。 - 插件 SDK:向原生插件工具工厂暴露运行时提供的活动模型元数据,用于诊断和插件自有策略决策。修复 #77857。感谢 @jamiezigelbaum。 - QA/Mantis:新增 Telegram 实时 PR 证据自动化功能,支持 Convex 租赁凭据、Crabbox 对话记录捕获、动态 GIF 预览及内联 PR 评论。 - QA/Mantis:新增 Telegram 桌面端场景构建器,支持租赁 Crabbox、安装原生 Telegram Desktop、使用租赁机器人凭据配置 OpenClaw Telegram 网关,并记录 VNC 截图/视频产物。 - Discord/语音:新增实时语音诊断功能,涵盖发言轮次、播放重置、插话检测及音频截断分析。 - 语音对话:新增 `talk.realtime.instructions`,使操作员可在保留 OpenClaw 内置智能体咨询指导的同时,追加实时语音风格指令。(#79081) 感谢 @VACInc。 - Discord/语音:默认测试和源码安装将忽略可选的原生 `@discordjs/opus` 构建,转而使用纯 JS 的 `opusscript` 解码器,从而避免在非专用语音性能环境中进行缓慢的原生插件编译。 - Discord/语音:为实时语音性能环境新增可选的原生 `@discordjs/opus` 安装脚本和解码器偏好设置,且不会为无关的 Docker 或测试环境强制进行原生插件构建。 - Discord/语音:新增 `voice.allowedChannels` 配置,将语音加入和机器人语音状态移动限制在指定频道内,未设置时保持开放语音行为。 - 网关/技能:新增可选的私有技能档案上传安装路径,受 `skills.install.allowUploadedArchives` 控制,使受信任的网关客户端仅在操作员显式启用代码安装接口时,才能暂存并安装基于 zip 的技能。(#74430) 感谢 @samzong。 - Codex 应用服务器:为 harness 线程启用 Codex 原生仅代码模式,使延迟执行的 OpenClaw 动态工具通过 Codex 自身的可搜索代码执行界面运行,而非 PI 风格的包装器。 - 依赖项:刷新工作区锁定版本与补丁目标,包括 ACPX `@agentclientprotocol/claude-agent-acp` `0.33.1`、Codex ACP `0.14.0`、Baileys `7.0.0-rc10`、Google GenAI `2.0.1`、OpenAI `6.37.0`、AWS SDK `3.1045.0`、Kysely `0.29.0`、Tlon 技能 `0.3.6`、Aimock `1.19.5` 和 tsdown `0.22.0`。 - 依赖项:刷新 Anthropic SDK、Smithy 共享 ini 加载、Playwright、YAML、Aimock、TypeScript 原生预览、Vitest、Oxlint/Oxfmt、Vite 和 pnpm 11.1.0 的工作区锁定版本。 - 依赖项:对捆绑包中的非 peer 直接依赖规范进行硬锁定,并添加变更检查守卫,确保运行时安装解析维护者测试过的确切版本。 - 依赖项:将嵌入的 Pi 包移至 `@earendil-works` 命名空间,刷新 Twitch Twurple 包,并将 `@openclaw/fs-safe` 从 GitHub 发布锁定改为已发布的 npm 包。 - 构建:将 Testbox 变更检查委托路由至 Crabbox,并移除 OpenClaw 专用的 Blacksmith Testbox 辅助脚本。 - 智能体/压缩:在嵌入式压缩和回合后运行时上下文中保留作用域内的后台 exec/process 会话引用,且不暴露来自不相关作用域的会话。修复 #79284。(#79307) 感谢 @TurboTheTurtle。 - 智能体/进程:指示智能体在发送交互式输入前使用 `process log` 检查后台会话,并使用 `log`/`poll` 返回的 `waitingForInput`/`stdinWritable` 提示。 - CLI/新手引导:改进 setup、onboarding、configure 和 channel 命令的路径指引,使终端流程能解释下一步的有用命令,而非依赖简短的设置标签。 - 智能体/Codex:移除可配置的 Codex 动态工具配置文件,使 Codex 应用服务器始终拥有 workspace、edit、patch、exec、process 和 plan 工具,同时 OpenClaw 集成工具保持可用。 - macOS 应用:将 Peekaboo 桥接依赖更新至 Peekaboo 3.0.0。 - 依赖项:刷新工作区锁定版本,并将 WhatsApp 插件从 `@whiskeysockets/baileys` 移至 `baileys`,同时保留 `7.0.0-rc10` 运行时。 - 插件 SDK:在分组会话命名空间下新增捆绑插件的会话操作、`sendSessionAttachment`,以及基于 Cron 的 `scheduleSessionTurn`/标签清理。替代 #75578/#75581/#75588 及 #73384/#74483 的部分内容。感谢 @100yenadmin。 - 插件 SDK/媒体理解:新增 `extractStructuredWithModel(...)` 以及可选的提供程序端 `extractStructured(...)` 扩展点,使受信任插件能够通过 Codex 等提供程序拥有的运行时,运行受限的图像优先结构化提取,并可选补充文本上下文。 - 执行审批:新增 `tools.exec.commandHighlighting`,以便全局或按智能体启用审批提示中由解析器生成的命令高亮。(#79348) 感谢 @jesse-merhi。 - Codex 应用服务器:将原生 Codex 子智能体生成生命周期事件同步至任务注册表,使应用服务器子智能体无需依赖转录文本即可在任务/状态界面中显示。(#79512) 感谢 @mbelinky。 ### 修复 - CLI/媒体:默认使用全块字符渲染终端二维码,以便内置的 `qrcode` 终端渲染器在紧凑半块模式下不生成过于密集的 ANSI 最后一行,从而避免在某些终端中导致扫描失败。修复 #77820。感谢 @KrasimirKralev。 - Agent/压缩:从排队运行的工作区而非运行器进程的当前工作目录读取压缩后的 `AGENTS.md` 刷新上下文,以便 CLI 支持的后续轮次在压缩后能重新注入正确的工作区启动规则。修复 #70541。(#75532) 感谢 @vyctorbrzezowski。 - Agent/读取工具:将超出 EOF 的正向偏移量视为空范围,而不是抛出上游读取错误,这样过期的分页游标不再导致工具调用崩溃,同时无关的读取失败仍会正常报错。修复 #62466。(#75536) 感谢 @vyctorbrzezowski。 - Google/Gemini:规范化 Google API 密钥初始化模型白名单和回退机制中遗留的已停用 Gemini 3 Pro Preview 引用,使安装生成的配置继续测试 `google/gemini-3.1-pro-preview` 而非 `google/gemini-3-pro-preview`。 - Google/Gemini:在解析精确配置的代理提供商引用时,规范化已停用的嵌套 Gemini 3 Pro Preview ID,使 `kilocode/google/gemini-3-pro-preview` 解析为 `kilocode/google/gemini-3.1-pro-preview` 以进行 Gemini 3.1 测试。 - CLI:从清理后的输出字段中剥离通用的 OSC 终端转义负载,防止剪贴板/标题转义体泄漏到承诺表和其他终端安全文本中。感谢 @shakkernerd。 - Codex 应用服务器:通过稳定的连接器 ID 匹配由连接器支持的插件审批请求,使已启用的破坏性操作不再降级为仅基于显示名称的拒绝。 - 构建:使用 Node 原生类型剥离替换选定的构建工具 `tsx` 预加载,使 Node 26 构建路径不再发出 `DEP0205` 模块加载器弃用警告。(#78584) 感谢 @keshavbotagent。 - 媒体生成:当工具调用省略 `timeoutMs` 时,尊重配置的音乐和视频生成超时设置,使其与图像生成行为保持一致。(#80687) - CLI/更新/状态:将 beta 通道插件回退和模型定价刷新失败标记为警告,使混合 beta/最新插件组保持可见,同时避免核心更新或 Gateway 连通性显示为失败。修复 #80689。感谢 @BKF-Gitty。 - 医生/插件:在 `doctor --fix` 期间重新链接托管的 npm 插件 `openclaw` 的 peer 依赖,同时拒绝跟随插件包外的包本地 `node_modules` 符号链接。(#77412) 感谢 @TheCrazyLex。 - iMessage:将传入的 tapbacks(快捷回复)路由为反应系统事件而非普通消息,默认通知机器人撰写的消息,同时允许 `reactionNotifications: "off" | "own" | "all"` 覆盖。修复 #60274;引用 #39031 和 #39322。感谢 @hyperclaw。 - 控制 UI/性能:将节点轮询范围限制在活动节点标签页,对陈旧会话列表同步进行防抖,并限制聊天侧会话刷新,使长时间运行的仪表板避免后台重载抖动。感谢 @BunsDev。 - 插件/通道:将到达旧版插件加载器的捆绑通道入口文件解释为运行时加载器不匹配,而非通用的缺失注册失败。感谢 @chinar-amrutkar。 - 插件/会话结束:当网关进程停止时,为所有仍处于活跃状态的会话触发带类型 `session_end` 插件钩子,原因标记为 `shutdown`(或预期重启时为 `restart`)。此前 SIGTERM/SIGINT/重启路径会直接关闭网关而不清理活跃会话,导致下游 `session_end` 插件(如 claude-mem)在重启间累积幽灵行。新的关闭终结器会清空由 `session_start` 填充、并被 replace/reset/delete/compaction 发射器遗忘的内存跟踪器,确保已完成的会话绝不会重复触发。清空操作限制在 2 秒总预算内,防止慢速插件阻塞进程退出。向 `PluginHookSessionEndReason` 新增 `"shutdown"` 和 `"restart"`。修复 #57790。感谢 @pandadev66。 - Codex 应用服务器:当 OpenClaw 沙箱处于活动状态时,将 Codex 代码模式沙箱限制为工作区写入权限,防止 Docker 网关套接字访问演变为危险的全权限 Codex 操作。 - TUI:网关断开连接后,在 Ctrl+C/SIGINT 时立即退出并限制关闭排空过程,防止终端清理导致会话挂起。修复 #75379。(#75381) 感谢 @udaymanish6。 - Matrix:默认将出站 Markdown 表格转为无序列表而非围栏代码块。修复 #78990。(#80890) 感谢 @kinjitakabe。 - Bonjour/网关:将活跃的 ciao 探测和新的名称冲突重命名视为进行中,使 mDNS 看门狗在重试前等待探测收敛,防止在 Windows、WSL 及其他多播不友好主机上出现快速重新广播循环。(#74778) 引用 #74242。感谢 @fuller-stack-dev。 - 提供商/MiniMax:当消息转换将一轮对话过滤为空负载时,发送最小的 Anthropic 兼容用户回退内容,使 MiniMax M2.7 在重度工具会话后不再返回 `chat content is empty`。修复 #74589。感谢 @neeravmakwana 和 @DerekEXS。 - 工具/媒体:在预构建内置媒体生成和 PDF 工具时,保留仅 `tools.alsoAllow` 策略的隐式全允许语义,使配置的媒体工具生效,而无需强制设置 `tools.allow: ["*", ...]`。修复 #77841。感谢 @trialanderrorstudios。 - Codex/Telegram:将代码模式工具进度与最终回复分离,使用原生工具标签渲染桥接工具调用,并修复持久化缺失的工具结果,以实现更安全的后续轮次。(#80663) 感谢 @jalehman。 - 内存/搜索:当全局安装缺少元 `sqlite-vec` 包时,直接加载平台特定的 `sqlite-vec-<platform>-<arch>` 变体,使向量召回在 `npm install -g openclaw@latest` 升级期间(其中 optionalDependencies 仅在磁盘上保留平台变体)继续正常工作。修复 #77838。感谢 @corevibe555 和 @Simon2256928。 - Cron:在任务注册表中保持长时间手动 cron 运行处于活动状态直至完成,防止在持久化恢复协调前出现瞬态的 `lost`(丢失)标记。修复 #78233。(#78243) 感谢 @Feelw00。 - Doctor/GitHub CLI:当 GitHub 技能可用但 `gh` 认证位于与代理进程不同的操作者 HOME 目录下时,显示 `GH_CONFIG_DIR` 提示,且不会对已禁用或过滤的技能发出警告。修复 #78063。(#78095) 感谢 @tmimmanuel。 - Gateway:在投递仍在进行时对并发的 `send`、`poll` 和 `message.action` 请求进行去重,防止同一幂等键产生重复的出站工作。(#68341) 感谢 @thesomewhatyou。 - Cron:通过强制 `target: "last"` 时丢弃继承的显式心跳目标,使主会话的 `systemEvent` 心跳唤醒在直接和排队唤醒路径上均保持在绑定的会话路由上。修复 #73900。感谢 @richardmqq。 - Telegram:尊重视频媒体的强制文档投递设置,使 `--force-document` 将 MP4 作为文档而非类型化视频发送。修复 #80389。(#80405) 感谢 @jbetala7。 - Gateway:在缺少 APNs 注册时清除推测性节点唤醒状态,防止未注册或拼写错误的节点 ID 保留唤醒限流条目。修复 #68847。(#68848) 感谢 @Feelw00。 - Auto-reply:防止延迟跟进队列排空终结器删除 `/stop` 之后注册的替换队列,避免即时跟进消息被孤立。修复 #68838。(#68839) 感谢 @Feelw00。 - Feishu:将手动设置 App ID/App Secret 设为默认渠道绑定路径,同时保留扫描二维码创建作为可选的最佳努力流程,并记录国内飞书移动客户端不响应二维码时的手动回退方案。修复 #80591。感谢 @wei-wei-zhao。 - Memory:通过压缩最旧的自动提升部分(同时保留用户撰写的笔记)来限制向 `MEMORY.md` 写入记忆提升内容,使活跃内存保持在引导预算之下。修复 #73691。(#74088) 感谢 @YB0y。 - Telegram:在原生 `/status` 和 `/think` 菜单中显示已解析的思考默认值,同时保留显式的会话覆盖设置。(#80341) 感谢 @VACInc。 - Channels:将选定的渠道注册表查找结果与活动回退快照进行缓存,以便在活跃注册表切换后,固定为空的注册表能刷新原生命令和别名路由。(#80333) 感谢 @samzong。 - Codex app-server:复用原生 Codex CLI 的 OAuth 用于隔离的 app-server 测试环境登录、刷新和应用库存缓存键,使经 ChatGPT 认证的 Codex 运行不再回退到未认证的 OpenAI API 调用。(#79877) 感谢 @jeffjhunter。 - Gateway:将 `sessions.resolve` 的 sessionId 和标签存储加载范围限定在请求的代理上,避免为范围查找解析大型无关代理存储。修复 #51264。(#79474) 感谢 @samzong。 - Gateway:在符合条件的 WebSocket 和节点订阅者之间共享序列化流事件信封,同时保留每个客户端的序列号。(#80299) 感谢 @samzong。 - Gateway:整合重复的 `openclaw doctor` 服务配置面板,同时保留被拒绝修复的 `--force` 提示。修复 #80287。(#78688) 感谢 @YB0y。 - Browser:在浏览器状态中报告 Chrome MCP 现有会话页面的就绪状态,同时确保状态探测不超过客户端超时时间。修复 #80268。(#80280) 感谢 @ai-hpc。 - WhatsApp:将打开阶段的 Baileys 428 connectionClosed 路由至 WhatsApp 重连策略,并保持打开后 428 关闭的可重试性,使瞬态设置套接字关闭能使用 WhatsApp 诊断信息进行重试,而不是直接抛出裸 `channel exited` 错误。修复 #75736;缓解 #77443。感谢 @dataCenter430。 - Agents:为嵌入式运行禁用 Pi 的默认文件系统资源发现功能,同时保持 OpenClaw 内联扩展工厂处于活动状态,避免在首次 WhatsApp 触发的代理启动期间发生 Windows 事件循环停滞。修复 #77443。感谢 @dataCenter430。 - Providers/self-hosted:从 `/props.default_generation_settings.n_ctx` 读取模型范围的 llama.cpp 运行时上下文,同时保留顶层 `n_ctx` 作为回退选项,使会话预算能反映加载的上下文窗口。修复 #73664。(#74057) 感谢 @brokemac79。 - Memory:在读取 Markdown 文件之前,拒绝配置的外部记忆路径中包含的符号链接目录组件。(#80331) 感谢 @samzong。 - Sessions/transcripts:使用共享流式辅助函数(`streamSessionTranscriptLines` 和 `streamSessionTranscriptLinesReverse`)替换整个文件的 `readFile` 扫描,用于幂等查找、最新/尾部助手文本读取、投递镜像去重和压缩分叉加载,使长时间运行的会话不再将完整转录文件加载到内存中。正向扫描在受限的 `createReadStream` 上使用 `readline`;反向扫描从文件末尾读取受限块,并按最新优先顺序解码完整的 JSONL 行,不设固定尾部上限。合成 200 MiB 转录文件测试:峰值 RSS 增量从 +252 MiB 降至 +27 MiB,同时保留对畸形行的容忍度和幂等键返回语义。修复 #54296。感谢 @jack-stormentswe。 - Browser/CDP:从原始 CDP 和持久化 Playwright 标签页选择中过滤掉浏览器内部目标,使导航能打开真实的页面标签页。修复 #55734。感谢 @Demine4。 - WhatsApp:在处理新的入站 DM 之前,将热重载的 `dmPolicy` 和 `allowFrom` 设置应用到活跃的 Web 监听器。修复 #80538。感谢 @Ampaskopi129。 - Plugins:使 `openclaw doctor --fix` 能够修复本地状态迁移后包入口点因未能通过包目录边界验证而失败的托管插件安装。修复 #80592。感谢 @wei-wei-zhao。 - Voice-call:将语音发起的执行审批跟进恢复为内部非投递轮次,而不是将其作为 `unknown channel: voice` 拒绝。修复 #80540。感谢 @patrickmch。 - Control UI:在活跃聊天运行期间点击停止时保留编辑器草稿,防止移动端意外丢失提示词。修复 #80586。感谢 @KCALLC。 - 基础设施/重试:当可以遵循提示时,保持抖动重试延迟不低于服务器提供的 Retry-After 下限。修复 #68541。(#68543) 感谢 @Feelw00。 - 文档:明确 `/model provider/model` 是精确的会话路由,而重复的裸模型 ID 仅在非会话覆盖路径上使用配置的降级顺序。引用 #80562。感谢 @gaodaabao。 - 对持久化的类密钥负载进行脱敏处理 [AI]。(#79006) 感谢 @pgondhi987。 - 智能体:在紧凑工具摘要中将 `.openclaw/sandboxes` 执行工作目录标记为沙箱运行,而非显示完整路径。 - OpenAI Codex:展示浏览器 OAuth 和设备码登录失败情况,而非将登录失败视为空的认证成功结果。引用 #80363。 - CLI 智能体:将仅运行时使用的当前轮次发送者/回复上下文带入 CLI 模型提示中,同时保持提示构建钩子输入和转录文本的整洁。 - 控制界面:防止工作区文件存在性检查将 `fs-safe` 状态辅助函数失败误判为文件缺失,恢复现有 Windows 工作区文件的智能体文件状态。修复 #79953。感谢 @lovelefeng-glitch。 - Microsoft Foundry:当 Azure 订阅提示返回的 ID 不在已启用订阅列表中时,报告明确错误,而非继续执行不安全的订阅断言。(#62742) 感谢 @oliviareid-svg。 - 修复(matrix):对基于名称的白名单解析进行门控限制 [AI]。(#79007) 感谢 @pgondhi987。 - Slack:在新线程会话中包含机器人自身的根消息/父消息,使线程内回复能携带用户正在回复的父文本传递给智能体,而非仅传递 `reply_to_id` 元数据。修复 #79338。感谢 @sxxtony。 - Docker:保持镜像构建遵循源 pnpm 工作区策略,以便 pnpm 11 无需重写仅 Docker 的工作区即可清理生产依赖。 - 智能体/压缩:恢复嵌入式压缩启动、完成及未完成结果的 info 级别网关日志。(#71961) 感谢 @rubencu。 - Telegram:通过共享频道上下文路径构建支持回复感知的入站轮次,使智能体能将当前回复目标与当前消息内联显示。 - Telegram:恢复混合了 JSON 数组和行分隔条目的旧版消息缓存文件,使重启后的网关能保留回复窗口上下文。(#80567) - Telegram:在消息编辑时更新回复上下文缓存,使流式机器人回复在后续智能体上下文中显示最终文本而非初稿。 - 技能/Windows:在 home 前缀压缩后,将压缩的技能提示位置规范化为正斜杠,使 Windows 技能路径仍能被模型文件工具读取。(#52200) 感谢 @chienchandler。 - 控制界面/Windows:更新 `@openclaw/fs-safe`,使智能体工作区文件存在性检查在 Windows 上能正确回退,防止现有的 AGENTS.md、SOUL.md、TOOLS.md、IDENTITY.md、USER.md、HEARTBEAT.md 和 MEMORY.md 文件显示为缺失。修复 #79953。感谢 @lovelefeng-glitch。 - 记忆:跳过无法管理网关定时任务的普通定时任务和心跳钩子上下文的托管梦境定时任务对账警告。(#77027) 感谢 @rubencu。 - 定时任务:将 Codex 应用服务器轮次接受、CLI 进程生成和工具启动视为执行里程碑,防止在已开始工作后孤立运行触发早期启动看门狗。 - Codex 应用服务器:将当前轮次的 `<turn_aborted>` 原始标记视为终止状态,使被中断的原生工具轮次释放 Discord 智能体会话,而非等待外层超时。 - 元宝:将 `openclaw-plugin-yuanbao` 升级至 2.13.1,以支持群聊的 `sourceReplyDeliveryMode: "automatic"`。(#79814) 感谢 @loongfay。 - 记忆:使 `memory_search` 结果的 `corpus` 标签与命中源保持一致,使会话转录命中显示为 `sessions`,记忆文件命中保持为 `memory`。修复 #72885。(#71898, #72886) 感谢 @rubencu。 - Codex 应用服务器:将原生插件应用工具审批默认设置为自动,以便在禁用破坏性操作时运行非破坏性读取工具。 - 插件:允许全局扩展目录中的未跟踪本地源插件加载 TypeScript 包入口,同时保持托管安装对编译运行时输出的严格限制。修复 #80503。感谢 @Kaspre。 - Google/Gemini:在将清单目录行转换为发出的提供商配置时,规范化已停用的嵌套 Gemini 3 Pro Preview ID,使测试使用 `google/gemini-3.1-pro-preview` 而非 `google/gemini-3-pro-preview`。 - Google/Gemini:规范化已保存的模型白名单和降级链内的已停用嵌套 Gemini 3 Pro Preview ID,使 `openrouter/google/gemini-3-pro-preview` 等代理路由持久化为 Gemini 3.1 Pro Preview。 - Google/Gemini:规范化已配置代理/提供商身份验证模型目录中的已停用嵌套 Gemini 3 Pro Preview ID,使重新生成的配置继续测试 `google/gemini-3.1-pro-preview` 而非 `google/gemini-3-pro-preview`。 - Google/Gemini:在引入提供商目录预设时规范化已停用的嵌套 Gemini 3 Pro Preview ID,使设置发出的代理配置测试 `google/gemini-3.1-pro-preview` 而非 `google/gemini-3-pro-preview`。 - Google/Gemini:在通用配置写入期间规范化提供商目录行中的已停用 Gemini 3 Pro Preview ID,使无关的配置更改继续测试 `google/gemini-3.1-pro-preview`。 - 模型:对于具有重复模型 ID 的覆盖选择,保持配置的降级链位于配置的主模型之前,防止降级跳转至错误的提供商。修复 #80562。 - 原生应用:声明网关协议兼容范围,以便在添加 v4 客户端更新后,聊天和节点会话仍能连接至 v3 网关。 - 网关/智能体:在包更新后保持过时的 `sessions_send` ACP 管理器和 `web_fetch` 运行时块可导入,防止在线网关在重启前崩溃。修复 #78804。感谢 @Gomesy72。 - Gateway/install:在 `openclaw gateway install` 中保留服务环境值来源元数据,以便 systemd 重新安装路径将基于 env 文件的密钥排除在内联单元元数据之外。引用 #77406, #77427。感谢 @stainlu 和 @brokemac79。 - Auto-reply/reset:在裸 `/new` 和 `/reset` 模型提示词中纳入入站发送者上下文,同时保持启动说明不进入对话记录提示词,以便代理在首次重置回合时能看到发送者身份。修复 #77360。感谢 @srb11e。 - Gateway:避免在附加后启动期间进行同步重启哨兵状态探测,防止缓慢的 Windows 或重定向状态目录阻塞频道回合。修复 #79264。感谢 @liyi58。 - Agents/auth:通过一次锁定存储写入来更新成功的模型认证配置文件状态,减少因重复保存 `auth-profiles.json` 导致的模型回复后延迟。感谢 @mcaxtr。 - Agents/image:即使未设置 `agents.defaults.imageModel`,也尊重显式的 `image` 工具模型覆盖,恢复为配置的多模态提供商执行一次性视觉调用。修复 #79341。感谢 @haumanto。 - Doctor/update:在非交互式更新模式服务修复期间,保持活动的 systemd gateway 单元不变,以便更新时的诊断工具不会静默覆盖操作员拥有的单元指令。引用 #80462。 - Update:在验证精确 npm 包安装目标时接受可选的前导 `v` 前缀,以便 `openclaw update --tag v2026...` 在安装匹配的裸包版本后不会回滚。引用 #74069; #80480。感谢 @Kaspre。 - Doctor:将 `plugins.deny` 中缺失的插件 ID 视为陈旧配置警告而非致命验证错误,并在陈旧插件清理期间将其移除,以便更新修复不会为仅被拒绝的陈旧插件引用恢复最后已知良好配置。引用 #77802。感谢 @Kaspre。 - Codex app-server:通过上下文引擎提示词投影保留提示词局部当前回合上下文,以便被回复的 Telegram 消息对 Codex 模型输入保持可见。 - Telegram:通过网关消息操作传递代理作用域的媒体根目录,以便活动代理的工作区本地媒体不会被拒绝为跨代理访问。感谢 @frankekn。 - CLI/gateway:保持 `gateway status --deep` 的插件感知能力,以便在安装和更新冒烟测试期间,配置的插件清单警告(包括缺失的频道配置元数据)保持可见。 - Doctor/status:澄清网关令牌源冲突警告,并在托管的 Gateway 服务凭据上下文中抑制这些警告。 - Feishu:接受操作者身份嵌套在 `operator.user_id` 下的 Schema 2 卡片回调,以便卡片按钮正常分发而非被丢弃为格式错误。修复 #71670。(#71787) 感谢 @rubencu。 - Feishu:当正常的群聊引用回复指向已撤回或缺失的消息时,回退到顶层群发,防止回复静默消失,同时保留原生话题安全性。修复 #79349。感谢 @arlen8411。 - Doctor:当配置的默认代理不是 `main` 时,停止将活动的兼容代理目录标记为孤立。修复 #74313。(#74438) 感谢 @carlos4s。 - Auth/Claude CLI:将更新鲜的托管外部 CLI OAuth 凭据持久化回 `auth-profiles.json`,防止陈旧的 `anthropic:claude-cli` 配置文件反复引导并淹没调试日志。修复 #80129。感谢 @Caulderein。 - Context:仅从实际运行上下文渲染 `/context map`,并持久化 Codex app-server 运行报告,且不将延迟的工具搜索模式计数为提示词加载的工具模式。 - Codex app-server:向诊断系统报告 Codex 原生工具执行,以便长时间运行的原生 `bash`、网页、文件和 MCP 工具不再被看门狗视为陈旧的内嵌运行。(#80217) - Codex app-server:在订阅使用限制失败后刷新 Codex 账户速率限制,以便 Discord 和其他频道回复能显示下次重置时间,而不是显示 Codex 返回无。感谢 @pashpashpash。 - Agents/auth:让由 Codex 支持的 OpenAI 代理回合使用 `auth.order.openai` 条目进行 Codex 兼容的 OAuth 和 API 密钥配置文件,同时保持现有 `openai-codex` 配置文件排序有效。 - Codex app-server:为原生钩子中继未覆盖的原生工具完成事件发出异步 `after_tool_call` 观测,以便可观测性插件能记录 Codex 原生工具。(#80372) 感谢 @VACInc。 - Tasks:将群组和频道任务完成路由至请求者会话,以便父代理能发送可见摘要,而不是停留在通用的任务状态行。修复 #77251。(#77365) 感谢 @funmerlin。 - Telegram:在渲染的回复中保留手动缩进的列表块与后续编号部分之间的空行。修复 #76998。感谢 @evgyur。 - Agents/sandbox:允许只读沙箱会话读取 `/agent` 工作区挂载点,同时保持写/编辑/应用补丁的工作区专属保护,恢复 `workspaceAccess: "ro"` 的 `read /agent/...` 权限。修复 #39497。感谢 @stainlu 和 @teosborne。 - Slack:通过草稿预览发送传递配置的代理身份,以便部分流式回复在初始 Slack 消息中保持自定义用户名/头像。修复 #38235。(#38237) 感谢 @lacymorrow。 - Slack:支持 `allowBots: "mentions"` 用于提及接收机器人的机器人撰写消息,匹配文档中记录的 Discord 风格模式,同时不接收所有机器人消息。修复 #43587。(#43588) 感谢 @raw34。 - Slack:当入站 DM 文件事件省略或附件 URL 过期时,使用 `files.info` 刷新私有文件 URL,防止文件附件在媒体加载前被丢弃。修复 #50129。(#50200) 感谢 @smartchainark。 - Slack:添加作用域消息工具格式化提示,以便代理对纯文本发送使用 Markdown,对 Block Kit 字段直接使用 mrkdwn。修复 #34609。(#50979) 感谢 @carrotRakko。 - Slack:将 `download-file` 文件 ID 与消息时间戳分开描述,并在代理传入 `messageId` 而非 `fileId` 时返回针对性的恢复错误。(#74155) 感谢 @jarvis-ai-gregmoser。 - Slack:为 `requireMention=false` 的频道保留已处理的房间消息,以便始终在线的 Slack 频道能在各轮对话间保留最近的上下文。(#38658) 感谢 @syedamaann。 - Slack:编译用于直接外发回复的交互回复指令,且不绕过 `interactiveReplies` 能力门控,从而为 Slack CLI 和定时任务投递保留 Block Kit 支持。(#78220) 感谢 @kazamak。 - Slack:将 DM 最后路由更新限制在活动的非主 DM 会话内(包括带线程的 DM 对话),使隔离的 Slack DM 会话不会覆盖共享的主路由。(#73085) 感谢 @clawSean。 - Slack/ACP:当不存在运行时绑定时,将 Slack 频道和 DM 消息通过配置的 ACP 绑定进行路由,使绑定的线程回复固定在持久化 ACP 会话中,并丢弃不可用的配置目标,而不是回退到 `main`。(#73101) 感谢 @Raasl。 - Slack:将未解析的线程回复标记为歧义并跳过,而不是将其视为根频道消息,从而保持线程续接在基于 SDK 的参与存储中。(#75630) 感谢 @soichiyo。 - Slack:允许同频道消息工具发送时通过 `topLevel: true` 或 `threadId: null` 退出继承的线程上下文,使代理能够从 Slack 线程内发布新的父频道消息。修复 #79807。感谢 @vexclawx31。 - Slack:优先使用完整的富文本块内容,而非截断的 socket-mode 消息预览,以确保长入站 Slack 消息能完整送达代理。修复 #79027。感谢 @BobAccentWebDev。 - Slack:在设置、探测、流式传输和回复日志中包含结构化的 Slack API 错误详情,同时保留令牌脱敏。(#53966) 感谢 @deucemask。 - Gateway/代理:在活跃运行排队失败时保留结构化原因,并弃用旧的布尔值排队辅助函数,使引导和子代理唤醒诊断能够区分已完成、非流式和压缩运行。修复 #80156。感谢 @markus-lassfolk。 - 系统事件:在队列中对带键事件进行去重,同时保留无键事件、投递路由事件和信任边界事件的标识。(#73040) 感谢 @statxc。 - 代理/UI:通过隐藏冗余的 shell 工具名称、将已知工作区路径替换为简短上下文标记,并保留 Discord 追踪清理以压缩命令行,从而精简执行和工具进度行。 - ACPX:默认运行并等待嵌入式 ACP 后端启动探测,使网关 `ready` 信号不再在 acpx 运行时可用或报告探测失败前触发;设置 `OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=0` 可恢复懒启动。修复 #79596。感谢 @bzelones。 - Gateway/状态:将模型定价的初始化和刷新失败作为降级健康/状态警告显示,同时保持网关存活状态正常。修复 #79599。感谢 @bzelones。 - OpenAI 兼容模型:默认从重播的 Chat Completions 历史中剥离之前的 assistant 推理字段,防止 oMLX/vLLM Qwen 后续对话轮次因过时的 `reasoning` 负载而拒绝或卡住。修复 #46637。感谢 @zipzagster 和 @lexhoefsloot。 - CLI/引导:为非 Azure 自定义提供商提供安全生成的上下文窗口,并修复旧的 4k 向导条目,同时不覆盖显式有效的模型限制,防止首轮压缩循环。修复 #79428。(#79911) 感谢 @Jefsky。 - OpenAI 兼容模型:新增 `compat.strictMessageKeys`,将 Chat Completions 重播消息剥离为仅含 `role` 和 `content`,以适配拒绝 OpenAI 风格工具键和元数据键的严格提供商。修复 #50374。感谢 @choutos。 - Bedrock Mantle:新增 `plugins.entries.amazon-bedrock-mantle.config.discovery.enabled=false` 以抑制自动 Mantle 发现和 IAM 承载令牌生成,同时保持插件启用。修复 #67288。感谢 @kanekoh。 - Ollama:除非显式配置了 `params.num_ctx`,否则阻止原生 `/api/chat` 请求将目录中的 `contextWindow` 或 `maxTokens` 复制到 `options.num_ctx` 中,避免本地大上下文模型出现异常提示词处理延迟。修复 #62267。感谢 @BenSHPD。 - Ollama:为通过本地 Ollama 主机路由的 `*:cloud` 模型保持模型空闲看门狗启用,使云端支持的工具循环停滞能够明显故障转移,而不是继承本地模型的无空闲行为。修复 #79350。感谢 @geek111。 - 语音/Ollama:在经典嵌入式语音响应中遵循路由语音代理的 `tools.allow` 配置(包括空白名单),使无工具 Ollama 代理不会接收工具模式。修复 #79506。感谢 @donkeykong91。 - 代理/诊断:当频道路由代理无法调用 `message` 工具时发出警告,使操作员能够在附件或线程回复等显式频道操作失败前修复工具策略不匹配问题。Refs #80128。感谢 @jeffjhunterai。 - Gateway:在首次进程内重启循环启动后从磁盘重新读取配置,防止 SIGUSR1 重启重用过时的启动快照并丢弃启动后写入的配置。修复 #79947。感谢 @TheLevti。 - Codex 应用服务器:将 Codex `savedPath` 事件中的原生图像生成输出作为回复媒体交付,使纯文本图像生成轮次仍能附加生成的文件。感谢 @keshavbotagent。 - 网络/SSRF:当双栈主机同时发布 AAAA 记录时,保持自动 DNS 查找固定于 IPv4,并将 `EADDRNOTAVAIL` 视为瞬态网关网络故障而非致命崩溃。修复 #80078。感谢 @takamasa-aiso。 - 控制面板 UI:在会话表中显示紧凑的单行运行状态徽章(运行中/空闲/已终止),并将“活跃分钟”过滤器重命名为反映“更新于内”的含义。修复 #78307。感谢 @BunsDev。 - 控制面板 UI:按代理限定聊天会话列表的刷新范围,并为仅配置列表跳过仅磁盘的代理存储发现,防止在大型 Windows 存储上首次消息后切换会话时卡住。修复 #79675。感谢 @lovelefeng-glitch, @BunsDev。 - 控制面板 UI:允许通过服务端 CSP 导入 Appearance tweakcn 主题,使浏览器本地自定义主题链接不再因 `connect-src` 违规而失败。修复 #78504。感谢 @BunsDev。 - 控制面板 UI/配置:移除表单在保存前撤销插件启用开关时自动添加的插件白名单条目,使撤销可见开关即可清除脏状态,而不会持久化意外的白名单更改。(#78329) 感谢 @samzong。 - 网关/移动端:在交接重连时复用引导阶段签发的设备令牌作用域,并将设备令牌作用域不匹配与令牌不匹配分开提示,同时保留完整的共享令牌仪表板/原生会话。修复 #79292。感谢 @BunsDev。 - 媒体/主机读取:在共享的主机本地媒体验证器中,允许与 ZIP 和文档附件并存的经缓冲区验证的 gzip、tar 和 7z 归档文件。 - 插件/诊断:当插件诊断指向已删除的源路径时,使持久化的插件注册表快照失效,从而在本地扩展被托管的 npm 插件替换后,`openclaw doctor` 不再重复显示过时警告。修复 #80087。(#80134) 感谢 @hclsys。 - 诊断/OpenAI Codex:在自动将旧版 `openai-codex/*` 模型引用修复为标准 `openai/*` 时,通过添加提供商/模型作用域的 Codex 运行时策略来保留 Codex 认证意图,防止修复后的配置回退到直接使用 OpenAI API 密钥认证。修复 #78533 和 #78570。感谢 @superck110 和 @Azmodump。 - CLI/智能体:在 `deliverAgentCommandResult` 和 `openclaw agent --json --deliver` 中暴露 `sendDurableMessageBatch` 的持久化消息投递状态,将抑制的钩子结果保留为终端不重试结果,同时为自动化暴露部分和失败的发送状态。取代 #53961 和 #57755。感谢 @Kaspre。 - 智能体:在提供商流设置仍待处理时应用 LLM 空闲看门狗,防止静默的流前模型挂起等待完整的智能体超时时间。 - 定时任务:允许隔离的自清理运行检查其自身的作业运行历史,同时阻止其他定时任务和变更操作。修复 #80019。感谢 @hclsys。 - 定时任务:当未启动模型调用时,使用特定阶段的超时错误报告隔离的智能体回合设置和模型前停滞,而不是等待完整的作业预算。修复 #74803。感谢 @jeffsteinbok-openclaw 和 @dgkim311。 - CLI/插件:将插件 CLI 元数据之外的任意未知子命令视为普通未知命令,而不是建议 `plugins.allow`,同时为真实的插件命令根路径保留白名单指引。修复 #80109。(#80123) 感谢 @kagura-agent。 - CLI/配置:持久化显式 `config set` 和 `config patch` 中等于运行时默认值的参数,而不是报告成功却将其丢弃。修复 #79856。(#80106) 感谢 @abodanty 和 @hclsys。 - OpenAI/实时语音:接受与 Codex 兼容的旧版音频和转录事件别名,以防止提供商协议漂移导致助手音频或字幕丢失。 - Discord/语音:防止默认智能体代理实时会话在强制 OpenClaw 咨询回答前自动填充语音,在实时响应完成时结束 Discord 播放,并将后续的精确语音回答排队至播放空闲时,以避免句中被替换。 - 网关:为格式错误的编码会话终止 HTTP 路径返回确定的 `400 invalid_request_error` 响应,而不是让路由格式请求回退到后续的网关处理器。(#72439) 感谢 @rubencu。 - 控制面板 UI:从 `/__openclaw__/` SPA 路由提供根目录 PWA 和图标资产,使标签页图标、安装元数据和服务工作者在内部导航后不会返回 404。修复 #80072。感谢 @CodeNovice2017。 - 执行/安全目录:在大小写不敏感的文件系统上使用路径特定的大小写折叠来比较可信的安全目录,使 Windows 和默认 macOS 路径匹配,同时不削弱大小写敏感挂载的安全性。(#42131) 感谢 @hkochar。 - OpenAI/实时语音:本地尊重禁用的输入音频中断设置,使操作员设置 `interruptResponseOnInputAudio: false` 后,服务器 VAD 语音启动事件不会清除 Discord 播放。 - Telegram:保持无回复的私聊回合保持静默,而不是将其重写为可见的静默回复闲聊。修复 #78188。(#78228) 感谢 @Beandon13。 - Telegram:在原始回调回退之前处理托管的选择按钮回调,同时保留包含分隔符的选项值(如 `env|prod`)。(#79816) 感谢 @moeedahmed。 - OpenAI 兼容模型:处理返回给流式请求的 JSON 聊天完成体,保留推理字段和可见文本,而不是完成空的智能体回合。修复 #77870。 - Discord/模型:在加载路由、模型和偏好数据之前延迟模型选择组件交互,防止在网关负载下出现“此交互失败”超时。修复 #77283。感谢 @colin-chang。 - xAI:为具备推理能力的 Grok 模型暴露 `/think low|medium|high`,并在原生 Responses 负载中保留 `reasoning.effort`,同时为非推理路由保留仅关闭行为。修复 #79210。感谢 @colinmcintosh。 - CLI/媒体:允许显式图像描述模型引用使用捆绑的静态提供商目录和通用模型支持的图像钩子,使 `openclaw infer image describe --model zai/glm-4.6v` 能像直接运行模型一样工作,并避免 Anthropic 认证探测使用过时的 Claude 3 Haiku 目录条目。 - 模型/Anthropic:当配置了 Anthropic 默认模型时,将 `anthropic/claude-haiku-4-5` 添加到 Anthropic API 密钥智能体白名单默认值中,使定时任务模型覆盖能够选择当前的 Haiku 别名。修复 #78000。 - 智能体/上下文压缩:在 CLI 转录压缩解析默认引擎之前初始化内置上下文引擎,防止在 CLI 会话持久化期间出现干净进程 `legacy` 引擎注册失败。修复 #79446。感谢 @TurboTheTurtle。 - Agents/Anthropic 兼容模式:针对明确声明 `supportsReasoningEffort: false` 的自定义 Anthropic 兼容模型,剥离重放的思考块,防止 Kimi 兼容提供商重新发送不受支持的 `thinking` 内容。修复 #47452。 - Kimi:通过提供所需的思考预算以及为隐藏推理和最终文本留出足够的输出空间,保持 Anthropic 兼容思考流的合法性。(#80481) 感谢 @InTheCloudDan。 - 浏览器:延长对现有会话 Chrome MCP 状态和非深度诊断探测的等待时间,使首次连接缓慢时不会误报离线,同时保持原始 CDP 状态探测的简短。(#77473) 感谢 @rubencu。 - 网关/日志:在前台网关快速路径解析之前安装控制台捕获,并在详细模式下抑制已知的 libsignal 会话转储,防止原始终端日志打印 WhatsApp 会话密钥信息。(#76306) 感谢 @rubencu。 - 执行审批:将 `exec.approval.list` 保留在轻量级策略摘要路径上,使列出待处理审批不再加载复杂的 tree-sitter 命令解释器。(#76943) 感谢 @rubencu。 - 智能体:当 `exec`/`bash` 工具调用在助手声称成功后失败时,显示简洁的默认可见警告,同时在未启用详细详情时隐藏原始 stderr。修复 #60497。(#80003) 感谢 @jbetala7。 - 频道/iMessage:在非敏感健康快照中保留脱敏的失败探测详情,使“完全磁盘访问”失败不再在状态输出中显示为已配置/正常。修复 #79795。 - 智能体:在分发前拦截模型生成的空白工具调用,同时保留基于 ID 的工具名恢复机制,防止 Kimi/NVIDIA 空白名称重试循环,且不创建可调用的 `_blank` 哨兵。修复 #34129。(#56391) 感谢 @smartchainark。 - 智能体/Telegram:发送标准的最终助手答案,而不是重放累积的预工具文本块,防止重复的 Telegram 回复和看似原始的工具输出片段泄露到聊天交付中。修复 #79621 和 #79986。感谢 @nonzeroclaw 和 @dudaefj。 - 自动回复/TUI:在主模型生命周期错误后,通过输出回退进度并将终端 TUI 错误延迟到恢复有机会完成后再显示,确保回退超时恢复可交付。修复 #80000。(#80009) 感谢 @TurboTheTurtle。 - 心跳:当配置的默认模型更改时清除过期的自动回退模型覆盖,使心跳运行跟随更新后的 `agents.defaults.model.primary`,无需手动重置。修复 #74284。感谢 @brtkwr 和 @bitloi。 - CLI/智能体:允许 `openclaw agent --model` 使用后端/管理员网关作用域,避免缓存的设备令牌作用域静默降级请求。(#78837) 感谢 @VACInc。 - CLI/帮助:保持帮助和版本调用无需配置,同时改进共享端口、频道、插件、任务、会话、消息、配对和身份验证恢复文本。 - CLI/配置:通过有效示例和纯字符串备选方案解释严格 JSON 解析失败。 - CLI/密钥:将离线网关重载失败转化为可操作的恢复提示。 - CLI/频道:通过后续命令解释缺失或模糊的频道选择。 - CLI/频道:将引导式频道状态收集延迟到选择频道之后,使 `openclaw channels add` 首屏保持简洁。 - CLI/频道:在取消时干净地退出引导式频道设置,而不是打印内部向导错误。 - 插件/CLI:将禁用的 Matrix 和 LanceDB 内存命令根路由到插件启用指引,而不是通用的未知命令错误。 - 浏览器/Docker:从 `PLAYWRIGHT_BROWSERS_PATH` 和 Linux 上的默认 Playwright 缓存检测 Playwright 管理的 Chromium,使持久化 `/home/node/.cache/ms-playwright` 的 Docker 安装不再需要 `browser.executablePath`。 - Ollama:即使 Ollama Cloud `/api/show` 省略了 `thinking` 能力,也保持 DeepSeek V4 云模型具备思考能力,使 `/think high` 不再拒绝 `ollama/deepseek-v4-*:cloud`。 - ACPX/Claude ACP:当同一会话中到达自主任务通知结果时,保持前台提示等待其自身结果,并将补丁重新定向至 Claude Agent ACP `0.33.1`。 - WhatsApp:在 `7.0.0-rc10` 中防止 Baileys 媒体上传将非 Dispatcher 智能体传递给 undici,并修补捆绑的 Baileys 声明,使最新的 tsdown 构建保持无警告。 - 构建:通过外部化已知的第三方声明依赖,并将相对频道配置模块增强替换为显式内置频道字段,使 tsdown `0.22.0` 保持无警告。 - ACP 会话:将标准运行时选项映射到后端声明的 ACP 配置键(如 Claude 的 `effort`),同时保持持久化的 OpenClaw 状态为标准。(#79926) 感谢 @InTheCloudDan。 - 模型/Discord:在 `agents.defaults.models` 中支持 `provider/*` 条目,使 `/model`、`/models` 和模型选择器能够在没有精确模型白名单的情况下显示所选提供商的动态发现模型。修复 #79485。感谢 @rendrag-git。 - 网关/watch:从源代码签出启动网关之前,重新构建或重新打包缺失的捆绑插件 dist 和运行时 postbuild 输出,防止不完整的 watch 模式运行时树。(#70805) 感谢 @rubencu。 - CLI/更新:允许在自更新期间从上一网关协议进行重启健康探测,并使插件干运行报告精确的 npm 目标版本而非 `unknown`,同时保留未更改状态。 - OpenAI/Codex:在标准 `openai/*` 迁移后,将持久化的 `openai-codex` OAuth 配置文件元数据转发到 Codex 插件框架尝试中,使仅 OAuth 安装继续使用原生 Codex 身份验证,而不是回退到直接 OpenAI API 密钥身份验证。修复 #79978。 - OpenAI/Codex:将网关缺失密钥恢复和向导文档指向标准的 `openai/gpt-5.5` 加上 Codex OAuth 路径,并修复轨迹导出错误,使其建议有效的 `openclaw sessions` 命令。 - Google/Gemini:在配置加载和无关配置写入期间,规范化已弃用的 `google/gemini-3-pro-preview` 主模型、回退模型及模型映射引用,以确保保存的配置继续指向 Gemini 3.1 Pro Preview。 - Google/Gemini:规范化输出配置中的已弃用 Gemini 3 Pro Preview ID,使重新生成的 models.json 行测试 `google/gemini-3.1-pro-preview`。 - Google/Gemini:规范化显式 OpenAI 兼容型 Google 和 Gemini CLI 提供程序配置中的已弃用 Gemini 3 Pro Preview ID,使输出配置指向 `google/gemini-3.1-pro-preview`。 - Google/Gemini:规范化从现有合并的 models.json 提供程序中保留的已弃用 Gemini 3 Pro Preview ID,使配置输出继续指向 `google/gemini-3.1-pro-preview`。 - Google/Gemini:规范化提供程序认证配置补丁中的已弃用 Gemini 3 Pro Preview ID,使设置生成的提供程序目录测试 `google/gemini-3.1-pro-preview`。 - GitHub Copilot:使用运行时请求相同的 `vscode-chat` 集成身份签发短期 Copilot API 令牌,并刷新缺少该身份的传统缓存令牌,使支持图像的 Copilot 模型不再继承 `copilot-language-server` 作用域。修复 #79946, #80074。感谢 @TurboTheTurtle。 - Plugins/doctor:当 `openclaw doctor --fix` 移除覆盖内置插件的 npm 包时,丢弃过期的托管 npm 安装记录,使重建的注册表不再恢复已删除的包元数据。 - Doctor:当每个代理的模型配置省略 `fallbacks` 键且 `agents.defaults.model.fallbacks` 非空时发出警告。涵盖字符串形式 (`"model": "..."`) 和部分对象形式 (`"model": { "primary": "..." }`) —— 两者在运行时都会静默覆盖默认链。使用 `"fallbacks": []` 显式禁用回退,或添加 `"fallbacks": [...]` 以继承或覆盖。修复 #79369。感谢 @Kaspre。 - Discord/voice:复用或抑制延迟的实时咨询工具调用,不窃取较新的发言者上下文,也不重复播报强制回退答案。 - Discord/voice:跳过可能不完整的实时强制咨询转录片段和非可操作结尾,防止陈旧的局部语音在下一轮排队延迟答案。 - Discord/voice:防止实时强制咨询清除正在进行的精确语音播放,使连续语音答案排队而非互相打断。 - Discord/voice:根据输出的 Discord PCM 合成实时播放时间戳,使 OpenAI 实时打断截断不再看到 `audioEndMs=0` 而跳过合法打断。 - Plugin SDK:当禁用内置插件回退时,保持已激活的链接插件运行时外观可加载。感谢 @shakkernerd。 - Feishu:当活动会话为 group_topic 或 group_topic_sender 时,自动在主题内对 `message(action="send")` 回复进行线程化,并通过文本、卡片和媒体出站适配器传播 `replyInThread`,使主题范围会话不再发布到群组根目录。修复 #74903。(#77151) 感谢 @ai-hpc。 - WhatsApp:将路由上下文传入语音笔记转录回声预检,使回声转录能投递至原始聊天。修复 #79778。(#79788) 感谢 @hclsys。 - Cron/failover:将结构化的 OpenAI 兼容型 `server_error` 负载分类为 `server_error`,在 cron 状态中暴露该原因,并使一次性 cron 重试策略尊重 `retryOn: ["server_error"]`,无需原始 `5xx` 文本。(#45594) 感谢 @clovericbot。 - Slack:在交互式回复按钮/选择点击后唤醒已解析的线程会话,并通过排队交互事件传递 Slack 投递上下文,使点击能继续可见对话。修复 #79676 和 #61502。(#79836) 感谢 @velvet-shark, @tianxiaochannel-oss88 和 @Saicheg。 - WhatsApp/streaming:当文本结束块回复在工具调用周期中重复先前前言时,仅发送新增后缀,防止累积 WhatsApp 前言消息。修复 #78946。(#79120) 感谢 @brokemac79 和 @papawattu。 - Tests/security audit:在基于每个用例的 OpenClaw 主目录临时目录中沙盒化 `audit-exec-surface.test.ts`,重定向 `OPENCLAW_HOME`(在 `resolveRawHomeDir` 中优先级高于 `HOME`/`USERPROFILE`)以及 `HOME` 和 `USERPROFILE`,使其 `saveExecApprovals(...)` 调用绝不触碰运行测试套件的主机上的真实 `~/.openclaw/exec-approvals.json`。同级 exec-approvals 测试已使用临时目录模式;此文件未使用,因此在贡献者本地签出运行 `pnpm test` 时静默截断了其真实审批记录为 `{ "version": 1, "agents": {} }`。(#79885) 感谢 @omarshahine。 - ACP/gateway:在生命周期边界内保留 `AcpRuntimeError` 原因链(代码/方法/JSON-RPC 详情),使网关日志、Telegram 回复和工具结果文本显示实际的上游故障,而非不透明的 `Internal error`/`[object Object]`,并在原因链到达日志或回复表面之前应用脱敏。 - Channels/iMessage:当安装的 imsg 版本声明支持该功能时(通过 `imsg send-rich --help` 探测一次并缓存私有 API 状态),将 `action: "reply"` 附件通过 `imsg send-rich --file` 接入。回复现在通过共享出站解析器解析并填充 `media`/`mediaUrl`/`fileUrl`/`mediaUrls[0]`/`filePath`/`path`/base64 `buffer`+`filename`,通过现有 `withTempFile` 辅助函数暂存缓冲区,使用指向 `send` 完整附件解析器管道的定向错误拒绝 `http(s)://` URL 附件,并在旧版 imsg 版本上回退到明确的 `imsg#114 not landed yet` 错误。依赖于上游 `openclaw/imsg#114` 功能落地到可安装版本;在此之前,新路径保持受限,用户将看到相同的明确回退 `#79822`。(#79864) 感谢 @omarshahine。 - Telegram:在追加真实部分流增量时保留首次预览的防抖,使编辑草稿预览在提供程序发出增量输出时不再重复先前文本。(#80045) 感谢 @TurboTheTurtle。 - Agents/Anthropic:即使本地模型配置仍声明为 200k,也为 Claude Opus/Sonnet 4 模型报告 1M 会话上下文,以匹配模型发现机制并防止状态/UI 过早溢出。修复 #66766。 - Models/OpenRouter:当缺失认证的直连提供商行仅被嵌套的 OpenRouter 模型 ID(如 `openrouter/google/...`)重复时,在 `/model status` 中隐藏这些行,同时保留显式配置的直连提供商。修复 #62317。 - Models:当其他提供商拥有相同的裸模型别名时,保留显式选择的提供商/模型(如 `opencode-go/deepseek-v4-pro`)。修复 #79325。 - Models/config:当模型仅存在于 `agents.defaults.models` 中时,解释缺失的 `models.providers.<provider>.models[]` 注册信息,而不是返回原始的未知模型错误。修复 #80089。 - MCP/tools:为以数字开头的捆绑 MCP 服务器/工具片段添加前缀,确保生成的工具名称对 Moonshot/Kimi 及其他严格提供商有效。修复 #79179。 - Models/OpenRouter:将 `403 API key budget limit exceeded` 视为计费问题,以便模型回退机制继续推进,而不是重试已耗尽的主模型。修复 #60191。感谢 @omgitsgela。 - Models/OpenRouter:修复丢失外层 `openrouter/` 提供商包装器的陈旧会话覆盖,使会话能返回配置的 OpenRouter 模型,而不是作为未知直连提供商模型失败。修复 #78161。感谢 @hjamal7-bit。 - Google/Gemini:将默认 API 密钥引导流程恢复为 `google/gemini-3.1-pro-preview`,以便新的 Gemini 测试配置能够测试 Gemini 3.1 Pro Preview。 - Telegram:在模型选择器中显示嵌套 OpenRouter 模型 ID 的完整提供商/模型标签,使 `openrouter/openai/gpt-5.4-mini` 不再显示为 `openai/gpt-5.4-mini`。修复 #67792。(#72752) 感谢 @iot2edge。 - Models/OpenRouter:保留实时的 `supported_parameters` 工具支持元数据,使非工具型 Perplexity Sonar 模型不再接收代理工具负载并避免不必要的回退。修复 #64175。感谢 @Catfish-75。 - Models/OpenRouter:将 MoonshotAI Kimi K2.5 添加到捆绑的 OpenRouter 目录中,以便引导流程/模型选择器可直接提供该模型,无需等待实时发现。修复 #14601。 - Models/OpenRouter:使基于 keyRef/tokenRef 的认证配置文件对只读 PI 模型发现可见,这样 OpenRouter 模型在模型选择器中保持可用,而无需存储明文密钥。修复 #58106。感谢 @ThalynLabs。 - Models/list:在默认配置视图中包含显式配置的提供商行和只读认证支持的目录行,而无需加载 PI 的完整注册表,使控制面板 UI 选择器与可用的模型认证保持一致。引用 #79381。感谢 @ismael-81。 - Security/audit:在报告小模型 Web/浏览器暴露时,遵守 `tools.byProvider["provider/model"].deny` 设置,使按模型配置的 OpenRouter 缓解措施能够清除 `models.small_params` 暴露信号。修复 #80118。 - Models/Moonshot:将直连的 `moonshotai/...` 和 `moonshot-ai/...` 引用作为标准 `moonshot/...` 的别名接受,使复制的 OpenRouter Kimi ID 不再作为未知直连模型失败。修复 #73876。(#74946) 感谢 @jeffrey701。 - Kimi Code:在捆绑目录、引导流程和文档中使用 Kimi 稳定的 `kimi-for-coding` API 模型 ID,同时规范化旧的 `kimi-code` 和 `k2p5` 引用。修复 #79965。 - Telegram:将缓存的回复目标和附近群组聊天渲染为同一个已选对话上下文窗口,使陈旧回复不再将 JSON 回复链与本地聊天上下文割裂。 - Volcengine/Kimi:为直连和编码计划模型移除提供商不支持的工具 Schema 长度和项约束关键字,使托管的 Kimi 运行环境不再因 `minLength` 拒绝消息工具。修复 #38817。 - DeepSeek:为非自有的 OpenAI 兼容代理提供商回填 V4 `reasoning_content` 回放字段,防止在捆绑的 DeepSeek 和 OpenRouter 路由之外出现后续请求失败。修复 #79608。 - iMessage:当因未附加 imsg 私有 API 桥接而导致操作被阻止时,输出 WARN 级别日志,使操作员能在 `~/.openclaw/logs/openclaw.log` 中看到静默丢弃记录,而无需查阅每次会话轨迹 JSONL 的 `tool.result` 负载。网关重启后未重新注入 Messages.app 的 dylib 时常见此情况。(#80035) 感谢 @omarshahine。 - Codex:在 Schema 验证前交叉填充缺失的 `thread.id` 和 `thread.sessionId`,使省略 `sessionId` 的实时 Codex 应用服务器响应不再导致 `thread/start` 或 `thread/resume` 失败。修复 #80124。(#80137) 感谢 @kagura-agent。 - Agents/Pi:在释放会话写入锁之前等待嵌入式中止清理完成,防止后续对话轮次与之前的提示词清理发生竞态条件。(#80239) 感谢 @samzong。 - WhatsApp:将 OpenClaw 看门狗触发的 Web 重连从运行时错误降级为恢复警告,并在下次正常连接后清除恢复的重连状态。(#77026) 感谢 @rubencu。 - ACPX/Windows:在 Windows 上隐藏 MCP 代理目标子进程窗口,使基于 ACP 的代理不会因终端窗口处理而闪烁或失败。修复 #60672。(#60678) 感谢 @KChow-ctrl。 - Agents:当相同调用持续返回相同结果时,在关键阈值处中止通用的重复无进展工具循环。(#80668) 感谢 @frankekn。 - Exec approvals:在非 POSIX Windows 和 shell 包装器审批命令中省略生成的命令高亮,直到这些命令语言获得原生高亮支持。(#80566) 感谢 @jesse-merhi。 - Telegram:将详细的工具进度和结果草稿与最终助手回答分开,使工具输出不再混入最终的 Telegram 消息中。(#80294) 感谢 @jalehman。