← 返回更新日志

OpenClaw v2026.4.24-beta.1 预发布

2026-04-25 · GitHub 原文
## 2026.4.24 ### 亮点 - Google Meet 以捆绑式参与者插件的形式加入 OpenClaw,支持个人 Google 认证、Chrome/Twilio 实时会话、配对节点 Chrome 支持、工件/参会记录导出,以及对已打开 Meet 标签页的恢复工具。 - DeepSeek V4 Flash 和 V4 Pro 已加入捆绑目录,V4 Flash 成为 onboarding 默认选项,并修复了 DeepSeek 思考/回放行为在后续工具调用回合中的问题。 - Talk、语音通话和 Google Meet 可使用咨询完整 OpenClaw 智能体以获取更深层工具支持答案的实时语音循环。 - 浏览器自动化获得坐标点击、更长的默认操作预算、每配置文件的无头模式覆盖,以及更稳定的标签页复用/恢复。 - 插件和模型基础设施在启动时更轻量:静态模型目录、清单支持的模型行、懒加载提供者依赖,以及针对打包安装的外部运行时依赖修复。 ### 重大变更 - 插件 SDK/工具结果转换:移除仅限 Pi 的 `api.registerEmbeddedExtensionFactory(...)` 兼容路径。捆绑工具结果重写必须使用 `api.registerAgentToolResultMiddleware(...)` 并配合 `contracts.agentToolResultMiddleware` 声明目标测试框架,以确保转换在 Pi 和 Codex 应用服务器动态工具中一致运行。感谢 @vincentkoc。 ### 变更 - 控制 UI/Talk:添加基于 OpenAI Realtime 的浏览器 WebRTC 实时语音会话,由 Gateway 签发的临时客户端密钥和 `openclaw_agent_consult` 交接至完整 OpenClaw 智能体。 - 插件/Google Meet:添加捆绑式参与者插件,支持个人 Google 认证、明确会议 URL 加入、Chrome 和 Twilio 实时传输、用于 Parallels 风格 Chrome/BlackHole/SoX 主机的配对节点 `chrome-node` 支持,以及实时语音会话内的完整智能体咨询。(#70765) - 插件/Google Meet:为会议记录、录制、转录、智能笔记和参与者会话添加工件与参会工作流,包括 Markdown/文件输出、最新记录查找和 `--all-conference-records` 历史扫描。 - 插件/Google Meet:添加 OAuth 和浏览器状态诊断/恢复流程,包括 `googlemeet doctor --oauth` 及 `recover_current_tab`/`recover-tab`,使智能体可在不打开重复标签页的情况下检查已打开的 Meet 标签页。 - 插件/语音通话:公开共享的 `openclaw_agent_consult` 实时工具,使实时电话通话可请求完整 OpenClaw 智能体提供更深层/工具支持的答案。 - 插件/语音通话:添加 `voicecall setup` 和默认执行空运行的 `voicecall smoke` 命令,以便在拨打实时测试通话前检查 Twilio/提供者就绪状态。 - 提供者/Google:为后端语音通话和 Google Meet 音频桥添加 Gemini Live 实时语音提供者,支持双向音频和函数调用。 - 提供者/Google:允许 Gemini TTS 在语音合成前添加配置的 `audioProfile` 和 `speakerName` 提示文本,以实现可复用的语音风格控制。感谢 @tdack。 - Gateway/VoiceClaw:添加由 Gemini Live 支持的实时大脑 WebSocket 端点,具备所有者认证限制和异步 OpenClaw 工具交接。(#70938) 感谢 @yagudaev。 - 控制 UI:优化智能体工具访问面板,采用紧凑的实时工具芯片、可折叠工具组、直接每工具切换开关,以及更清晰的运行时/来源溯源。(#71405) 感谢 @BunsDev。 - 控制 UI/聊天:在排队消息上添加“引导”操作,以便将浏览器后续操作注入活动运行而无需重新输入。 - 浏览器:为托管和现有会话自动化添加视口坐标点击,以及 CLI 使用的 `openclaw browser click-coords`。(#54452) 感谢 @dluttz。 - 浏览器:添加 `browser.actionTimeoutMs` 并使用 60 秒默认操作预算,使健康的长时间浏览器等待不会在客户端传输边界失败。(#62589) 感谢 @andyylin。 - 浏览器/配置:支持每配置文件的 `browser.profiles.<name>.headless` 覆盖,以便本地启动的浏览器配置文件可独立运行无头模式,无需强制所有浏览器配置文件无头。感谢 @nakamotoliu。 - Matrix:要求完整的交叉签名身份信任以实现自设备验证,并添加 `openclaw matrix verify self` 以便操作员可通过 CLI 建立该信任。(#70401) 感谢 @gumadeiras。 - Gradium:添加捆绑式文本转语音提供者,支持语音笔记和电话输出。(#64958) 感谢 @LaurentMazare。 - 内存核心/混合搜索:在混合内存搜索结果中暴露原始 `vectorScore` 和 `textScore`(连同合并的 `score`),以便调用器可在时间衰减或 MMR 重排序前检查向量与文本检索的贡献。修复 #68166。(#68286) 感谢 @ajfonthemove。 - 依赖/内存:默认不再安装 `node-llama-cpp`;本地嵌入仅在操作员安装可选运行时包时加载它。感谢 @vincentkoc。 - 提供者/DeepSeek:将 DeepSeek V4 Flash 和 V4 Pro 加入捆绑目录,并将 V4 Flash 设为 onboarding 默认。感谢 @lsdsjy。 - 依赖/Pi:将捆绑 Pi 包更新至 `0.70.2`,使用 Pi 上游的 `gpt-5.5` 和 DeepSeek V4 目录元数据,并仅保留本地 `gpt-5.5-pro` 前向兼容处理。感谢 @lsdsjy。 - 模型/CLI:通过捆绑提供者的安全静态目录、更窄的行源编排以及默认 `openclaw models list` 减少广泛的注册枚举,加速模型列表。(#70632, #70883, #70867) 感谢 @shakkernerd。 - 模型/命令:弃用 `/models add`,使聊天尝试返回弃用消息而非写入模型配置,并从 `/models` 提供者菜单中移除添加操作。(#71175) 感谢 @Takhoffman。 - 模型/目录:添加清单 sourced 模型行、重复提供者/模型冲突报告,以及共享的 `src/model-catalog` 规范化,供提供者索引、缓存、onboarding 和列表消费者在不加载提供者运行时的情况下使用。(#71368, #71360) 感谢 @shakkernerd。 - Codex 测试框架/上下文引擎:在 Codex 应用服务器会话中运行上下文引擎引导、组装、回合后维护和引擎拥有的压缩,同时保持原生 Codex 线程状态和压缩可审计。(#70809) 感谢 @jalehman。 - Codex 运行时计划:整合合同优先的 Pi/Codex 覆盖率,并在应用服务器配置文件登录和刷新路径中接受遗留 Codex 认证提供者别名。(#71096) 感谢 @100yenadmin。 - Codex 测试框架:将 Codex 原生工具钩子桥接到 OpenClaw 插件钩子和批准,受限制的负载中继和批准垃圾保护。(#71008) 感谢 @pashpashpash。 - 插件 SDK/Codex 测试框架:添加提供者拥有的传输/认证/后续接缝和测试框架结果分类,以便 Codex 风格运行时可在无需核心特殊处理的情况下参与回退策略。(#70772) 感谢 @100yenadmin。 - Gateway/节点:添加默认禁用的 `gateway.nodes.pairing.autoApproveCidrs` 用于从显式受信任 CIDR 进行首次节点配对,同时保持操作员/浏览器配对和所有升级流程手动。修复 #60800。感谢 @sahilsatralkar。 - WebChat/会话:将运行时仅提示上下文保留在可见转录历史之外,并从会话历史表面清理遗留包装器。感谢 @91wan。 - 智能体/引导:添加 `agents.defaults.contextInjection: "never"` 以禁用工作区引导文件注入,适用于完全拥有提示生命周期的智能体。(#65006) 感谢 @xDarkicex。 - 插件/清单:添加 `modelCatalog` 合同,用于提供者拥有的模型行、别名、抑制规则和发现模式元数据,无需加载插件运行时。(#71342) 感谢 @shakkernerd。 - 插件/设置:尊重显式的 `setup.requiresRuntime: false` 作为仅描述符设置合同,同时在遗留设置 API 回退路径上保留省略值。感谢 @vincentkoc。 - 插件/设置:当设置 API 注册与 `setup.providers` 或 `setup.cliBackends` 不一致时报告描述符/运行时漂移,不拒绝遗留设置插件。感谢 @vincentkoc。 - 插件/设置:在通用提供者认证/环境查找中包含 `setup.providers[].envVars`,并警告仍依赖已弃用的 `providerAuthEnvVars` 兼容元数据的非捆绑插件。感谢 @vincentkoc。 - 插件/设置:在回退到设置运行时之前,从描述符安全的 `setup.providers[].authMethods` 推导通用提供者设置选择。感谢 @vincentkoc。 - 插件/设置:在提供者设置流程中直接公开清单提供者认证选择,然后回退到设置运行时或安装目录选择。感谢 @vincentkoc。 - 插件/设置:警告仅描述符设置插件仍附带被忽略的设置运行时条目,保持 `setup.requiresRuntime: false` 语义明确而不破坏现有元数据。感谢 @vincentkoc。 - 插件/通道:当无设置条目或设置描述符声明运行时不必要时,使用清单 `channelConfigs` 进行只读外部通道发现。感谢 @vincentkoc。 - 插件钩子:在消息钩子上下文和运行生命周期事件上暴露一流的运行、消息、发送者、会话和跟踪关联字段。感谢 @vincentkoc。 - 插件/PDF:将本地 PDF 提取移至捆绑的 `document-extract` 插件,使核心不再拥有 `pdfjs-dist` 或 PDF 图像渲染依赖。感谢 @vincentkoc。 - 提供者/Anthropic Vertex:将 Vertex SDK 运行时移至捆绑提供者插件后方,使核心不再拥有该提供者特定依赖。感谢 @vincentkoc。 - 插件/激活:公开激活计划原因和更丰富的计划 API,以便调用器可在保留现有 ID 列表激活行为的同时检查插件被选原因。(#70943) 感谢 @vincentkoc。 - 插件/源元数据:在提供者和通道目录上公开标准化的安装源事实,以便 onboarding 可在运行时加载前解释 npm 锁定、完整性状态和本地可用性。(#70951) 感谢 @vincentkoc。 - 插件/目录:将官方外部 WeCom 通道源锁定到精确的 npm 版本加分发完整性,并设有防护确保官方外部源保持完整性锁定。(#70997) 感谢 @vincentkoc。 - 插件/源元数据:当 `openclaw.install.defaultChoice` 无效或指向缺失源时发出警告,在保持目录诊断明确的同时不破坏现有插件。感谢 @vincentkoc。 - 插件/源元数据:当 `openclaw.install.expectedIntegrity` 存在但无有效 npm 源时警告,使孤立完整性元数据可见而不拒绝现有插件。感谢 @vincentkoc。 - 插件/源元数据:当提供者或通道目录包身份与 `openclaw.install.npmSpec` 漂移时警告,在保持诊断可见的同时不拒绝兼容外部目录。感谢 @vincentkoc。 - 插件/Bonjour:将 LAN Gateway 发现广告移至默认启用的捆绑插件,自带 `@homebridge/ciao` 依赖,使用户可禁用 Bonjour 而不切断广域发现。感谢 @vincentkoc。 - 插件/兼容性:添加中央插件兼容注册表和文档,涵盖 SDK/配置/设置/运行时弃用记录,包括遗留测试框架命名和其他插件面向别名的日期迁移元数据。感谢 @vincentkoc。 - TUI/依赖:从 OpenClaw TUI 代码块渲染器中移除直接 `cli-highlight` 使用,在无额外根依赖的情况下保持主题代码着色。感谢 @vincentkoc。 - 依赖/SBOM:添加基于所有权的依赖风险报告,涵盖根闭包大小、原生/构建风险包和缺失所有者记录。感谢 @vincentkoc。 - 诊断/OTEL:将运行、模型调用和工具执行诊断生命周期事件导出为 OTEL 范围,而不保留实时范围状态。感谢 @vincentkoc。 - 诊断/OTEL:接受 opt-in `diagnostics.otel.captureContent` 控制以用于未来模型/工具内容范围属性,同时默认禁用原始内容导出。感谢 @vincentkoc。 - 诊断/OTEL:添加轻量级诊断跟踪上下文载体,用于未来范围关联,而不向核心添加 OTEL SDK 状态。感谢 @vincentkoc。 - 诊断/OTEL:将诊断跟踪上下文附加到导出的 OTEL 日志,使日志记录可与未来范围关联,而不添加保留的进程状态。感谢 @vincentkoc。 - 诊断/OTEL:通过智能体和工具钩子上下文传递每运行不可变诊断跟踪上下文,并从验证上下文父级导出诊断范围,而不保留全局跟踪状态。感谢 @vincentkoc。 - 诊断/OTEL:使导出器启动重启安全,以便配置重载不保留过时的 SDK、日志传输或诊断事件监听器。感谢 @vincentkoc。 - 诊断/OTEL:发出有界 exec-process 诊断并将其导出为 `openclaw.exec` 范围,而不暴露命令文本、工作目录或容器标识符。(#70424) 感谢 @jlapenna。 - 诊断/OTEL:支持 `OPENCLAW_OTEL_PRELOADED=1`,以便插件在保持 OpenClaw 诊断监听器连接的同时重用已注册的 OpenTelemetry SDK。(#70424) 感谢 @jlapenna。 - 诊断:发出带有跟踪上下文、计时和编辑错误元数据的结构化工具执行诊断事件。感谢 @vincentkoc。 - 诊断:发出带有跟踪上下文、时长和非消息错误元数据的结构化运行和模型调用诊断事件。感谢 @vincentkoc。 - CLI/Gateway:通过跳过只读状态路径上的插件加载,使 `gateway status` 启动更快。(#71364) 感谢 @andyylin。 ### 修复 - MCP:在运行结束时退役一次性嵌入式捆绑 MCP 运行时,当运行时工具允许列表无法到达捆绑 MCP 工具时跳过捆绑 MCP 启动,并为泄漏的会话运行时添加 `mcp.sessionIdleTtlMs` 空闲驱逐。修复 #71106、#71110、#70389 和 #70808。 - Gateway/重启延续:在删除重启标记前将重启延续持久交付到会话传递队列,崩溃重启后恢复排队延续工作,并在无通道路由在重启后存活时回退到仅会话唤醒。(#70780) 感谢 @fuller-stack-dev。 - 智能体/工具结果修剪:针对 void 或未定义工具处理器结果创建的畸形 `{ type: "text" }` 块,强化工具结果字符估计器和上下文修剪循环;序列化非字符串文本负载以进行大小核算,使其无法作为零大小绕过修剪。修复 #34979。(#51267) 感谢 @cgdusek。 - 守护进程/service-env:在 macOS 和 Linux 上生成的 gateway 服务 PATH 中添加 Nix Home Manager 配置文件 bin 目录,尊重 `NIX_PROFILES` 从右到左优先级,未设置时回退到 `~/.nix-profile/bin`。修复 #44402。(#59935) 感谢 @jerome-benoit。 - 飞书:HTTP 400 启动失败后回退流式卡片创建,使不受支持的卡片设置回退而不延迟每条消息。修复 #56981。感谢 @JinnanDuan。 - 飞书/话题组:通过 `thread_id` 键控原生飞书/ Lark 话题组会话,使起始消息和具有不同 `root_id` 格式的回复保持在相同的 `group_topic` 对话中。修复 #71438。感谢 @1335848090。 - 飞书:在空闲关闭流式卡片且最终负载到达前抑制重复最终卡片传递。(#68491) 感谢 @MoerAI。 - Signal:保留发送者附件文件名并从这些文件名解析缺失的 MIME 类型,使无 `contentType` 的 Linux `signal-cli` 语音笔记仍能进入音频转录。修复 #48614。感谢 @mindfury。 - Telegram/智能体:当回复已通过消息工具提交后,抑制幽灵的“智能体无法生成响应”回退。(#70623) 感谢 @chinar-amrutkar。 - 模型/CLI:在 `openclaw models list` 中显示提供者运行时 `contextTokens` beside 原生 `contextWindow`,并使 `openai-codex/gpt-5.5` 与 Codex 的 272K 运行时上限加 400K 原生窗口对齐。修复 #71403。 - 仪表板/安全:避免将令牌化的控制 UI URL 或 SSH 提示写入运行时日志,使 gateway bearer 片段保留在通过 `logs.tail` 可读的控制台捕获日志之外。(#70029) 感谢 @Ziy1-Tan。 - 提供者/OpenRouter:将 DeepSeek 引用视为缓存 TTL 合格而不注入 Anthropic 缓存控制标记,使上下文修剪与 OpenRouter 管理的提示缓存对齐。(#51983) 感谢 @QuinnH496。 - 控制 UI/浏览器:延迟临时目录访问模式常量直到仅 Node 的临时目录解析运行,防止浏览器捆绑包在 `node:fs` 常量被存根时崩溃。(#48930) 感谢 @Valentinws。 - Discord/cron:从规范最终助手文本交付一次仅文本的隔离 cron 和心跳公告输出,避免流式块负载与最终答案包含相同内容时的重复 Discord 帖子。修复 #71406。感谢 @alexgross21。 - macOS Gateway:等待 launchd 重新加载退出的 Gateway LaunchAgent 后再引导修复回退,防止配置触发的重启使服务未加载。修复 #45178。感谢 @vincentkoc。 - macOS Gateway:容忍重启回退期间 launchctl bootstrap 的已加载退出,并在 bootstrap 后使用非杀死 kickstart,避免可能卸载 LaunchAgent 的第二次竞争。修复 #41934。感谢 @zerone0x。 - macOS Gateway:在重启回退 bootstrap 前重写过时的 LaunchAgent plists,匹配 `gateway restart` 必须重新注册 launchd 时的安装修复行为。感谢 @maybegeeker。 - TTS/钩子:为 `message_sending` 和 `message_sent` 钩子保留仅音频 TTS 转录,而不将转录渲染为媒体字幕。感谢 @zqchris。 - WhatsApp/TTS:通过共享媒体负载发送和 WhatsApp 出站适配器保留 `audioAsVoice`,使 `[[audio_as_voice]]` 回复负载在通过 `sendPayload` 路由时保持语音笔记意图。修复 #66053。感谢 @masatohoshino。 - 控制 UI/WebChat:从可见聊天历史中隐藏心跳提示、`HEARTBEAT_OK` 确认和仅内部运行时上下文回合,同时保留底层转录。修复 #71381。感谢 @gerald1950ggg-ai。 - 控制 UI/聊天:当最终历史刷新短暂返回较旧快照时,保持乐观的用户和助手尾部消息可见,防止消息卡片在下次刷新前闪烁消失。修复 #71371。感谢 @WolvenRA。 - Talk/TTS:从活动运行时注册表解析配置的扩展语音提供者,使 Talk 模式不再将有效的插件语音提供者拒绝为不受支持。 - 会话/子智能体:停止 stale 已结束运行和仅存储的子反向链接重新出现在 `childSessions` 中,同时保持实时后代和最近结束的子代可见。修复 #57920。 - 子智能体:在可恢复等待传输故障后恢复子会话而不暴露额外等待状态,并保持终端生命周期计时器排序确定性。(#71423) 感谢 @ZiPengWei。 - 子智能体:停止 stale 未结束运行永远计为活动或挂起,同时保留重启中止的可恢复子会话恢复。修复 #71252。感谢 @hclsys。 - Gateway/工具:允许 `POST /tools/invoke` 到达插件支持的目录工具(如 `browser`),当无核心实现时,同时仍为真实核心名称偏好内置工具。感谢 @chat2way。 - 浏览器/安全:要求 `operator.admin` 用于 `browser.request` gateway 方法,匹配该路由暴露的主机/浏览器节点控制权限。感谢 @RichardCao。 - 浏览器/配置文件:允许本地托管配置文件覆盖 `browser.executablePath`,以便不同配置文件可启动不同的基于 Chromium 的浏览器。感谢 @nobrainer-tech。 - 智能体/回放:在严格提供者回放前修复位移或缺失工具结果,对 OpenAI Responses 历史使用 Codex 兼容的 `aborted` 输出,并在重试前丢弃部分中止/错误传输回合。 - 浏览器/启动:每个配置文件去重并发懒启动调用,使同时浏览器工具请求不再竞争导致重复 Chrome 启动和 `PortInUseError`。(#61772) 感谢 @sukhdeepjohar。 - 浏览器/配置文件:崩溃或主机移动后通过清除死亡/外部锁并重试启动一次,从过时的 Chromium `Singleton*` 配置文件锁恢复。感谢 @seanc-dev。 - 浏览器/现有会话:保持 Chrome MCP 状态探测仅传输且临时,并重试过时缓存 Playwright 附加一次,使空闲配置文件检查不再毒化下一次真实附加。(#57245) 感谢 @josephbergvinson。 - Cron/exec:仅对 `delivery.mode="none"` 的静默 cron 作业抑制自动后台 exec 完成唤醒,同时保持 webhook 和公告运行可观察。(#71391) 感谢 @goldmar。 - 回复媒体:允许沙盒回复交付 OpenClaw 管理的 `media/outbound` 和 `media/tool-*` 附件,而不将其视为沙盒逃逸,同时对托管媒体根保持别名逃逸检查。修复 #71138。感谢 @mayor686、@truffle-dev 和 @neeravmakwana。 - CLI/智能体:通过将 gateway、插件和嵌入式回退诊断路由到 stderr(执行开始前),保持 `openclaw agent --json` stdout 专用于 JSON 响应。修复 #71319。 - 智能体/Gemini:重试仅推理、空和仅规划 Gemini 回合,而非让会话静默停滞。修复 #71074。(#71362) 感谢 @neeravmakwana。 - 提供者/DeepSeek:为回放的助手工具调用回合添加缺失的 `reasoning_content` 占位符,使现有会话切换到 `deepseek-v4-flash` 或 `deepseek-v4-pro` 不再触发提供者的 400 回放检查。修复 #71372。感谢 @yangyang1719。 - Exec 批准:允许裸命令名允许列表模式匹配 PATH 解析的可执行文件基本名称,而不信任 `./tool` 或绝对路径选择的二进制文件。修复 #71315。感谢 @chen-zhang-cs-code 和 @dengluozhang。 - 配置/恢复:当无效性限定于 `plugins.entries.*` 时跳过全文件最后已知良好回滚,在插件模式或主机版本偏差期间保留不相关的用户设置。修复 #71289。感谢 @jalehman。 - 智能体/工具:防止过时运行时快照覆盖已解析的回复运行配置,并允许空 Web 运行时元数据回退到配置的提供者自动检测,使标准和排队回合暴露相同的工具集。修复 #71355。感谢 @c-g14。 - 智能体/TTS:将解析的共享配置传入 `tts` 工具,使工具触发的语音使用配置的提供者和语音,而非回退到新鲜配置加载。 - 回复媒体:当相同媒体已通过块流发送时,从最终回复中剥离 `MEDIA:` 附件,防止重复 Telegram 语音笔记和文件。修复 #65468。感谢 @aurora-openclaw。 - 智能体/TTS:当工具生成的回复与精确 `NO_REPLY` 标记配对时保留语音媒体,剥离标记文本而非丢弃音频负载。修复 #66092。 - 压缩:对手动 `/compact` 尊重显式 `agents.defaults.compaction.keepRecentTokens`,重新蒸馏防护摘要而非雪球化先前摘要,并默认启用防护摘要质量检查。修复 #71357。感谢 @WhiteGiverMa。 - 会话:在加载时维护期间尊重配置的 `session.maintenance` 设置,而非回退到默认条目上限。修复 #71356。感谢 @comolago。 - 浏览器/沙盒:将解析的 `browser.ssrfPolicy` 传入沙盒浏览器桥,并在有效策略更改时刷新缓存桥,使沙盒浏览器导航尊重私有网络选择加入。修复 #45153 和 #57055。感谢 @jzakirov、@zuoanCo 和 @kybrcore。 - 浏览器/代理:保持 Gateway/提供者代理环境变量不代理 OpenClaw 管理的浏览器,使 `HTTP_PROXY` 和 `HTTPS_PROXY` 不再阻止普通浏览器导航。修复 #71358。感谢 @Sanjays2402。 - 智能体/MCP:使用 draft-aware 捆绑 MCP 客户端验证器验证 draft-2020-12 MCP 工具输出模式,使外部 MCP 服务器不再因缺失模式引用而失败目录/工具执行。修复 #68772 和 #70196。感谢 @mwiesen。 - 仪表板/Windows:通过系统 URL 处理器打开控制 UI 和 OAuth URL,无 `cmd.exe` 解析或基于 PATH 的 `rundll32` 查找,并拒绝非 HTTP 浏览器打开输入。修复 #71098。感谢 @Sanjays2402。 - 配置/doctor:在 SecretRef 凭证路径上拒绝遗留 `secretref-env:<ENV_VAR>` 标记字符串,并通过 `openclaw doctor --fix` 将有效标记迁移到结构化 env SecretRefs。修复 #51794。感谢 @halointellicore。 - 插件 SDK/浏览器:通过浏览器配置文件外观导出解析的浏览器标签页清理配置类型,保持 SDK 子路径合同对齐。 - 提供者/OpenAI:分离 API 密钥和 Codex 登录 onboarding 组,并在模型路由切换后避免回放过时的 OpenAI Responses 推理块。 - 提供者/OpenAI 兼容:仅对选择加入 `compat.supportsPromptCacheKey` 的提供者在 Completions 请求上转发 `prompt_cache_key`,保持默认代理负载不变。修复 #69272。 - 提供者/OpenAI 兼容:跳过自定义提供者的空或非对象流式块,而非在部分输出后使回合失败。修复 #51112。 - 提供者/OpenAI 兼容:将单数 MLX 风格 `finish_reason: "tool_call"` 视为工具使用而非提供者错误。修复 #61499。 - 文档/TTS:阐明遗留扁平 TTS 提供者配置块由 `openclaw doctor --fix` 修复,而非严格运行时模式在加载时接受。修复 #56220。 - 插件/OpenCode:为 OpenCode 图像理解剥离不支持的禁用 Responses 推理负载。修复 #70252。 - 插件/OpenCode/OpenCode Go:注册图像理解元数据,使图像工具可用于 OpenCode 目录中支持视觉的模型。修复 #70482 和 #61789。 - 插件/OpenCode Go:将默认 Go 目录模型更新为 `opencode-go/kimi-k2.6`。感谢 @masrlinu。 - 提供者/ElevenLabs:对 PCM 电话合成省略仅 MP3 的 `Accept` 头,使语音通话对 `pcm_22050` 的请求不再接收 MP3 音频。修复 #67340。感谢 @marcchabot。 - 提供者/MiniMax TTS:截断发送 T2A 请求前的分数音高覆盖,匹配 MiniMax 的整数音高合同同时保留分数速度和音量。修复 #62144。 - 提供者/MiniMax TTS:将语音笔记目标转码为 Opus,使飞书/Telegram 接收原生语音消息而非 MP3 文件附件。修复 #63540、#64134 和 #70445。 - 提供者/Microsoft TTS:即使另一个语音插件已注册,也保持允许列表捆绑语音提供者可发现,使 Edge/Microsoft TTS 可与 OpenAI 一起使用。修复 #62117 和 #66850。 - 提供者/Microsoft TTS:将 Edge TTS 标准化为 Microsoft 提供者后尊重遗留 `messages.tts.providers.edge` 语音设置。修复 #64153。 - 提供者/OpenRouter:添加使用 OpenAI 兼容 `/audio/speech` 端点和 `OPENROUTER_API_KEY` 的 OpenRouter TTS 提供者。修复 #71268。 - macOS Talk 模式:在回退到系统语音前,通过 gateway `talk.speak` 重试失败的本地 ElevenLabs 流播放,使配置的 ElevenLabs 语音在流播放失败时仍可播放。修复 #65662。 - 插件/语音通话:默认回收 stale 预应答呼叫,尊重 Twilio 媒体流播放的配置 TTS 超时,并使空电话音频失败而非作为静音完成。修复 #42071;取代 #60957。感谢 @Ryce 和 @sliekens。 - 插件/语音通话:当 Twilio、Telnyx 或 Plivo 将回退到回环/私有 webhook URL 时快速失败,防止呼叫以不可达回调端点开始。感谢 @artemgetmann。 - 插件/语音通话:当 barge-in 或流拆除清除播放队列时解析排队但未播放的 Twilio TTS 条目,防止等待 `queueTts()` 的呼叫者挂起。感谢 @kevinWangSheng。 - 插件/语音通话:使用提供者终止过期的恢复呼叫会话,并用仅剩余时长重启恢复最大时长计时器,防止 Gateway 重启后过时出站重试循环。修复 #48739。感谢 @mira-solari。 - 插件/语音通话:在 Telnyx 出站对话问候后启动提供者 STT,并将配置的 Telnyx 语音 ID 传递给 speak 操作。修复 #56091。感谢 @Roshan。 - 技能:当 `metadata.openclaw` 缺失时尊重遗留 `metadata.clawdbot` 要求和安装提示,使旧技能在所需二进制文件缺失时不再显示就绪。修复 #71323。感谢 @chen-zhang-cs-code。 - 浏览器/配置:在 Chromium 启动前展开 `browser.executablePath` 中的 `~`,使 home-相对自定义浏览器路径不再因 `ENOENT` 失败。修复 #67264。感谢 @Quratulain-bilal。 - 通道/流式:默认保持 Telegram 工具进度预览更新启用以匹配已发布行为,记录 `streaming.preview.toolProgress: false` 用于仅禁用那些状态行,并防止预览进度文本触发 Telegram Markdown 链接、Discord 提及或 Slack mrkdwn 提及。修复 #71320。感谢 @neeravmakwana。 - Gateway/会话:在原子重写前将过大的 `sessions.json` 复制到轮转备份,而非重命名实时存储,使旋转期间崩溃保持现有会话到转录映射权威。修复 #68229。感谢 @jjjojoj。 - 提供者/OpenAI 兼容:从代理负载中剥离 OpenAI 仅 Completions `store`,并允许 `extra_body`/`extraBody` 透传参数用于提供者特定请求字段。修复 #61826 和 #69717。 - Discord/子智能体:通过保持请求智能体公告路径主路径并在公告不产生可见输出时回退到直接线程发送,保留线程绑定完成交付。(#71064) 感谢 @DolencLuka。 - Discord/代理:使用 undici `FormData` 序列化代理多部分附件上传,使 Discord 媒体发送通过配置的 REST 代理工作。(#71383) 感谢 @TC500。 - 浏览器/工具:为 Chrome MCP 现有会话管理调用提供更长默认超时,将显式工具超时传递至标签页管理,并恢复过时选定页面 MCP 会话而非强制手动重置。 - 浏览器/沙盒:清理主智能体浏览器会话打开的闲置跟踪标签页,同时保留子智能体、cron 和 ACP 会话的活动标签页复用和生命周期清理。修复 #71165。感谢 @dwbutler。 - 插件/语音通话:跨进程插件上下文重用 webhook 运行时,避免当智能体工具或 CLI 命令在 Gateway 已拥有语音 webhook 端口时运行出现 `EADDRINUSE`。修复 #58115。感谢 @sfbrian。 - 插件/语音通话:在 `call.initiated` 应答接受的 Telnyx 入站呼叫控制支腿,使到达 OpenClaw 的 webhook 不再让呼叫者响铃直至挂断。修复 #58231 和 #40131。感谢 @KonsultDigital。 - 插件/语音通话:合并同一运行时实例上并发的 webhook 服务器启动,避免重叠启动路径竞争时的第二次 `listen()` 绑定。感谢 @education-01。 - 插件/语音通话:在嵌入式智能体运行前将语音响应会话固定到 `responseModel`,避免全局默认模型不同时的实时会话模型切换失败。修复 #60118。感谢 @xinbenlv。 - 插件/语音通话:添加 `agentId` 用于语音响应生成,使电话通话可使用专用智能体工作区而非始终通过 `main` 路由。修复 #42155。感谢 @TheOpie。 - 插件/语音通话:将嵌入式语音响应沙盒解析范围限定于选定语音智能体,使隐式 `main` 语音会话即使其他智能体定义沙盒 Docker 绑定也尊重 `agents.defaults.sandbox.mode: "off"`。修复 #56367。感谢 @crpol。 - 媒体工具:为媒体理解、图像/音乐/视频生成引用和 PDF 输入尊重配置的 Web 获取 SSRF 策略,使显式 RFC2544 选择加入覆盖 WebChat OSS 上传而不弱化默认值。修复 #71300。(#71321) 感谢 @neeravmakwana。 - 智能体/TTS:当结构化语音媒体已排队时,从详细聊天工具输出中抑制成功的口语转录,同时保留非内置工具名称冲突的文本输出。修复 #71282。感谢 @neeravmakwana。 - 插件/Google Meet:重用活跃 Meet 标签页跨无害 URL 查询差异,浏览器超时后恢复已打开标签页,为登录或权限阻止器公开手动操作细节,并让 `googlemeet recover-tab` 从终端检查配对浏览器节点。 - Cron/隔离会话:创建新鲜隔离运行时清除 stale 运行时、生命周期、认证、模型、exec、心跳、使用、权限、路由和交付工件,并持久化每运行会话行为作为快照,使旧基会话状态不再泄漏到新 cron 执行。感谢 @vincentkoc。 - Gateway/会话:从过时转录锁证据恢复被 Gateway 重启中断的主智能体回合,避免卡在 `status: "running"` 的会话而无需广泛启动后转录扫描。修复 #70555。感谢 @bitloi。 - Codex 批准:在将 MCP elicitation 批准标题、描述和显示参数转发到 OpenClaw 批准提示前清理它们。(#71343) 感谢 @Lucenx9。 - Codex 批准:保持命令批准响应在 Codex 应用服务器 `availableDecisions` 内,包括不提供 `decline` 的提示的拒绝/取消回退。(#71338) 感谢 @Lucenx9。 - Codex 测试框架:在绑定回合开始后拒绝无 `turnId` 或 `turn.id` 的同线程应用服务器通知,防止未范围事件改变或完成活动回复。(#71317) 感谢 @Lucenx9。 - 插件/Google Meet:在设置中包含实时 Chrome-node 就绪和 Parallels 恢复检查,使 stale 节点令牌或断开 VM 浏览器在智能体打开会议前可见。 - 上下文引擎:在上下文引擎窗口化和 `ownsCompaction` 引擎后保持防护压缩检查激活,使大转录可在提示提交前压缩而非等待提供者溢出。修复 #71325。 - 批准:在 Codex 权限提示和 exec 批准元数据中压缩结构化 home 目录路径为 `~`,而不将其作为单独高风险警告重复,同时保留文件系统根和通配符主机警告。 - 插件/运行时依赖:隔离用于捆绑插件运行时依赖修复的内部 npm 缓存,并让包更新刷新/验证已当前安装,使失败更新或 sudo doctor 运行可通过重新运行 `openclaw update` 修复。 - 智能体/删除:保持 `--json` 输出机器可读,并保留与另一智能体工作区重叠的工作区而非将共享状态移至回收站。修复 #70889 和 #70890。(#70897) 感谢 @kaseonedge。 - 浏览器/截图:通过主机和节点截图请求 honoring `timeoutMs`,绑定原始 CDP 截图命令,并避免普通视口截图的视口外 CDP 捕获,使 Windows Chrome 捕获不再挂起超过请求截止时间。修复 #68330。感谢 @Woodylai24。 - Telegram/模型选择器:通过提供者按钮浏览模型时显示配置的模型显示名称,匹配键入的 `/models <provider>` 输出。修复 #70560。(#71016) 感谢 @iskim77。 - 插件/运行时依赖:为打包/全局安装在外部运行时根中暂存捆绑插件运行时依赖,并在修复间保留已暂存依赖,避免包树更新竞争和升级后 npm 修剪。 - 插件/运行时依赖:在同步 npm 安装开始前记录捆绑插件运行时依赖暂存,并在之后包含耗时,使升级后首次 boot 不再在依赖修复时看起来挂起。 - 内存/Bedrock:AWS 凭证不可用时在自动内存嵌入选择中跳过 Bedrock,使 `memory_search` 可回退到词汇搜索而非在首次嵌入调用时失败。修复 #71143 通过 #71245。感谢 @bitloi。 - 智能体/故障转移:将嵌入式运行中止信号转发到提供者拥有的模型流,将隐式 LLM 空闲看门狗限制在长运行超时下,并将无可用重试定时的 429 响应标记为不可重试,使 GitHub Copilot 速率限制故障转移或快速表面而非挂起直至运行超时。修复 #71120。 - 插件/Google Meet:使会议创建默认加入,显式 URL 仅选择退出,使创建 Meet 的智能体也进入其中。 - Telegram/轮询:在长运行处理程序完成前持久化接受的更新偏移,使轮询器重启不重放已摄入更新,同时保持相同进程重试处理程序失败。 - Telegram/配置:在打包插件清单中包含生成的 Telegram 通道配置模式元数据,以便论坛主题/组配置在运行时加载前被接受。 - CLI/Claude:在严格 Claude CLI MCP 捆绑配置中包含用户配置的 `mcp.servers`,匹配 Pi 运行同时保留 OpenClaw 回环覆盖。修复 #70909。感谢 @keishingu。 - 浏览器/工具:防止显式 AI 快照继承高效角色快照默认并保留数字 Playwright AI 引用,使 `--format ai` 仍是真实 AI 快照路径。修复 #62550。感谢 @ly85206559。 - Gateway/配置:当 `${VAR}` env 引用在磁盘上恢复时,保持进程内配置补丁重载比较在解析源快照上,避免未更改 gateway/插件秘密的虚假全 gateway 重启。修复 #71208。感谢 @robbiethompson18。 - Slack/消息:序列化每个目标的写客户端请求和整个出站发送,使快速多消息 Slack 回复保持发送顺序。修复 #69101。(#69105) 感谢 @nightq 和 @ztexydt-cqh。 - Slack/消息:保持 Slack bot 令牌不在内部消息排序和 DM 缓存键中。 - Slack/exec 批准:通过 Gateway 而不是交付 `/approve ...` 作为纯智能体文本来解析原生批准按钮点击,如果 Gateway 解析失败则保留重试按钮。修复 #71023。(#71025) 感谢 @marusan03。 - 浏览器/工具:将浏览器医生诊断暴露给智能体,并扩展 `openclaw doctor` 浏览器就绪说明以涵盖托管 Chromium 启动前提。(#62948, #62936) 感谢 @seanc-dev。 - Slack/文件:将非图像 `download-file` 结果作为本地文件路径返回而非图像负载,并在入站文件占位符中包含 Slack 文件 ID,使智能体可调用 `download-file`。修复 #71212。感谢 @teamrazo。 - 浏览器控制:将独立回环认证范围限定于解析的活动 gateway 凭证,并在密码模式无解析密码时失败关闭,使非活动令牌或密码不再授权浏览器路由。修复 #65626。(#65639) 感谢 @coygeek。 - 控制 UI/Codex 测试框架:发出原生 Codex 应用服务器助手和生命周期完成事件,使实时 webchat 运行停止旋转而无需转录重新加载回退。(#70815) 感谢 @lesaai。 - 智能体/会话:持久化嵌入式智能体运行的运行时解析上下文预算,使 Codex GPT-5.5 会话保持目录/运行时上下文上限而非回退到通用 200k 状态值。修复 #71294。感谢 @tud0r。 - 智能体/工具:在模型提交前当显式工具允许列表解析为无可用工具时使运行失败,防止文本-only 幻觉工具结果(如未注册的插件命令)。修复 #71292。 - 智能体/嵌入式:当嵌入式运行无提示、回放历史或提示本地图像时跳过提供者提交,防止空 OpenAI Responses 请求将提供者错误暴露到用户通道。修复 #71130。 - 提供者/Google:将 `/think adaptive` 映射到 Gemini 动态思考而非固定中/高预算,使用 Gemini 3 的提供者默认和 Gemini 2.5 的 `thinkingBudget: -1`。修复 #71316。 - 提供者/MiniMax:保持 M2.7 聊天模型元数据仅文本,使图像工具请求通过 `MiniMax-VL-01` 而非 Anthropic 兼容聊天端点路由。修复 #71296。感谢 @ilker-cevikkaya。 - Discord/子智能体:将运行时配置传递到线程绑定原生子智能体绑定,并在辅助边界要求它,使 Discord 通道解析保持账户感知配置。修复 #71054。(#70945) 感谢 @jai。 - Slack/Assistant:当元数据识别人工发送者时接受 Slack Assistant DM `message_changed` 事件,同时继续丢弃自创作 bot 编辑。修复 #55445。感谢 @AlfredPros。 - Slack/原生流式:在 `chat.startStream`/`appendStream` 前抑制仅推理负载,使 Claude 扩展思考块不再显示为可见 Slack 消息。修复 #59687。感谢 @vision-ifc。 - Slack/块回复:当 `replyToMode` 为 `first` 时保持多部分块交付在第一个 Slack 回复线程中,匹配文本回复线程而非将后续块泄漏到通道。修复 #49341。感谢 @pholmstr 和 @xiwuqi。 - Slack/线程广播:将 `thread_broadcast` 事件处理为用户消息,使“同时发送到通道”的回复到达智能体而非成为仅元数据系统事件。修复 #56605 和 #4351。感谢 @clawSean 和 @jlowin。 - Slack/线程:选择 Slack `thread_ts` 值时忽略内部回复 ID,使恢复回复保持真实 Slack 线程锚点而非泄漏到通道根。修复 #68790。感谢 @MonkeyLeeT 和 @martingarramon。 - 智能体/故障转移:阻止无主体 HTTP 400/422 代理故障默认 `"format"` 分类,使嵌入式重试暴露不透明提供者故障而非陷入压缩循环。修复 #66462。(#67024) 感谢 @altaywtf 和 @HongzhuLiu。 - 插件/加载器:对只读插件能力查找使用缓存的发现模式快照加载,将快照缓存与活动 Gateway 注册表隔离,并使相同插件通道/HTTP 路由重新注册幂等,使重复快照或热重载路径不再运行完整插件副作用或累积重复表面。修复 #51781、#52031、#54181 和 #57514。感谢 @livingghost、@okuyam2y、@ShionEria 和 @bbshih。 - 插件/加载器:在 gateway 可绑定 boot 加载后重用兼容活动 Gateway 注册表进行广泛运行时插件确保调用,使非捆绑插件不再在同一 boot 路径期间重新运行 `register()`。修复 #69250。感谢 @markthebest12。 - 插件/钩子:当后续默认模式插件加载激活不同注册表时保持 gateway 可绑定钩子运行器安装,跨运行时缓存丢失保持 Gateway 子智能体生命周期钩子。修复 #63166。 - 插件/钩子:在入站通道分发前刷新实时 Gateway 运行时钩子,使外部安装插件在范围启动插件加载后保持 `message_received`、`before_dispatch` 和回复钩子活动。修复 #71167。 - 媒体/输入:通过共享媒体加载器解析规范入站媒体引用,使原生提示图像回放和显式图像/PDF 工具可读取 `media://inbound/<id>` 和工作区仅托管入站回放路径。 - 媒体/工具:集中媒体引用方案分类,用于图像、PDF、图像生成、视频生成和音乐生成输入,使托管入站引用被一致接受。 - 控制 UI/媒体:在提供助手媒体预览前解析规范入站媒体引用,使 `media://inbound/<id>` 源不再通过访问检查但文件打开失败。 - 认证/Codex:从 Codex CLI 凭证引导新鲜安装的 `openai-codex:default` 而不稍后替换本地刷新的 OpenClaw OAuth 令牌。修复 #71305。感谢 @Gforce10-design。 - 插件 SDK/工具结果转换:绑定中间件 `details`,验证就位结果变异,并用规范 `error` 状态标记失败封闭中间件回退。感谢 @vincentkoc。 - Discord/gateway:防止 Carbon gateway 注册与生命周期重新连接竞争时启动卡在 `awaiting gateway readiness`。修复 #52372。(#68159) 感谢 @IVY-AI-gif。 - Discord/gateway:监督 Carbon 的异步 gateway 注册 promise,使致命 Discord 元数据故障通过启动表面而非进程级未处理拒绝暴露。(#62451) 感谢 @safzanpirani。 - Discord/gateway:将 websocket 帧活动记录为传输活跃度,使空闲但健康的 Discord gateways 在用户消息间不再显得陈旧。(#68213) 感谢 @bmadwaves。 - Slack/流式:在原生或草案预览流式拥有回合时抑制块回复,防止块流式也启用时重复 Slack 交付。解决 #56675。感谢 @hsiaoa。 - 插件/缓存:在加载器缓存命中上恢复插件命令和交互处理程序注册,而不重置交互回调去重,使缓存外部插件在重载后保持斜杠命令和回调处理程序可用。修复 #71100。感谢 @BomBastikDE。 - Gateway/OpenAI 兼容:当智能体运行仅具有最后一次调用使用元数据时,为 `/v1/chat/completions` 报告非零令牌使用。修复 #71118。(#71242) 感谢 @RenzoMXD。 - 插件 SDK/工具结果转换:将测试框架工具结果中间件限制为捆绑插件,中间件错误失败封闭,验证重写结果形状,保留 Pi 每调用 ID,并将 Codex 媒体信任检查锚定到原始工具来源。感谢 @vincentkoc。 - Gateway/MCP 回环:在 `127.0.0.1/mcp` `tools/list` 和 `tools/call` 上应用仅所有者工具策略和运行前工具调用钩子,使非所有者 bearer 调用者不再查看或调用仅所有者工具(如 `cron`、`gateway`、`nodes`),匹配现有 HTTP `/tools/invoke` 和嵌入式智能体路径。(#71159) 感谢 @mmaps。 - Codex 测试框架/安全:等待最终应用服务器批准决定并清理批准预览文本,使原生 Codex 权限提示无法被早期占位符决定解决或渲染不安全终端/控制内容。(#70751, #70569) 感谢 @Lucenx9。 - 提供者/语音安全:通过受保护的获取路径路由 ElevenLabs TTS 和 OpenAI Realtime 浏览器会话密钥创建,在保持语音面 SSRF 保护的同时保留提供者调用。 - 智能体/OpenAI WS:匹配 Codex 的 Responses WebSocket 延续策略,仅发送严格增量后续输入并带 `previous_response_id`,回退到完整上下文当重放链或请求形状不同时。修复 #44948。感谢 @hss-oss。 - 插件/Google Chat:在所有候选失败后记录 webhook 认证拒绝原因,并警告 add-on `appPrincipal` 值与配置不匹配时。修复 #71078。(#71145) 感谢 @luyao618。 - 模型/配置:从 configure 重新运行提供者认证时保留现有默认模型,同时保持显式默认设置命令权威。修复 #70696。(#70793) 感谢 @Sathvik-1007。 - 配置/插件:在验证、生成模式元数据和插件策略检查中接受 `plugins.entries.*.hooks.allowConversationAccess`,使受信任外部插件可启用对话访问钩子(如 `agent_end`)而无需本地模式补丁。修复 #71215。(#71221) 感谢 @BillChirico。 - 模型/运行时:每个提供者显示一个模型提供者选择,并将 Codex、Claude CLI 和 Gemini CLI 执行移至显式运行时选择,同时保持仅回退遗留运行时引用不变。感谢 @vincentkoc。 - 插件/运行时依赖:修复捆绑运行时依赖时尊重显式插件和通道禁用,使 doctor 和健康检查不再为禁用配置通道安装依赖。感谢 @vincentkoc。 - 诊断/OTEL:通过有界诊断日志事件而非直接日志传输钩子导出日志。感谢 @vincentkoc。 - WhatsApp/插件:支持入站 `message_received` 钩子的显式选择加入,具备规范通道、对话、会话和发送者字段。感谢 @vincentkoc。 - 通道/设置:保持捆绑设置条目依赖轻量,且仅在登录实际需要时分阶段 WhatsApp 运行时依赖,使首次运行设置和只读通道发现避免未使用 SDK 导入。 - Slack/HTTP:将 webhook 处理程序保留在进程全局注册表中,使 HTTP 模式在插件加载器/原生导入拆分后存活,且 `/slack/events/<account>` 在记录为活动后不再返回 404。修复 #67955、#46245 和 #46246。感谢 @chrisabad 和 @cesararevalo。 - 诊断:强化工具和模型诊断事件以抵抗恶意错误、阻塞监听器和不安全稳定性原因字段。感谢 @vincentkoc。 - 插件/onboarding:在持久化 `plugins.installs` 中记录本地插件安装源元数据而不重复原始绝对本地路径,同时保留链接加载路径清理。(#70970) 感谢 @vincentkoc。 - 群聊/静默回复:收紧 `NO_REPLY` 提示引导,使群组在沉默是预期结果时保持安静而不叙述沉默或发出回退 chatter。(#70954, #71209) 感谢 @Takhoffman。 - WhatsApp/群组+直接:在特定 `groups.<id>` 或 `direct.<peerId>` 条目上设置 `systemPrompt: ""` 现在抑制通配符系统提示而非回退到它,使用户可为特定群组或对等点禁用全局提示。(#70381) 感谢 @Bluetegu。 - 浏览器/工具:告诉智能体不在现有会话类型、评估和其他拒绝超时覆盖的 Chrome MCP 操作上传递每调用 `timeoutMs`。 - 浏览器/工具:使用 Playwright 当前 AI aria 快照 API 用于 `refs="aria"`,并在节点浏览器无法提供 aria 引用时回退到角色引用,使智能体仍可检查和点击控件(如 Google Meet 准入按钮)。 - 浏览器/工具:公开稳定 `tabId` 句柄(如 `t1`)加可选标签页标签,并接受这些句柄于任何需要浏览器标签页目标处。 - 浏览器/工具:在标签页负载中首先返回 `suggestedTargetId`,使智能体自然复用标签或稳定标签句柄而非原始 DevTools ID。 - 浏览器/工具:捆绑 `browser-automation` 技能,包含多步骤快照、稳定标签、过时引用和手动阻止循环,供智能体控制页面。 - 浏览器/工具:添加 `openclaw browser doctor`、URL 扩展快照、直接标记截图和更清晰的标签页目标错误,供意外传递位置索引的智能体。 - 插件/Google Meet:使用浏览器自动化分类和清除 Meet 入口阻止器(如麦克风选择插页),并在重试时重用进行中创建标签页而非打开重复项。 - Codex/GPT-5.4:强化原生和嵌入式运行时路径间的回退、认证配置文件、工具模式和回放边缘情况。(#70743) 感谢 @100yenadmin。 - 模型/回退:在模型切换前解析裸回退模型提供者 ID,使配置回退链在回退命名无显式提供者前缀时保持工作。 - 语音通话/Telnyx:保留入站/出站回调元数据并从 Telnyx 当前 `transcription_data` 负载读取转录文本。 - 提供者/DeepSeek:连接 V4 思考控制和 OpenAI 兼容回放策略,使后续回合保留 DeepSeek `reasoning_content`,而 None/off 思考路径剥离回放推理字段。修复 #70931。感谢 @lsdsjy。 - 提供者/GitHub Copilot:在 Anthropic、Responses 和内置压缩总结路径间对齐 Copilot 请求头,包括工具结果和图像后续回合,但不启用未验证 Responses 延续。 - Codex 测试框架:为原生应用服务器运行发送详细工具进度到聊天通道,匹配 Pi 测试框架 `/verbose on` 和 `/verbose full` 行为。(#70966) 感谢 @jalehman。 - Codex 模型:获取分页 Codex 应用服务器模型目录,标记截断的 `/codex models` 输出,并保持 ChatGPT OAuth 默认在 `openai-codex/gpt-5.5` 路由而非 OpenAI API 密钥路由。 - Codex 状态:为原生 `codex/*` 会话将 Codex CLI OAuth 报告为 `oauth (codex-cli)` 而非显示未知认证。修复 #70688。感谢 @jb510。 - 通道/CLI:接受显式共享密钥、基础 URL 和认证目录设置标志,并将遗留 Nextcloud Talk `--url`/`--token` 添加命令映射到捆绑插件设置输入。修复 #61759 和 #61923。 - 模型/CLI:保持 `openclaw models list` 只读同时仍显示符合配置提供者行,使列出模型不再重写每智能体 `models.json`。(#70847) 感谢 @shakkernerd。 - 智能体/传输:将配置的尝试超时传播到受保护的每请求调度器,使慢本地 LLM 调用(如 Ollama)不再在 Undici 默认 60 秒主体超时失败。修复 #70829。(#70831) 感谢 @DranboFieldston。 - 插件/提供者:在捆绑提供者清单中镜像运行时认证选择,并在插件运行时加载前检测 `KIMI_API_KEY` 用于 Moonshot/Kimi 网络搜索。感谢 @vincentkoc。 - Gateway/聊天:将 chat.send 运行注册到聊天运行注册表,使生命周期错误事件到达客户端而非被静默丢弃,修复卡住 'waiting' 状态和 /abort 报告无活动运行。(#69747) 感谢 @wangshu94。 - 插件/QQ Bot:默认启用捆绑 qqbot 插件,使其运行时依赖 `@tencent-connect/qqbot-connector` 在首次启动时安装,解除动态导入连接器前任何账户配置的 QR 码绑定流程阻塞。(#71051) 感谢 @cxyhhhhh。 - Gateway/智能体 RPC:将活动 `agent` 运行注册到聊天中止控制器映射,使 `chat.abort` 和 `sessions.abort` 可中断它们,匹配 `chat.send` 行为并解除通过公共 `agent` RPC 驱动 Gateway 的外部运行时阻塞。修复 #71128。(#71214) 感谢 @bitloi。 - Matrix/CLI:将解析的运行时配置传入验证命令,使 `openclaw matrix verify status` 及同级验证子命令在获取 Matrix 客户端前不再崩溃。修复 #70992。(#71102) 感谢 @luyao618。 - Gateway/启动:在通道监控报告就绪前等待启动辅助程序,减少 Discord 和插件启动竞争,同时保持 gateway boot 可观测性完整。 - 插件/Google Meet:报告 Chrome 加入所需手动操作,使用浏览器自动化进行 Meet 入口,并持久化私有 WS 节点选择加入,使配对节点实时会话保持其预期网络策略。 - Slack:将原生流回退回复通过正常分块发送器路由,使长缓冲 Slack Connect 响应不被丢弃或重复。(#71124) 感谢 @martingarramon。 - WhatsApp:在智能体分发前转录接受的语音笔记,同时保持口语转录不在命令授权中。(#64120) 感谢 @rogerdigital。 - 插件/CLI:在发现模式插件加载期间公开通道插件 CLI 描述符,使快照注册表在激活完整运行时保持通道命令可见。(#71309) 感谢 @gumadeiras。 - WhatsApp:交付工具结果回复生成的媒体,同时仍抑制仅文本工具 chatter。(#60968) 感谢 @adaclaw。 - 配置/智能体:在严格配置验证中接受 `agents.list[].contextTokens`,使每智能体覆盖在热重载中存活,使 `/status` 反映配置的模型窗口而非 200k 回退。修复 #70692。(#71247) 感谢 @statxc。 - 心跳:在心跳提示中包含异步 exec 完成详情,使命令完成通知传递实际输出。(#71213) 感谢 @GodsBoy。 - 内存搜索:将会话可见性和智能体对智能体策略应用于会话转录命中,并保持 `corpus=sessions` 排名在结果限制前范围限定于会话集合。(#70761) 感谢 @nefainl。 - 智能体/会话:阻止会话写锁超时进入模型故障转移,使本地锁竞争直接表面而非级联跨提供者。(#68700) 感谢 @MonkeyLeeT。 - 自动回复:通过 `message_sending` 钩子运行入站回复交付,使插件可在发送前转换或取消生成的回复。(#70118) 感谢 @jzakirov。 - CI/发布检查:通过步骤环境变量传递工作流输入和矩阵值,而非直接嵌入 `run:` shell 命令,减少跨 OS 发布检查工作流中的模板注入面。(#66884) 感谢 @alexlomt。