← 返回更新日志

OpenClaw v2026.4.25-beta.1 预发布

2026-04-26 · GitHub 原文
## 2026.4.25 ### 亮点 - 语音回复获得完整的 TTS 升级:`/tts latest`、聊天范围自动 TTS 控制、人格、每代理/每账户覆盖,以及新增 Azure Speech、小米、本地 CLI、Inworld、Volcengine 和 ElevenLabs v3 提供商支持。感谢 @leonchui、@zoujiejun、@solar2ain、@cshape、@xuruiray、@itsuzef 和 @barronlroth。 - 插件启动和安装路径移至冷持久化注册表,减少广泛的清单扫描,同时使插件更新、修复、提供商发现和安装元数据更具确定性。感谢 @vincentkoc 和 @shakkernerd。 - OpenTelemetry 覆盖范围扩展至模型调用、令牌使用、工具循环、测试 harness 运行、执行进程、出站交付、上下文组装和内存压力,并带有边界低基数属性。感谢 @vincentkoc、@jlapenna、@Lidang-Jiang 和 @oc-factus。 - 浏览器自动化获得更安全的标签页 URL、支持 iframe 的角色快照、CDP 就绪调优、无头单次启动以及针对慢速主机的更深入浏览器诊断探测。感谢 @beat843796 和 @BenediktSchackenberg。 - 控制 UI 和设置流程增加 PWA/Web Push 支持、Crestodian 首次运行修复、TUI 设置、上下文模式选择以及更短的启动问候。感谢 @eduardocruz、@SebTardif 和 @kevinlin-openai。 - 安装/更新加固覆盖 Windows、macOS、Linux、Docker、捆绑插件运行时依赖、Node 服务重启、LaunchAgent 令牌轮换以及混合版本网关验证。感谢 @Kobevictor、@igormf、@abhinas90、@jsompis、@Solvely-Colin 和 @gucasbrg。 ### 变更 - TTS/WhatsApp:添加 `/tts latest` 朗读支持(含重复抑制)和 `/tts chat on|off|default` 会话范围自动 TTS 覆盖,完成当前聊天回复的按需语音备注用户体验。修复 #66032。 - TTS/频道:通用化解决频道和账户 TTS 覆盖,使飞书和 QQBot 账户能够深度合并 `channels.<channel>.accounts.<id>.tts` 覆盖全局和每代理 TTS 配置。感谢 @sahilsatralkar。 - TTS/代理:允许 `agents.list[].tts` 覆盖全局 `messages.tts` 以实现每代理语音,并使 `/tts audio`、`/tts status` 和 `tts` 代理工具遵循活动语音/提供商覆盖,同时保持共享提供商凭据和偏好设置在现有 TTS 配置界面中。 - 提供商/Azure Speech:添加 Azure Speech 作为捆绑 TTS 提供商,支持 Speech 资源认证、语音列表、SSML 转义、原生 Ogg/Opus 语音备注输出和电话输出。(#51776) 感谢 @leonchui。 - Google Meet:添加日历支持的出勤导出工作流、导出清单、试运行预览以及会议记录的工具对等性。 - 控制 UI:添加 PWA 安装支持和网关聊天的 Web Push 通知。(#44590) 感谢 @eduardocruz。 - 浏览器自动化:在代理响应中添加安全标签页 URL,以及支持 iframe 的 CDP 原生角色快照后备、光标可点击检测、目标附加准备和 `openclaw browser doctor --deep` 实时快照探测。 - CLI/图像生成:在 `openclaw infer image generate` 和 `openclaw infer image edit` 中公开通用 `--background`,保留 `--openai-background` 作为 OpenAI 别名,并让 fal 图像生成遵循 `--output-format png|jpeg`。 - 浏览器/配置:允许本地管理的 Chrome 启动发现,并为 Raspberry Pi 等较慢主机提高启动后 CDP 就绪超时。修复 #66803。感谢 @beat843796。 - Discord:允许 `channels.discord.voice.model` 覆盖用于语音频道响应的 LLM,同时保持 STT 和 TTS 在其现有媒体设置上。(#64368) 感谢 @mrdavey。 - 浏览器/CLI:添加 `openclaw browser start --headless` 作为单次本地管理浏览器启动覆盖,无需重写持久化的浏览器配置。感谢 @BenediktSchackenberg。 - CLI/Crestodian/TUI:添加首次运行设置助手、本地规划器后备、全 TUI 交互式 Crestodian、启动进度指示器、上下文模式选择器以及更短的启动问候。(#71720, #71760) 感谢 @SebTardif 和 @kevinlin-openai。 - 插件:在包安装/更新期间自动迁移本地插件注册表,将安装元数据保留在插件索引中,同时为新冷注册表路径索引现有插件清单。感谢 @vincentkoc 和 @shakkernerd。 - 插件/诊断:使 `openclaw doctor --fix` 在需要时刷新插件索引和冷注册表索引,而不将插件安装记录视为已创作的配置。感谢 @vincentkoc 和 @shakkernerd。 - 插件/钩子:添加 before-agent-finalize 钩子、cron `jobId` 钩子上下文、边界本机权限指纹以及 Codex MCP 钩子中继支持。(#71765, #71758, #71707) 感谢 @vincentkoc 和 @pashpashpash。 - 插件/tokenjuice:将捆绑的 tokenjuice 运行时升级至 0.6.3。感谢 @vincentkoc。 - 诊断/OTEL:使模型调用 GenAI 跨度属性与 OpenTelemetry 稳定性选择加入语义一致,默认保留遗留 `gen_ai.system`,同时在 `OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental` 下发出 `gen_ai.provider.name`。感谢 @vincentkoc。 - 诊断/OTEL:支持通过配置或标准 OTEL 环境变量进行信号特定的 OTLP 端点覆盖(跟踪、指标、日志)。感谢 @vincentkoc。 - 诊断/OTEL:发出边界遥测导出器运行状况诊断,并导出启动和日志导出失败的诊断,而不导出原始错误文本。感谢 @vincentkoc。 - 诊断/OTEL:将代理 harness 生命周期遥测导出为边界 `openclaw.harness.run` 跨度和 `openclaw.harness.duration_ms` 指标,以便 QA-lab、Codex 和未来的 harness 共享一个跟踪形状。感谢 @vincentkoc。 - 诊断/跟踪:将受信任的模型调用跟踪上下文中的 W3C `traceparent` 标头传播到提供商传输,同时替换调用方提供的 traceparent 值。感谢 @vincentkoc。 - 诊断/Prometheus:添加捆绑的 `diagnostics-prometheus` 插件,具有受保护的网关抓取路由,用于低基数诊断指标。感谢 @vincentkoc。 - 插件/CLI:添加 `openclaw plugins registry` 用于显式持久化注册表检查和 `--refresh` 修复,而无需正常启动重新扫描插件位置。感谢 @vincentkoc。 - 插件/CLI:使 `openclaw plugins list` 默认读取冷持久化注册表快照,将模块感知诊断留给 `plugins doctor` 和 `plugins inspect`。感谢 @vincentkoc。 - 插件/启动:将网关启动插件规划移至版本化的冷注册表索引,并为早于启动元数据的旧注册表文件提供安装后修复。感谢 @vincentkoc。 - 插件/启动:通过注册表别名标准化启动和提供商插件启用,使启动路径不需要遗留清单别名扫描。感谢 @vincentkoc。 - 提供商/插件:从冷插件注册表解析提供商所有权、提供商发现范围和目录钩子提供商 ID,而不是在这些路径上重新扫描清单。感谢 @vincentkoc。 - 插件/注册表:将已安装插件索引记录专注于安装/状态/加载路径,并从索引到插件的清单范围解析插件能力。感谢 @shakkernerd。 - 插件/注册表:通过已安装插件索引路由冷清单和能力查找,使设置、频道、配置、机密、诊断和提供商元数据路径在运行时执行前避免广泛的插件根扫描。感谢 @shakkernerd。 - CLI/模型:对于静态清单支持的提供商,通过已安装插件索引加载目录行,而不是广泛的清单扫描或运行时抑制钩子,从而加速 `models list --all --provider <id>`。感谢 @shakkernerd。 - CLI/模型:使用 OpenClaw 提供商索引预览行作为可安装提供商的最终冷后备,同时将用户配置、已安装清单和刷新缓存行保留在提供商索引元数据之上。感谢 @vincentkoc。 - 提供商/插件:在冷清单/安装元数据上保留入门和 auth-choice 设置列表,并为尚未安装的提供商插件添加提供商索引安装元数据。感谢 @vincentkoc。 - 提供商/插件:在冷清单元数据上保留提供商设置指南和配置 auth 导入,并对设置/配置列表路径上的静态提供商运行时导入添加回归防护。感谢 @vincentkoc。 - CLI/能力:在 `model auth login` 实际运行之前,保持能力命令注册不导入模型 auth 运行时。感谢 @vincentkoc。 - CLI/配置:在冷插件注册表元数据上保留 web-search 配置提示,直到用户选择托管搜索设置。感谢 @vincentkoc。 - 插件/聊天命令:在 `/plugins enable` 和 `/plugins disable` 后刷新持久化插件注册表,匹配 CLI 变更路径。感谢 @vincentkoc。 - 插件/兼容性:将 `OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY` 标记为已弃用的紧急开关,并引导操作员使用注册表修复。感谢 @vincentkoc。 - 插件/兼容性:扩展中央兼容性注册表,包含日期所有者、替换以及遗留 SDK、清单、设置、注册表迁移和代理运行时表面的最多三个月移除目标。感谢 @vincentkoc。 - 插件/注册表:当插件策略与当前配置不匹配时忽略陈旧的持久化注册表读取,并用“请勿编辑”警告标记生成的注册表文件。感谢 @vincentkoc。 - 配置/插件:在冷清单元数据上保持插件命令别名验证,而不是导入运行时别名解析器。感谢 @vincentkoc。 - 安全/插件:在冷配置、env 和清单元数据上保持 web-search 凭据存在检查,而不是导入 web-search 提供商运行时。感谢 @vincentkoc。 - 诊断/OTEL:将提供商请求标识作为边界哈希显示在模型调用诊断和跨度事件上,而不导出原始请求 ID 或指标标签。感谢 @Lidang-Jiang 和 @vincentkoc。 - 插件/诊断:添加仅元数据的 `model_call_started` 和 `model_call_ended` 钩子,用于提供商/模型调用遥测,而不暴露提示、响应、标头、请求正文或原始提供商请求 ID。感谢 @vincentkoc。 - 诊断/OTEL:发出边界上下文组装诊断,并导出 `openclaw.context.assembled` 跨度,包含提示/历史大小,但不含提示、历史、响应或会话密钥内容。感谢 @vincentkoc。 - 诊断/OTEL:导出现有工具循环诊断为 `openclaw.tool.loop` 计数器和跨度,不含循环消息、会话标识符、参数或工具输出。感谢 @vincentkoc。 - 诊断/OTEL:导出诊断内存样本和压力作为边界内存直方图、计数器和压力跨度,以帮助发现泄漏回归,不含会话或负载数据。感谢 @vincentkoc。 - 诊断/OTEL:添加 GenAI `gen_ai.client.token.usage` 直方图用于输入/输出模型使用,同时将会话标识符和聚合缓存计数器排除在语义指标之外。感谢 @vincentkoc。 - 诊断/OTEL:在 OpenClaw 令牌指标上添加边界 `openclaw.agent` 标签,以便每代理 Grafana 仪表板可以分组使用情况,而不导出会话标识符。感谢 @oc-factus。 - 插件/安装:将管理的插件安装元数据合并到状态管理的插件索引 `plugins/installs.json` 中,替换临时 `plugins/installed-index.json` 路径,并移除 `plugins.installs` 作为已创作的配置表面。感谢 @vincentkoc 和 @shakkernerd。 - 诊断/OTEL:添加 GenAI `gen_ai.client.operation.duration` 直方图,用于模型调用延迟(秒),带有边界提供商/模型/API 和错误属性。感谢 @vincentkoc。 - 诊断/OTEL:将 GenAI 使用令牌属性添加到模型使用跨度,包括缓存读/写输入令牌计数,不含会话标识符或提示/响应内容。感谢 @vincentkoc。 - 诊断/OTEL:在模型使用跨度中包含边界 GenAI 操作、提供商和请求模型属性,使令牌使用保持自描述,不含诊断标识符。感谢 @vincentkoc。 - 诊断/OTEL:保持模型使用跨度 GenAI 提供商属性与现有语义约定选择加入策略一致,除非启用最新实验 GenAI 约定,否则使用遗留 `gen_ai.system`。感谢 @vincentkoc。 - 诊断/OTEL:在 GenAI 令牌使用指标上保持 `gen_ai.request.model` 存在,当模型使用事件不包含模型时,带有边界 `unknown` 后备。感谢 @vincentkoc。 - 文档/OTEL:记录 GenAI 令牌和模型调用持续时间指标、模型使用跨度属性以及 `OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental` 提供商属性行为。感谢 @vincentkoc。 - 文档:使用结构化步骤、标签页和手风琴内容刷新 MCP、模型提供商、诊断、故障排除、BlueBubbles、媒体生成、TTS、子代理、技能、cron/任务、执行批准和语音通话指南。 - 诊断/跟踪:添加仅格式化受信任调度程序元数据的内部 traceparent 传播助手,默认情况下将插件发出的诊断跟踪排除在出站传播之外。感谢 @vincentkoc。 - 诊断/OTEL:添加边界出站消息传递生命周期诊断,并将它们导出为低基数传递跨度/指标,不含消息体、收件人、房间或媒体路径数据。(#71471) 感谢 @vincentkoc 和 @jlapenna。 - 诊断/OTEL:发出边界执行进程诊断,并将它们导出为 `openclaw.exec` 跨度,不暴露命令文本、工作目录或容器标识符。(#71451) 感谢 @vincentkoc 和 @jlapenna。 - 诊断/OTEL:支持 `OPENCLAW_OTEL_PRELOADED=1`,以便插件在保持 OpenClaw 诊断监听器连接的同时重用已注册的 OpenTelemetry SDK。(#71450) 感谢 @vincentkoc 和 @jlapenna。 - 提供商/小米:添加 MiMo TTS 作为捆绑语音提供商,支持 MP3/WAV 输出和语音备注 Opus 转码。修复 #52376。(#55614) 感谢 @zoujiejun。 - 提供商/ElevenLabs:在捆绑 TTS 模型目录中包含 `eleven_v3`,以便模型选择界面可以提供 ElevenLabs v3。(#68321) 感谢 @itsuzef。 - 提供商/本地 CLI TTS:添加捆绑本地命令语音提供商,支持文件/stdout 输入、语音备注 Opus 转换和电话 PCM 输出。(#56239) 感谢 @solar2ain。 - 提供商/Inworld:添加 Inworld 作为捆绑语音提供商,支持流式 TTS 合成、语音列表、语音备注输出和 PCM 电话输出。(#55972) 感谢 @cshape。 - 提供商/Volcengine:添加 Volcengine/BytePlus Seed Speech 作为捆绑 TTS 提供商,支持 API-key 认证、原生 Ogg/Opus 语音备注输出和 MP3 音频文件输出。(#55641) 感谢 @xuruiray。 - Android/对话模式:在语音选项卡中公开对话模式,支持运行时拥有的语音捕获模式和麦克风前台服务升级。感谢 @alex-latitude。 - 提供商/LiteLLM:注册 `litellm` 作为图像生成提供商,以便 `image_generate model=litellm/...` 调用和 `agents.defaults.imageGenerationModel.fallbacks` 条目通过 LiteLLM 代理解析。感谢 @zqchris。 - 提供商/fal:添加 Seedance 2.0 参考到视频模型,支持多图像、视频和音频参考输入映射,以及 `video_generate` 的模型特定能力限制。感谢 @shivanker。 - Codex harness:要求 Codex 应用服务器 `0.125.0` 或更高版本,并通过 OpenClaw 钩子中继覆盖原生 MCP `PreToolUse`、`PostToolUse` 和 `PermissionRequest` 负载。 - 代理/Codex:使提示和 `agents_list` 公开原生 Codex 应用服务器可用性,以便代理优先使用 `/codex ...` 而非 Codex ACP,除非 ACP/acpx 是显式的。感谢 @vincentkoc。 - ACPX/Droid:将 Factory Droid 添加到实时 ACP 绑定 Docker 矩阵,包括 `.factory` 设置暂存、`FACTORY_API_KEY` 转发以及单代理 `test:docker:live-acp-bind:droid` 配方。 - TTS/人格:添加提供商感知的 TTS 人格,具有确定性提供商绑定合并、`/tts persona` 控制、网关/CLI 人格状态、Google Gemini `audio-profile-v1` 提示包装和 OpenAI 指令映射。(#70748) 感谢 @barronlroth。 - 语音唤醒:添加基于触发器的路由,以便 macOS 语音唤醒短语可以选择配置的代理或会话目标,具有网关路由 API 和节点更新事件。(#30354) 感谢 @longbiaochen。 ### 修复 - 插件/启动:在网关启动期间加载默认 `memory-core` 槽(若允许),以便活动内存召回可以在不需要显式 `plugins.slots.memory` 条目的情况下调用 `memory_search` 和 `memory_get`,同时保留 `plugins.slots.memory: "none"`。感谢 @codex。 - 插件/CLI:在 jiti 之前优先使用编译的捆绑插件 JavaScript 的原生 require,以便只读配置、状态、设备和节点命令避免在慢速主机上不必要的转换开销。修复 #62842。感谢 @Effet。 - 插件/兼容性:将诊断侧弃用迁移与运行时插件兼容性分开清点,以便发布清理保留必要的修复,同时执行日期移除窗口。感谢 @vincentkoc。 - 插件/兼容性:为遗留扩展 API、内存注册、提供商钩子/类型别名、运行时别名、频道 SDK 助手以及批准/测试实用程序填充程序添加缺失的日期兼容性记录。感谢 @vincentkoc。 - 插件/CLI:在管理的插件文件被移除后刷新持久化注册表,防止 ClawHub 卸载留下陈旧的 `plugins list` 条目。感谢 @codex。 - 插件/CLI:使插件安装和卸载配置写入具有冲突感知,在显式重新安装/移除时清除陈旧的拒绝列表条目,并且仅在配置/索引提交成功后才删除管理的插件文件。感谢 @codex。 - 插件:当跟踪的插件或钩子更新出错时使 `plugins update` 失败,将捆绑运行时依赖修复保留在限制性允许列表后面,并拒绝带有无法加载的扩展条目的包安装。感谢 @codex。 - 网关/聊天:在文档化的进行中路径上保留重复附件支持的 `chat.send` 重试(使用相同的幂等键),以便中止仍针对真实活动运行。修复 #70139。感谢 @Feelw00。 - 插件:在安装和发现之间共享包入口点解析,拒绝不匹配的 `runtimeExtensions`,并在扫描期间缓存捆绑运行时依赖清单读取。感谢 @codex。 - 入门/设置:保持首次运行配置读取、插件兼容性通知和模型后健全性检查在冷元数据路径上,除非用户选择浏览所有模型,避免提示之间的完整插件/运行时目录工作。感谢 @shakkernerd。 - 入门/auth:通过范围设置提供商运行清单拥有的提供商 auth 选择,以便选择 OpenAI Codex 浏览器/设备 auth 不再在 OAuth 开始之前加载每个提供商运行时。感谢 @shakkernerd。 - 入门/auth:在清单/设置元数据上保持 post-auth 默认模型策略查找,以便下一个提示出现时不加载广泛的提供商运行时。感谢 @shakkernerd。 - 入门/模型:保持 skip-auth 和提供商范围模型选择器提示离开完整的全局模型目录路径,并缓存提供商目录钩子解析,以便设置不再在 auth 后停滞,尤其是在大型插件注册表上。感谢 @shakkernerd。 - 网关/Bonjour:通过范围进程处理程序抑制已知的 @homebridge/ciao 取消和网络断言失败,以便格式错误的 mDNS 数据包或受限 VPS 网络禁用/重启 Bonjour 而不是崩溃网关。修复 #67578。感谢 @zenassist26-create。 - Discord:当提升模式自动解析请求时,保持对已解析执行批准按钮的晚点击静默,同时仍然显示真实的批准提交失败。修复 #66906。感谢 @rlerikse。 - 代理/子代理:当休眠父公告回合产生无可见回复时,通过直接后备将完成的产生子代理结果传递回无线程请求者路由,并为回归添加 QA-lab 覆盖。感谢 @vincentkoc。 - 网关/Tailscale:允许具有浏览器设备身份的 Tailscale 认证控制 UI 操作员会话跳过设备配对往返,同时仍然拒绝无设备和节点角色连接。引用 #71986。感谢 @jokedul。 - 诊断:通过报告网关服务健康但跳过服务安装/启动/重启/引导以及主管重写和遗留服务清理来遵守 `OPENCLAW_SERVICE_REPAIR_POLICY=external`,适用于外部管理环境。感谢 @shakkernerd。 - CLI/更新:使用 `--fix` 运行包后更新诊断,以便包更新在重启前修复配置迁移。感谢 @shakkernerd。 - CLI/更新:使用 `--omit=optional` 重试失败的 npm 全局更新,并在后备成功时忽略 superseded 首次失败。感谢 @shakkernerd。 - 插件/卸载:当插件 ID 更改或选定插件被移除时,迁移和重置 `plugins.slots.contextEngine` 与内存槽一起。感谢 @shakkernerd。 - 代理/Discord:保持原始 `Agent failed before reply` 运行程序失败不出现在 Discord 群组/频道聊天中,并仅在 `/verbose` 启用时在直接聊天中显示详细运行程序错误。感谢 @codex。 - UI/Windows:在生成 UI 安装/构建/测试命令之前引用解析的 pnpm `.cmd` 启动器路径,以便 `C:\Program Files` 下的 Node 安装不再失败为 `C:\Program`。修复 #45275。感谢 @Kobevictor、@stoppieboy 和 @iubns。 - Codex/代理:在请求构建时将 `--thinking minimal` 转换为现代 Codex 模型(gpt-5.5、gpt-5.4、gpt-5.4-mini、gpt-5.2)的 `low`,以便第一回合被接受,而不是支付浪费的调用 + 重试低后备。较旧的 Codex 模型仍直接接收 `minimal`。修复 #71946。感谢 @hclsys。 - 插件/卸载:即使当前状态目录指向其他地方,也从其记录的托管扩展根中移除跟踪的插件文件,以便 `openclaw plugins uninstall --force` 不使插件可发现。感谢 @shakkernerd。 - 代理/运行时:添加 `agentRuntime.id` 作为规范配置键,使用 `openclaw doctor --fix` 迁移遗留运行时策略配置,在不过渡 CLI 后端别名到嵌入式 harness 选择的情况下通过 `claude-cli` 路由规范 Anthropic 模型,并在频道启动前加载 CLI 后端所有者插件。修复 #71957。感谢 @WolvenRA。 - CLI/更新:通过状态和超时保护 Windows 计划任务停止,以便自动更新重启不会在 `schtasks /End` 上无限期挂起,然后再进行陈旧监听器清理。修复 #69970。感谢 @yangswld 和 @sherlock-huang。 - Windows 安装/Lobster:当 `npm_execpath` 指向原生 pnpm 二进制文件时直接执行 `pnpm.exe`,为 Lobster 嵌入式运行时添加已安装包后备,并将 Lobster 运行程序回归测试包含在 Windows CI 中。修复 #69456。感谢 @igormf。 - 网关/安装:当当前服务嵌入陈旧的网关 auth 时刷新加载的网关服务安装,而不是返回已安装,避免令牌轮换后的 LaunchAgent 令牌不匹配循环。修复 #70752。感谢 @hyspacex。 - 更新:在全局安装验证和打包的 dist 修剪期间忽略捆绑插件 `.openclaw-install-stage` 目录,以便剩余的运行时依赖阶段文件不会将成功的更新变为“意外的打包 dist 文件”失败。修复 #71752。感谢 @waynegault。 - CLI/更新:当 post-update 插件同步失败时失败包更新,并在信任未更改工件之前刷新遗留 npm 插件安装记录,防止成功的更新以陈旧或失败的插件状态重启。感谢 @vincentkoc 和 @shakkernerd。 - 发布/更新:在包清单生成之前拒绝预填充的捆绑插件 `.openclaw-install-stage` 目录,包括混合大小写路径变体,以便发布 tarball 不能运送中毒的运行时依赖阶段碎片。修复 #71752。感谢 @hclsys。 - Node 运行时:在网关重启之间保持节点主机重试计时器活动,并在终端凭据暂停时退出,以便受监督的节点不会变成沉默的僵尸。修复 #69800。感谢 @meroli28。 - 网关/插件:停止持久化的 WhatsApp auth 状态在启动期间激活捆绑频道运行时依赖修复,当 `channels.whatsapp` 缺失时,避免打包的 Linux 安装上的 npm/git 停顿。修复 #71994。感谢 @xiao398008。 - 网关/设备令牌:在令牌轮换和撤销内强制调用者范围 containment,以便仅配对的会话不能变异更高范围的操作员令牌。修复 #71990。感谢 @coygeek。 - 插件/频道:将安全检查、线程绑定放置、提供商摘要、健康格式化和消息操作标签保持在只读或已加载的频道元数据上,而不是导入完整的频道运行时。感谢 @shakkernerd。 - 插件/状态:保持仅配置的频道标签和状态安全摘要不导入插件运行时模块仅为了呈现元数据。感谢 @shakkernerd。 - 会话/频道:停止组会话元数据加载捆绑频道运行时仅为了分类 `#channel` 主体,仅使用该路径上已加载的频道能力。感谢 @shakkernerd。 - 插件/频道:在静态频道元数据上保持本机命令和本机技能 `auto` 默认值,以便配置、审计和命令列表检查不加载频道运行时仅为了读取这些默认值。感谢 @shakkernerd。 - CLI/频道:保持频道移除选择和所有频道能力摘要在只读插件元数据上,仅对选定的变更路径加载频道运行时。感谢 @shakkernerd。 - CLI/模型:当拥有的提供商插件被禁用时,将提供商索引预览行保留在 `models list --all --provider <id>` 之外,为冷目录后备保留配置权威。感谢 @shakkernerd。 - CLI/模型运行:保持 `openclaw infer model run` 在显式 OpenRouter 模型上不加载完整的提供商目录或继承聊天代理静默回复策略,恢复非空一次性探测输出。修复 #68791。感谢 @limpredator。 - 安装程序/macOS:当原始模式 ioctl 失败时重新运行 Homebrew 安装步骤(无 gum 旋转器),并避免在 Homebrew keg 二进制文件缺失时声称安装了 `node@24`。修复 #70411。感谢 @1fanwang 和 @dad-io。 - 安装程序:在 Node.js 检测之前加载 nvm,以便 `curl | bash` 安装尊重 nvm 管理的 Node 而不是陈旧的系统 Node。修复 #49556。感谢 @heavenlxj。 - 安装程序/Windows:通过顶级处理程序路由 PowerShell 安装失败,以便 `iwr ... | iex` 将控制返回到当前 shell,而直接脚本文件运行仍以非零退出。修复 #38054。感谢 @PwrSrg。 - CLI/Volta:当当前 Node 可执行文件解析为 `volta-shim` 时,通过命名的 `node` 垫片重新生成原始 `openclaw` CLI 运行,避免在非交互式 shell 中直接垫片执行失败。修复 #68672。感谢 @sanchezm86。 - 安装程序:警告多个 npm 全局根包含 OpenClaw 安装时,显示活动 Node/npm/openclaw 以及每个安装路径和版本,以便陈旧版本管理器安装可见。修复 #40839。感谢 @zhixianio。 - Cron/任务:从持久运行日志和作业状态恢复完成的 cron 任务分类账记录,然后再将它们标记为 `lost`,减少孤立 cron 运行的错误 `backing session missing` 审计错误,并保持离线 CLI 审计不将其空的本地 cron 活动作业集视为权威。修复 #71963。 - Docker:将修补的依赖文件复制到运行时镜像,以便下游 `pnpm install` 层保持工作。修复 #69224。感谢 @gucasbrg。 - 包:将修补的依赖文件包含在发布的 npm 包中,以便下游安装可以解析 `patchedDependencies`。(#69224) 感谢 @gucasbrg 和 @vincentkoc。 - 插件/频道:将格式错误的捆绑频道插件加载器(返回 `undefined`)视为不可用而不是崩溃配置和帮助路径。修复 #69044。感谢 @frankhli843 和 @vincentkoc。 - 脚本/watch:当 `gateway:watch` 在监视器启动期间失败时显示损坏的依赖包配置恢复指导,而不双日志记录不相关的导入失败。(#58780) 感谢 @roytong9 和 @vincentkoc。 - Signal:通过 Node 的 HTTP 客户端读取 signal-cli RPC、健康检查和 SSE 事件,以便 Node 24/25 fetch 回归不会破坏 Signal 发送或入站事件。修复 #51716 和 #53040。感谢 @Barukimang、@minupla 和 @vincentkoc。 - 技能/Docker:使用 OpenClaw 管理的用户前缀运行 npm 支持的技能依赖安装,以便非 root Docker 镜像不写入 `/usr/local`。修复 #59601。感谢 @chanjarster 和 @vincentkoc。 - 代理/运行时:将心跳、cron 和执行唤醒作为瞬态运行时上下文提交,而不是可见的用户提示,将合成系统工作保留在聊天记录之外。修复 #66496 和 #66814。感谢 @jeades 和 @mandomaker。 - Telegram:自动为线程回复和回复标签包含原生引用摘录,当原始 Telegram 文本可用时,不添加另一个配置旋钮。修复 #6975。感谢 @rex05ai。 - Node/Linux:使 `openclaw node install` 启用并重启 `openclaw-node` systemd 单元而不是节点仅 VM 上的网关单元。修复 #68287。感谢 @dlebee-agent。 - 浏览器/CDP:在发送任何浏览器命令之前重试瞬态原始 CDP WebSocket 握手失败,并为安全标签页列表读取重新连接陈旧的持久 Playwright CDP 会话,而不重放变异浏览器操作。修复 #67728。 - 网关/Linux:在迁移的 systemd 安装上,当新写入的网关单元尚不可见时,在第二次守护进程重新加载后重试 `systemctl --user enable`。修复 #65184。感谢 @liushuaiiu。 - Telegram:发送原生引用回复时保留精确选择的引用文本,并在 Telegram 拒绝引用参数时使用遗留回复重试。(#71952) 感谢 @rubencu。 - 插件/CLI:在冷 `openclaw plugins list` 输出中保留清单名称、描述、格式和源元数据,而不导入插件运行时。感谢 @shakkernerd。 - 安全/审计:从只读插件索引元数据读取频道暴露和插件允许列表所有权,以便冷审计不依赖加载的频道运行时。感谢 @shakkernerd。 - 插件/聊天:保持 `/plugins list`、`/plugins enable` 和 `/plugins disable` 在持久化插件索引路径上,以便聊天插件管理在执行之前不加载诊断/运行时插件注册表。感谢 @shakkernerd。 - 插件/诊断:通过已安装索引清单元数据读取工作区插件状态和遗留 web-search 所有权,而不是广泛的清单注册表扫描。感谢 @shakkernerd。 - CLI/代理:为文本 `agents list` 输出从只读插件索引元数据读取频道提供商状态,而不是加载的频道注册表。感谢 @shakkernerd。 - 日志记录:在控制台和文件日志接收器出口处屏蔽配置的机密模式,以便到达日志器的凭据在终端显示或 JSONL 持久化之前被屏蔽。修复 #67953。感谢 @Ziy1-Tan。 - 网关/服务:当配置最后由较新版本写入时,拒绝来自较旧 OpenClaw 二进制的进程和服务变更,防止分裂脑安装停止或重写较新的网关服务。修复 #57079。 - 网关:在插件、canvas 和控制 UI HTTP 阶段之前保留 `/healthz` 和 `/readyz`,以便当稍后路由处理程序停滞时,存活/就绪探测仍然响应。修复 #69674。感谢 @Xike-Creek。 - 日志记录:从捆绑运行时的活动 OpenClaw 配置路径直接加载 `logging.file` 和屏蔽设置,以便打包的网关停止回退到 `/tmp/openclaw`。修复 #59370、#67168 和 #61295。感谢 @KeaneYan、@Pan9hu 和 @zsjlovelike。 - 日志记录:在 `logging.maxFileBytes` 处旋转文件日志,保持边界编号存档,并让长期运行的滚动日志记录器遵循当前日期文件,而不是抑制诊断或写入陈旧日期文件。修复 #58583 和 #62381。感谢 @jpeghead 和 @zhaoleink。 - 代理/组:仅对始终开启的组(其中允许静默回复)将干净的空白助手停止视为静默 `NO_REPLY`,同时保持直接和提及门控会话在不完整回合重试路径上。感谢 @MagnaAI。 - macOS/Node:保持本机远程应用节点不广告 `browser.proxy`,通过恢复的 `openclaw node start` 命令启动浏览器 capable CLI 节点服务,并在本地控制服务缺失时显示可操作的浏览器控制错误。修复 #66637。 - 网关/更新:当重启的托管网关报告错误版本时失败包更新,包括后备重启和 JSON 模式,避免 macOS LaunchAgent 更新后错误的成功混合版本重启。修复 #71835。感谢 @abhinas90 和 @jsompis。 - 网关/更新:在包更新和捆绑插件运行时依赖修复之前,当目标卷似乎磁盘空间不足时警告,而不基于最佳努力文件系统检查阻止安装。修复 #71835。感谢 @abhinas90 和 @jsompis。 - 插件/运行时依赖:在健康中显示激活的插件加载失败,并在捆绑运行时依赖仍无法加载时失败包更新重启验证或诊断修复,避免错误成功修复。(#71883) 感谢 @Solvely-Colin。 - 网关/Linux:在生成的服务 PATH 中包含 fnm `aliases/default/bin`,并让诊断接受现代 fnm 别名或遗留 `current/bin` 符号链接,避免错误的 PATH 修复提示。修复 #68169。感谢 @richard-scott。 - 安装程序/Linux:使用非交互式 dpkg 和 needrestart 设置运行 apt 安装,以便新鲜的 Ubuntu 24.04 `curl | bash` 安装在安装 Node.js、Git 或构建工具时不会挂起。修复 #41146。感谢 @iht76、@alexcarv318、@cs3gallery、@firofame 和 @cgdusek。 - 提供商/Bedrock:将 AWS SDK 导入延迟到 Bedrock 发现实际运行时,以便插件注册和设置保持冷启动轻量。修复 #71690。感谢 @jarvis-ai-gregmoser。 - 安装程序/macOS:当 Homebrew `node@24` 安装失败时立即停止,并避免为缺失的 Homebrew Node 安装打印 PATH 建议。修复 #70411。感谢 @1fanwang。 - WhatsApp:当 `messages.removeAckAfterReply` 启用时,在可见回复后移除 ack 反应,匹配其他反应 capable 频道。修复 #26183。感谢 @MrUnforsaken。 - 提供商/Z.AI:将 OpenClaw 思考控制映射到 Z.AI 的 `thinking` 负载,并通过 `params.preserveThinking` 添加选择加入的保留思考重放,以便 GLM 5.x 可以在请求时保留先前的 `reasoning_content`。修复 #58680。感谢 @xuanmingguo。 - 频道/状态:默认情况下在清单和包元数据上保持只读频道列表,仅为显式后备调用者加载设置运行时。感谢 @shakkernerd。 - 插件:当调用方已经知道拥有的插件集时,将设置和 web-provider 元数据清单读取范围到显式插件 ID。感谢 @vincentkoc。 - 插件/入门:将入门安装记录索引写入延迟到受保护的配置提交窗口,以便设置失败不能使插件索引领先于 `openclaw.json`。感谢 @shakkernerd。 - 插件/注册表:从已安装插件索引解析 web 提供商所有权,而不是在机密、工具和定价路径上广泛扫描清单。感谢 @shakkernerd。 - 配置/提供商:在配置的模型 `input` 值中接受 `video` 和 `audio`,并在提供商目录条目中保留它们。修复 #20721。感谢 @alvinttang。 - 模型/auth:尊重父 `--agent` 标志进行 auth 写入命令(`add`、`login`、`setup-token`、`paste-token` 和 GitHub Copilot 快捷方式),以便 OAuth/API-key/token 结果写入请求的代理存储而不是默认代理。修复 #71864。(#71933) 感谢 @balric-seo。 - TTS:在频道交付之前从流式块文本中剥离模型发出的 TTS 指令,包括跨相邻块分割的指令,同时为最终模式合成保留累积的原始回复。修复 #38937。 - TTS:保持显式 `provider=...` 指令键范围到该提供商,并在不支持键时警告,而不是让另一个语音提供商消耗重叠键。修复 #60131。 - TTS/飞书:在交付前规范化最终模式流式 TTS 仅音频,以便生成的语音备注文件使用相同的安全媒体路径和本机语音路由作为正常最终回复。修复 #71920。 - 飞书:在代理调度之前用共享媒体音频路径转录入站语音备注音频,并保持原始飞书 `file_key` 负载不在消息文本中。修复 #67120 和 #61876。 - 任务:从网关运行结果终止异步网关代理任务记录,同时保留中止、失败和取消结果,而不是让完成的运行保持活动或丢失。(#71905) 感谢 @likewen-tech。 - WhatsApp:允许授权的组语音备注转录在回复调度之前满足提及门控,同时保持未提及的转录在待处理组历史中。修复 #44908。 - 媒体理解:将频道语音备注预飞行状态携带到附件选择中,以便 WhatsApp、飞书、Telegram 和 Discord 不转录相同的入站音频两次。修复 #70580。 - TTS/BlueBubbles:将兼容的自动 TTS 音频作为 iMessage 语音备忘录气泡交付,而不是普通 MP3/CAF 文件附件。修复 #16848。 - TTS:从频道插件能力而不是 speech-core 拥有的频道 ID 列表解析语音备注和语音备忘录路由。 - ACP:将子代理和异步任务完成唤醒作为普通提示发送到外部 ACP harness,而不是 OpenClaw 内部运行时上下文信封,同时将这些信封保留在 ACP 记录之外。 - TTS/状态:在 `/status` 中显示配置的 TTS 模型、语音和消毒的自定义端点,在自定义端点上保留 OpenAI 兼容 TTS 指令,并重试空的 Microsoft/Edge TTS 输出一次。解决 #46602、#47232 和 #43936。感谢 @leekuangtao、@Huntterxx 和 @rex993。 - 代理/网关:通过仅所有者 `gateway` 工具引导代理驱动的配置编辑和重启,记录 `config.schema.lookup` 作为字段文档源,并警告不要使用 `gateway stop && gateway start` 作为 macOS 上的重启替代。修复 #71929。感谢 @ygc3817922006-sketch。 - 媒体理解/音频:对于太小的语音备注注入确定性转录占位符,以便代理不幻觉转录或提供商失败。修复 #48944。感谢 @eulicesl。 - 提供商/vLLM:当思考关闭时发送 Nemotron 3 聊天模板 kwargs,并 honor 配置的 `params.chat_template_kwargs` 用于 OpenAI 兼容补全,以便 vLLM/Nemotron 回复保持可见而不是变成仅思考。修复 #71891。感谢 @jmystaki-create 和 @dennis-lynch。 - 频道/回复:从用户可见的助手回复和模型重放历史中剥离复制的入站元数据块,以便 Discord/vLLM 会话在模型回显它们后不泄漏 `Conversation info` / `UNTRUSTED ... message body` 信封。修复 #71847。感谢 @jmystaki-create。 - 子代理/内存:将间会话完成唤醒保留在内存和梦境会话导出之外,并从实时控制 UI 聊天事件中剥离内部运行时上下文块。 - 代理/Claude:将零令牌空白 `stop` 回合视为失败的提供商输出,重试一次,修复重放,并允许配置的模型后备而不是将它们保留为成功的静默回复。修复 #71880。感谢 @MagnaAI。 - 任务:在创建、更新和恢复时间标准化任务生命周期时间戳,并报告保留的丢失任务作为审计警告,直到其清理窗口过期。(#71871) 感谢 @likewen-tech。 - 诊断/OTEL:将正常的早期模型流清理视为完成的模型调用而不是导出误导性的 `StreamAbandoned` 错误跨度。感谢 @vincentkoc。 - 网关/配对:停止损坏或不可读的设备/节点配对存储被视为空状态,保留 `paired.json` 用于修复而不是覆盖批准的配对。修复 #71873。感谢 @iret77。 - ACP:保持 `/acp` 管理命令加上本地 `/status` 和 `/unfocus` 在 ACP 绑定线程内的网关路径上,以便它们不被消耗为 ACP 提示文本。修复 #66298。感谢 @kindomLee。 - ACPX:在正常网关启动期间停止探测 ACP 代理;嵌入式后端现在注册而不生成 Codex/ACP 子进程,除非显式设置 `OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=1`。 - CLI/图像编辑:在 `openclaw infer image edit` 上接受 `--size`、`--aspect-ratio` 和 `--resolution`,并从 `capability inspect image.edit` 报告所有支持的编辑标志。感谢 @Pinghuachiu。 - ACP:在启动身份协调之前等待配置的运行时后端健康,避免网关启动期间的瞬态 acpx 警告。修复 #40566。 - 频道/ACP 绑定:超时配置的绑定就绪检查,而不是让 Discord 预飞行在 ACP 目标从不稳定时永远挂起。修复 #68776。 - 控制 UI:在背景历史重新加载期间隐藏聊天加载骨架,当现有消息或活动流内容已经可见时,避免高延迟本地网关上的重新加载闪烁。修复 #71844。感谢 @WolvenRA。 - 控制 UI:当历史重新加载暂时返回空时保持本地乐观聊天消息可见,避免高延迟网关上的第一回合消息丢失。修复 #71878。感谢 @WolvenRA。 - 控制 UI:基于过滤心跳和控制仅转录行后的可见消息保持聊天历史限制,因此最近的隐藏条目不再使较旧的可见回复消失。感谢 @WolvenRA。 - 代理/图像:从修剪的模型重放上下文中清理旧的 `[media attached: ...]`、`[Image: source: ...]` 和 `media://inbound/...` 标记,以便陈旧的媒体引用不会作为新鲜提示图像重新水合。修复 #71868。感谢 @jmeadlock。 - Docker/Bonjour:默认对捆绑 Compose 网关在桥接网络上禁用 Bonjour/mDNS 广告,同时保持主机/macvlan 选择加入 `OPENCLAW_DISABLE_BONJOUR=0`。修复 #71879。感谢 @gbballpack。 - CLI/状态:将 OpenClaw Serve/Funnel 设置标记为 `Tailscale exposure` 并单独显示守护程序状态(当可用时),以便 `gateway.tailscale.mode: "off"` 不再读取为 Tailscale 守护程序已停止。修复 #71790。感谢 @pesvobodak。 - 插件/Bonjour:当广告商在 `probing` 或 `announcing` 中卡住时,停止 ciao mDNS 监视器故障无限循环;Bonjour 在重复失败重启后对当前网关进程禁用自己,同时网关保持运行。修复 #69011。感谢 @siddharthaagarwalofficial-ux、@FiredMosquito831 和 @spikefcz。 - 网关/Fly.io:从实际运行时绑定和端口种子控制 UI 允许的源,以便 CLI 驱动的非环回启动在配置存在之前不崩溃。修复 #71823。 - macOS/远程 SSH:在 `gateway.remote.sshTarget` 中保持发现的网关主机,同时将 SSH 传输 URL 固定到本地环回隧道,以便浏览器自动化不回归到阻塞的非环回 `ws://` 端点。修复 #67336。 - 网关/代理:从直接网关启动引导 env 代理调度,以便提供商和插件网络请求在第一个嵌入式代理尝试运行之前 honor `HTTPS_PROXY`/`HTTP_PROXY`。(#71833) 感谢 @mjamiv。 - 插件/运行时依赖:验证干净的 npm 安装实际上将请求的捆绑运行时包放置在管理的安装根中,报告精确缺失的规范而不是错误的成功修复。(#71883) 感谢 @Solvely-Colin。 - 插件/发现:忽略指向打包捆绑插件目录的回溯的陈旧 `plugins.load.paths` 别名,并让诊断移除它们,保持捆绑插件在运行时依赖阶段路径上。感谢 @codex。 - 模型/LM Studio:在模型引用和提供商匹配中保留 `@iq*` 量化后缀,以便 `/model lmstudio/...@iq3_xxs` 保持精确的 LM Studio 变体。修复 #71474。(#71486) 感谢 @Bartok9、@XinwuC 和 @Sanjays2402。 - Matrix/cron:在创建隐式公告提醒作业时保留实时 Matrix 传递目标,以便混合大小写房间 ID 不从小写的会话键重建。修复 #71798。 - 飞书:接受报告 `context.open_chat_id` 而不是遗留 `context.chat_id` 的 Schema 2.0 卡片操作回调,以便按钮回调不再作为格式错误丢弃。修复 #71670。感谢 @eddy1068。 - 飞书:保持合成卡片操作和 bot-menu ID 出平台回复目标,使用真实卡片回调消息 ID 当飞书提供一个时,否则普通发送。修复 #71673。感谢 @eddy1068。 - 插件/QQ Bot:优先选择声明它替换捆绑 `qqbot` 频道的已安装 QQ Bot 插件,防止重复 `qqbot_channel_api` 和 `qqbot_remind` 工具注册噪声。修复 #63102。 - 浏览器自动化:当 Chromium 在表单提交或其他操作触发的导航后替换原始目标时,保持稳定的标签页 ID 和标签附加,并在匹配可证明时从 `/act` 返回替换 `targetId`。修复 #46137。 - QQ Bot:使 `qqbot_remind` 调度、列表和移除网关 cron 作业直接为所有者授权的发送者,而不是返回 `cronParams` 并依赖后续通用 `cron` 工具调用。修复 #70865。(#70937) 感谢 @GaosCode。 - 代理/ACP:隐藏 `sessions_spawn` ACP 运行时选项,除非加载 ACP 后端,并使 `/acp doctor` 调用出 `plugins.allow` 阻止捆绑 `acpx`。感谢 @vincentkoc。 - 代理/Codex:保持 ACP 提示/技能路由隐藏,除非 ACP 运行时后端可用,并在诊断中警告当启用的 Codex 插件配置仍通过 PI 路由 `openai-codex/*` 模型。感谢 @vincentkoc。 - 媒体交付:避免当助手回复已经包括相同回合的显式 `MEDIA:` 行时发送生成的图像附件两次,并在交付前拒绝不安全的远程 `MEDIA:` URL。感谢 @pashpashpash。 - Codex harness:在 Codex 恢复后忽略可重试的应用服务器错误通知,并保留真实的嵌套错误消息用于终端应用服务器失败,而不是用通用失败替换它。感谢 @pashpashpash。 - 代理/Codex:准备原生 Codex 子代理会话元数据没有嵌套网关会话补丁,并添加聚焦的 Docker 烟雾用于应用服务器子代理路径。感谢 @vincentkoc。 - 代理/子代理:保持排队的子代理公告仅会话当请求者没有外部频道目标时,避免模糊的多频道传递失败。修复 #59201。感谢 @larrylhollan。 - 图像理解:当调用者请求模型而没有提供商前缀时,保留配置的提供商前缀视觉模型元数据,以便自定义图像模型保持其 `input: ["text", "image"]` 能力。修复 #33185。感谢 @Kobe9312 和 @vincentkoc。 - 插件/安装:如果并发配置写入冲突中断安装、更新或卸载元数据提交,恢复先前的插件索引记录。感谢 @shakkernerd。 - 插件/安装:拒绝不包含有效 `openclaw.plugin.json` 的本机插件归档,防止无清单归档写入后来显示缺失清单诊断的安装记录。感谢 @shakkernerd。 - 插件/卸载:即使持久化安装路径不同于默认 ID 派生目标,也移除跟踪的托管插件安装目录,同时仍然拒绝删除托管扩展根之外的内容。感谢 @shakkernerd。 - 插件/更新:如果核心更新或频道设置在插件元数据变更后命中并发配置写入冲突,恢复先前的插件索引记录。感谢 @shakkernerd。 - 插件/入门:将频道/提供商插件安装记录延迟到拥有的配置写入提交,以便设置失败不能使插件索引领先于 `openclaw.json`。感谢 @shakkernerd。 - 插件/配置:通过插件索引提交助手路由配置和代理设置写入,带有挂起的插件安装记录,以便提供商入门元数据不被普通配置写入剥离。感谢 @shakkernerd。 - 插件/频道:在配置写入之前将挂起的频道插件安装记录与现有插件索引合并,在频道设置、解析、移除和能力修复流程期间保留不相关的跟踪安装。感谢 @shakkernerd。 - 插件/配置:在配置写入期间延迟 shipped `plugins.installs` 索引迁移到受保护的配置提交窗口,如果配置写入在提交之前失败则回滚。感谢 @shakkernerd。 - 会话:通过将其作为隐藏下一回合自定义消息发送,将嵌入式运行时上下文保留在可见用户提示之外,并教诊断修复受影响的 2026.4.24 具有重复提示重写分支的转录。修复 #71761。 - 网关/子代理:保持直接环回后端 RPC 使用共享网关令牌/密码认证离开陈旧的 CLI 配对设备范围基线,以便内部调用不再命中 `scope-upgrade` 配对提示,而远程、浏览器、节点、设备令牌和显式设备路径仍然需要正常配对批准。修复 #63548。 - 提供商/Azure OpenAI:为部署范围的图像生成请求提供更长的 600s 默认超时,以便慢速 `gpt-image-2` 生成可以在没有每调用 `timeoutMs` 的情况下完成。修复 #71705。感谢 @voytas75。 - 网关/插件:链接源代码检查捆绑运行时依赖缓存而不是在网关主线程上递归复制 `node_modules`,防止本地状态、节点和技能探测在启动缓存恢复期间超时。 - 技能/远程节点:仅暴露连接的节点的远程 macOS 技能二进制文件,在节点探测失败时清除陈旧的二进制匹配,并在超时日志中包含探测命令、超时、二进制计数和连接状态。 - 技能/远程节点:当探测连接的 macOS 节点时识别 `system.which` 对象映射响应,以便 Linux 网关可以暴露 macOS 仅技能如 Apple Notes,当所需的二进制文件远程安装时。修复 #71877。感谢 @miguelarios。 - CLI/gateway:保持诊断探测不创建首次只读设备配对,同时仍然为详细读取探测重用缓存的设备令牌。修复 #71766。感谢 @SunboZ。 - CLI/插件:保持 `message` 启动、`channels logs`、`agents delete` 和 `agents set-identity` 离开广泛的插件预加载;消息传递仍然在操作实际运行时加载插件。 - 图像理解:在发现注册表尚未注册该提供商时,解析配置的图像模型(如本地 LM Studio 视觉条目)之前报告 `Unknown model`。修复 #66486。感谢 @zhanggpcsu。 - QQ Bot:使用出站引用索引标记忽略自回声机器人消息,防止镜像回复重新进入代理循环,同时仍然允许用户引用机器人回复。修复 #71912。感谢 @wangyc6003。 - 会话:分离重置新鲜度与会话存储 `updatedAt`,以便心跳、cron、exec 和网关记账不再阻止配置的每日/空闲重置滚动长期频道会话。修复 #68315、#63732、#63820 和 #69083。感谢 @maxatv、@longhairedsi、@bradfreels 和 @akessel56。 - 会话:在 `/new`、`/reset`、网关 `sessions.reset` 以及每日/空闲滚动期间清除排队的系统事件通知,以便陈旧的背景更新不能泄漏到新鲜会话的第一个提示中。修复 #66864。感谢 @opeyio、@Magicray1217 和 @cedillarack。 - CLI/代理:保持 `agents bind`、`agents unbind` 和 `agents bindings` 在设置安全频道元数据路径上,以便它们不预加载捆绑插件运行时或阶段运行时依赖。修复 #71743。 - 插件/注册表:在注册表迁移期间保留显式禁用的插件记录,而不持久化磁盘上发现的每个未使用捆绑插件。感谢 @shakkernerd。 - Windows/本机:保持 CLI 启动和捆绑提供商插件加载离开 Windows ESM 原始路径失败路径,修复 Node 24 上的本机入门/安装烟雾。 - 插件/诊断:通过相同的打包插件目录解析器读取捆绑频道诊断能力,该解析器被插件加载使用,以便发布的安装在 `channels.matrix.dm.*` 上保持 Matrix DM 允许列表修复,而不是写入无效的顶级 `dmPolicy` 键。修复 #71757。 - 插件/Windows:保持捆绑插件 Jiti 加载器离开 Windows 上的本机导入路径,以便频道插件如 Telegram 不再在 `C:\...` 路径上崩溃 `ERR_UNSUPPORTED_ESM_URL_SCHEME`。修复 #71749。感谢 @smeyer9。 - 提供商/Ollama:使用 Ollama 的当前 `/api/web_search` 端点并 honor `https://ollama.com` 模型提供商基础 URL 用于 Ollama Web Search。修复 #71741。感谢 @madhvidua。 - 内存/Ollama:序列化 Ollama 内存嵌入批次并添加内联批次超时覆盖,本地/自托管嵌入提供商有更长的默认值。 - 会话/使用:排除压缩检查点转录快照来自使用总数和会话发现,同时保持旧检查点文件可移除。 - CLI/代理:默认情况下保持 `openclaw agents list --json` 在仅配置路径上,避免捆绑插件加载,除非调用者请求 `--bindings`。修复 #71739。感谢 @kaloster。 - 插件/安装:强制插件依赖安装保持项目本地,即使继承的 npm 配置请求全局安装,以便成功的安装仍然使插件的阶段 `node_modules` 具体化。 - 提供商/Google:将 Gemini TTS PCM 转码为 Opus 用于语音备注目标,以便 WhatsApp 和其他本机语音备注回复可以作为语音消息播放。 - TTS/WhatsApp:将非-Opus 提供商输出标记为语音备注意图,以便频道交付将 MP3/WebM 回复转码为 Ogg/Opus PTT 音频。 - 插件/运行时依赖:当镜像插件根被再次检查时,重用现有的外部捆绑插件阶段根,避免第二代 `openclaw-unknown-*` 阶段和重复第一轮重新阶段。修复 #71599。 - iOS/macOS 对话模式:允许 `talk.speechLocale` 设置非英语语音对话的语音识别语言环境。修复 #44688。 - 插件/提供商: honor 显式插件候选列表而不是从本地状态读取持久化注册表快照,保持候选范围提供商发现封闭。 - 插件/诊断:保持捆绑插件运行时依赖修复在管理的 OpenClaw 阶段内,即使用户 npm 前缀/全局配置将 npm 指向 `$HOME/node_modules`。修复 #71730。 - ACP/sessions_spawn:当调用者显式请求 `runtime="acp"` 时拒绝正常 OpenClaw 配置代理 ID,同时允许配置 `runtime.type="acp"` 的代理解析到它们的 ACP harness ID。修复 #63914。 - ACP/sessions_spawn:将 `runTimeoutSeconds` 应用于 ACP 子回合,并在背景子代理通道上调度这些回合,以便配额停滞的 ACP harness 不无限期占用主代理通道。修复 #68823。 - ACP/oneshot:在关闭完成的 oneshot ACP 运行之前协调运行时会话身份,以便完成的 `sessions.json` 条目不卡在 `acp.identity.state="pending"`。 - ACPX:捆绑 `[email protected]` 以便不支持的通用模型覆盖清晰失败而不是静默回退到目标适配器默认。 - ACP/模型:记录非-Codex ACP 模型覆盖需要适配器支持 ACP `models` 加 `session/set_model`,以便不支持的 harness 清晰失败而不是静默回退到它们的默认。 - 插件/语音通话:在网关启动期间将缺失的提供商凭据视为设置不完整,并将缺失的密钥记录为警告而不是运行时启动错误,同时保持显式命令/工具错误在使用时。 - Android/对话模式:防止当对话模式等待其自己的响应时快速或重复最终聊天事件导致重复 TTS 播放。修复 #46546。 - 工具/check:changed:将父重检查锁标记传递给 lint 通道,以便 `pnpm check:changed` 不再等待其自己的 `lint:extensions` 子。 - CLI/completion:在注册 `openclaw onboard` 选项之前去重提供商 auth 标志,以便更新期间的完成缓存刷新不再失败,当陈旧核心后备标志与插件清单标志重叠时。修复 #71667。 - 诊断/跟踪:从当前提示快照报告实时上下文使用,而不是提供商回合总数,避免缓存或工具重型运行上错误的接近满上下文峰值。 - 提供商/Google:为 Gemini TTS 和电话 TTS honor `models.providers.google.request.allowPrivateNetwork`,匹配 Google 图像生成和媒体理解。(#71723) 感谢 @ro-hansolo。 - 提供商/MiniMax:注册 `minimax-portal` 用于音乐和视频生成,在共享 `music_generate` 和 `video_generate` 工具之间保留 OAuth auth 和区域 MiniMax 基础 URL。(#63241) 感谢 @tars90percent。 - 提供商/入门:通过将视频生成 auth 选择范围到媒体设置流程,保持 Runway 和阿里巴巴 Model Studio 出文本推理设置选择器。(#65856) 感谢 @Jah-yee。 - 插件/Bonjour:停止网关在 `CIAO PROBING CANCELLED` 上崩溃循环,当 mDNS 监视器取消卡住的探测时。恢复在 bonjour 插件迁移期间丢弃的拒绝处理程序接线,并共享跨模块实例的未处理拒绝状态,以便插件阶段的 `openclaw/plugin-sdk/runtime` 副本注册到主机咨询的相同处理程序集。特别影响 Docker on macOS,其中 mDNS 探测可靠地命中监视器。感谢 @troyhitch。 - Google Meet:在设置/加入诊断中报告固定的 Chrome 节点为离线或缺失能力,将不可访问节点保留在自动选择之外,并在代理尝试本地 Chrome 之前预飞行本地 BlackHole/SoX 要求。 - 提供商/MiniMax:将 `image-01` 请求路由到专用图像生成端点,同时保留 CN 端点选择。修复 #61149。感谢 @mushuiyu886。 - 插件/启动:在短宽限期后移除无主的捆绑运行时依赖安装锁,并在启动超时等待插件运行时依赖锁时包含锁所有者详情。 - 插件/安装:用 OpenClaw 拥有的包清单锚定捆绑运行时依赖 npm 安装,以便 Linux 更新不能意外写入父 `$HOME/node_modules` 树。修复 #71730。 - 插件/安装:将入门插件配置传递到插件索引写入,以便默认发现根之外的本地插件安装保留它们的安装记录。感谢 @shakkernerd。 - 插件/安装:将 shipped `plugins.installs` 配置记录迁移到插件索引,同时从运行时配置和未来写入中剥离它们。感谢 @shakkernerd。 - 插件/安装:在记录复制到插件索引后,持久化移除 shipped `plugins.installs` 来自 `openclaw.json`,同时如果配置清理失败则回滚索引写入。感谢 @shakkernerd。 - 插件/安装:即使插件清单缺失或无效,也保持迁移的插件安装记录在插件索引中,以便更新、卸载、检查和审计仍然可以恢复损坏的安装。感谢 @shakkernerd。 - 插件/安全:保持插件审计 JSON 检查 ID 稳定,同时报告插件索引安装记录发现更新措辞。感谢 @shakkernerd。 - CLI/配置:拒绝直接 `plugins.installs` 编辑,指导使用 `openclaw plugins install`、`openclaw plugins update` 或 `openclaw plugins uninstall`。感谢 @shakkernerd。 - 实时测试/语音:接受 OpenClaw 和 ElevenLabs 品牌名称的常见 STT 变体,以便提供商烟雾测试失败在真实回归而不是等效转录上。 - 代理/回复:在外部频道上转发消毒的底层代理失败详情,而不是用通用重试消息替换未知失败。 - CLI/MCP:将 OpenClaw `mcp.servers.*.transport` 条目翻译成 Claude/Gemini CLI `type` 字段,以便流式 HTTP MCP 服务器在 CLI 后端会话中加载。(#71724) 感谢 @Blockchain-Oracle。 - 浏览器/CDP:在通过原始 CDP 或 `/json/new` 后备打开标签页时 honor 配置的远程和 `attachOnly` CDP HTTP/WebSocket 超时。(#54238) 感谢 @FuncWei。 - WhatsApp/TTS:发送可见文本与 PTT 语音备注音频分开,而不是依赖隐藏语音备注标题。修复 #51081。 - 浏览器/客户端:避免告诉代理为外部浏览器配置文件(如 `attachOnly`、远程 CDP 和现有会话)上的调度程序超时重启 OpenClaw。(#40815) 感谢 @0xsline。 - 代理/TTS:在受信任的文本工具结果 `MEDIA:` 负载上保留 `[[audio_as_voice]]` 指令,以便生成的音频仍然作为语音备注交付。(#46535) 感谢 @azade-c。 - 代理/TTS:当助手以 `NO_REPLY` 结束时,在非阻塞交付路径上保持排队的工具媒体,以便仅媒体生成的音频回复仍然发送。(#60025) 感谢 @bradlind1。 - Telegram/STT:将入站语音备注转录框定为机器生成、不可信的文本在代理上下文中,同时保留原始转录提及检测。关闭 #33360。感谢 @smartchainark。 - 子代理/浏览器:当浏览器自动化被配置但被活动工具配置文件过滤时显示可操作的 `/tools` 通知,并记录编码配置文件代理应该使用 `tools.alsoAllow: ["browser"]` 而不是单独的子代理允许列表。 - 控制 UI/快速设置:将助手头像覆盖持久化到浏览器本地存储(镜像用户头像),以便上传的图像数据 URL 不再以“太大:期望字符串具有 <=200 个字符”失败配置验证。同时提升网关侧 `ui.assistant.avatar` 长度上限以匹配非 UI 客户端直接写入字段的用户头像大小预算。感谢 @BunsDev。 - 插件 SDK:跨重复源/dist 模块图共享诊断事件订阅,以便遗留根 SDK 导入仍然接收运行时诊断事件。 - 代理/Bedrock:防止空助手流错误回合毒害 Converse 重放,通过持久化、修复和重放非空后备块。修复 #71572。(#71627) 感谢 @openperf。 - 代理/Anthropic/Bedrock:在提供商转换之前剥离缺失、空白或空白重放签名的思考块,必要时回退到非空省略推理文本,以便损坏的签名思考历史不再毒害后续回合。修复 #45010。(#70054) 感谢 @castaples。 - 代理/Anthropic/Bedrock:保留剥离的仅思考助手重放回合与非空省略推理文本,以便提供商适配器保持严格用户/助手回合形状。感谢 @wujiaming88。 - ACP/Codex:将 `sessions_spawn(runtime="acp")` 模型和思考覆盖传递到 Codex ACP 启动,规范化 `openai-codex/*` 引用和斜杠推理后缀,并识别托管 Codex ACP 包装命令而不阻塞当前 `gpt-5.5` 会话。修复 #40393。(#71643) 感谢 @91wan。 - 浏览器/CDP:使就绪诊断使用相同的发现优先后备作为可访问性,用于裸 `ws://` Browserless 和 Browserbase CDP URL。修复 #69532。 - 浏览器/CDP:解释环回 Browserless 或其他外部管理的 CDP 服务需要 `attachOnly: true` 和匹配的 Browserless `EXTERNAL` 端点,当报告本地端口所有权冲突时,并在发现的 Browserless 端点拒绝 CDP 时回退到配置的裸 WebSocket 根。修复 #49815。 - 网关/重新加载:保留无限 `gateway.reload.deferralTimeoutMs: 0` 语义用于频道热重新加载延迟,以便活动代理运行不被强制频道重启中断。(#71637) 感谢 @Poo-Squirry。 - 代理/工具结果:限制持久化的 Pi 工具结果细节,并在提供商转换之前剥离隐藏诊断,防止大型调试负载使会话记录膨胀。(#71637) 感谢 @Poo-Squirry。 - ACP/OpenCode:更新捆绑 acpx 运行时到 0.6.0,并覆盖 Docker 实时测试中的 OpenCode ACP 绑定路径。 - 提供商/OpenCode Go:在 Go 目录追赶时添加 DeepSeek V4 Pro 和 DeepSeek V4 Flash。修复 #71587。 - 提供商/OpenCode Go:通过 OpenAI 兼容 Go 端点路由 DeepSeek V4 Pro/Flash,并抑制无效的 `reasoning_effort: "off"` 负载,修复 `opencode-go/deepseek-v4-flash` 的工具启用请求。修复 #71683。 - 插件/模型默认值:在配置的代理默认模型上运行 Skill Workshop 审查、Active Memory 召回和会话内存 slug 生成,而不是在钩子上下文缺乏模型元数据时使用硬编码 OpenAI SDK 后备。修复 #71659。 - 提供商/Venice:为 `venice/deepseek-v4-pro` 和 `venice/deepseek-v4-flash` 重放回合填充必需的 DeepSeek V4 `reasoning_content` 占位符,而不发送 Venice 拒绝的原生 DeepSeek `thinking` 控制。修复 #71628。 - 浏览器/现有会话:支持每个配置文件的 Chrome MCP 命令/参数,将 `cdpUrl` 映射到 `--browserUrl` 或 `--wsEndpoint`,并避免将端点标志与 `--userDataDir` 组合。修复 #47879、#48037 和 #62706。感谢 @puneet1409、@zhehao 和 @madkow1001。 - 媒体/插件:在将不受信任的文件交给 `file-type` 或 `jszip` 之前绑定 MIME 嗅探和 ZIP 存档预飞行,减少附件和 ClawHub 插件归档的解析器 CPU 和内存暴露。感谢 @vincentkoc。 - 内存主机 SDK:仅当 Undici 将代理该目标时,对远程嵌入和批处理 HTTP 调用使用受信任的 env-proxy 模式,为 `ALL_PROXY`-only 和 `NO_PROXY` 旁路情况保留 SSRF DNS 固定。修复 #52162。(#71506) 感谢 @DhtIsCoding。 - 网关/仪表板:用 `https://`/`wss://` 渲染控制 UI 和 WebSocket 链接当 `gateway.tls.enabled=true`,包括 `openclaw gateway status`。修复 #71494。(#71499) 感谢 @deepkilo。 - 代理/OpenAI 兼容:当工具存在时,默认代理/本地补全工具请求到 `tool_choice: "auto"`,以便提供商进入本机工具调用模式而不是用纯文本工具指令回复。(#71472) 感谢 @Speed-maker。 - OpenAI 图像生成:对 Codex OAuth 响应传输使用 `gpt-5.5` 而不是退休的 `gpt-5.4` 模型,修复 ChatGPT Codex 图像生成的 500。修复 #71513。感谢 @baolongl。 - OpenAI 图像生成:将透明背景默认模型请求路由到 `gpt-image-1.5`,记录预期的 `image_generate` 调用形状,并保持 Azure/自定义 OpenAI 兼容部署名称不变。 - Google 视频生成:下载直接 MLDev Veo `video.uri` 结果而不是通过 Files API 路径传递它们,修复成功生成/轮询后的 404。修复 #71200。感谢 @panhaishan。 - Google 视频生成:回退到 REST `predictLongRunning` Veo 端点用于仅文本 SDK 404,同时保持参考图像/视频生成在 SDK 路径上。修复 #62309 和 #63008。(#62343) 感谢 @leoleedev。 - MiniMax 音乐生成:将捆绑默认模型从不支持的 `music-2.5+` ID 切换到当前 `music-2.6` API 模型。修复 #64870 并解决 #62315 的音乐默认。感谢 @noahclanman 和 @edwardzheng1。 - Cron:记录被网关重启中断的 cron 任务分类账记录在原始 `runningAtMs` 处失败,跳过不安全启动重放,并禁用中断的一次性作业,以便它们显示可见失败而不是静默消失或重复工作。修复 #59056、#61343、#63657 和 #59301。感谢 @ponchoooPenguin、@daemic24、@myradon 和 @hikiwibot。 - Cron 工具:在网关验证之前恢复平面顶级调度简写,如 `cron`、`tz` 和 `staggerMs`,以便模型生成的 cron 添加/更新调用保留 cron 抖动设置。 - Cron:在启动重新计算运行时间之前,将平面遗留作业行与顶级 `cron`、`tz`、`session` 和 `message` 字段水合为规范调度、目标和负载对象。修复 #43351。 - 代理/回复:让挂起的群聊历史触发裸提及回合,而不将仅元数据入站上下文视为用户输入。修复 #71489。(#71520) 感谢 @SymbolStar。 - Google 媒体生成:在调用 Google GenAI SDK 之前从 Google 音乐/视频提供商基础 URL 剥离配置的尾部 `/v1beta`,防止加倍 `/v1beta/v1beta` 路径。修复 #63240。(#63258) 感谢 @Hybirdss。 - Discord:恢复直接消息语音备注预飞行转录,并将仅 URL Ogg/Opus 语音附件分类为音频,同时跳过没有可用 URL 的部分附件。修复 #61314 和 #64803。 - 插件/构建:将捆绑插件技能树复制到 `dist-runtime`,扩大 Windows 符号链接复制后备,并从 `lstat` 指纹运行时依赖,以便符号链接类目录条目不能崩溃阶段。 - Google Chat:当打字指示器消息被删除或不能再更新时保留回复文本,以便媒体标题和第一文本块被重新发送而不是静默消失。(#71498) 感谢 @colin-lgtm。 - Cron:容忍启动、主会话系统事件负载和人类可读 `cron list` 输出中的格式错误遗留作业行,以便缺失 `state`、`payload.text` 或显示字段不再崩溃调度程序或 CLI。修复 #66016、#65916、#64137、#57872、#59968、#63813、#52804 和 #43163。(#71509) 感谢 @vincentkoc。 - CLI/模型:使 `openclaw models scan` 在没有 `OPENROUTER_API_KEY` 配置时回退到公共 OpenRouter 免费模型元数据,避免配置机密解析用于显式 `--no-probe` 扫描,并将扫描超时应用于 OpenRouter 目录请求。 - 飞书:保持流式卡片到每回合一个实时卡片,在有意义文本边界后刷新节流卡片编辑,并跳过精确块/部分重复,以便工具重型回复不重复卡片输出。感谢 @allan0509。 - 飞书:通过剥离泄漏的推理标签、保留跨块部分快照、启用主题线程流式卡片、省略通用 `main` 卡片标题、公开瞬态工具/压缩状态以及关闭失败后清理流式状态,完成流式卡片重复收尾。感谢 @sesame437、@Vicky-v7、@maoku-family、@Pengxiao-Wang 和 @Maple778。 - Telegram:通过回退到最终发送恢复不完整的部分流预览,当模糊最终编辑失败否则将保留答案的严格前缀时。修复 #71525。(#71554) 感谢 @sahilsatralkar。 - 控制 UI/聊天:将助手令牌/模型上下文详情折叠在显式上下文披露后面,并在消息页脚显示完整日期,使历史转录时间清晰没有嘈杂的默认元数据。(#71337) 感谢 @BunsDev。 - OpenAI/Codex OAuth:用代理/区域提示解释 `unsupported_country_region_territory` 令牌交换失败,而不是显示通用 OAuth 错误。修复 #51175。(#71501) 感谢 @vincentkoc 和 @wulala-xjj。 - 浏览器/Linux:对于没有显示服务器的主机,回退到本地管理配置文件的无头模式,同时保留显式每个配置文件的 headed 覆盖和报告无头源。(#60953) 感谢 @rrpsantos。 - Telegram:移除启动持久化偏移 `getUpdates` 预飞行,以便轮询重启在运行程序开始之前不自我冲突。修复 #69304。(#69779) 感谢 @chinar-amrutkar。 - Telegram:即使 grammY 报告运行程序不运行而其任务仍挂起,也保持轮询停滞监视器活动,以便重建传输不能离开 `getUpdates` 静默直到手动网关重启。修复 #69064。感谢 @LDLoeb。 - 子代理:当父公告回合完成没有可见负载时回退到直接补全交付,以便子结果仍然到达频道支持的请求者会话。 - 子代理:告诉父代理在等待子完成事件时使用 `sessions_yield`,防止 GPT-5 快速运行在生成工人后静默结束。 - 浏览器/Playwright:在受保护的导航期间忽略 benign 已经处理的路线竞争,以便浏览器页面任务不再失败当 Playwright 在飞行中拆除路线时。(#68708) 感谢 @Steady-ai。 - 浏览器/CLI:延迟加载浏览器命令组和插件运行时服务,以便 `openclaw browser --help` 可以渲染而不加载完整的浏览器自动化堆栈。修复 #65400。(#65460, #66640) 感谢 @pandego 和 @Tianworld。 - 浏览器/CLI:从 CLI 启动元数据提供预计算的 `openclaw browser --help` 文本,避免常见帮助调用的完整插件/配置启动路径。 - 浏览器/下载:用 OpenClaw 下载首选项种子管理的 Chrome 配置文件,并捕获未管理的点击触发下载到受保护的下载目录下,同时显式下载等待器仍然拥有它们的目标文件。(#64558) 感谢 @Pearcekieser。 - 浏览器/Chrome:当 `browser.noSandbox` 启用时停止传递冗余 `--disable-setuid-sandbox`;`--no-sandbox` 保持有效的沙箱退出。(#67939) 感谢 @sebykrueger。 - 浏览器/客户端:停止告诉代理在瞬态超时或取消失败后永久避免浏览器;为持久不可用/速率限制情况保持无重试提示。(#46505) 感谢 @jriff。 - 浏览器/aria 快照:当 Playwright 可用时,通过后端 DOM ID 将 `format=aria` `axN` 引用绑定到实时 DOM 节点,以便后续浏览器操作可以使用这些引用而不超时。(#62434) 感谢 @MrKipler。 - Telegram:防止相同机器人令牌的重复进程内长轮询器,并为外部重复轮询器添加更清晰的 `getUpdates` 冲突诊断。修复 #56230。感谢 @Co-Messi。 - 浏览器/Linux:在要求用户设置 `browser.executablePath` 之前检测 `/opt/google`、`/opt/brave.com`、`/usr/lib/chromium` 和 `/usr/lib/chromium-browser` 下的 Chromium 基础安装。(#48563) 感谢 @lupuletic。 - 会话/浏览器:当空闲、每日、`/new` 或 `/reset` 会话滚动归档先前转录时关闭跟踪的浏览器标签页,防止标签页泄漏到旧会话之外。感谢 @jakozloski。 - 会话/分叉:当缓存总数陈旧或缺失时回退到转录估计父令牌计数,以便过大线程分叉新鲜开始而不是克隆完整父转录。感谢 @jalehman。 - OpenAI/Codex:通过顶级 `instructions` 发送 Codex Responses 系统提示,同时保留现有的原生 Codex 负载控制。 - MCP/CLI:在一次性 `openclaw agent` 和 `openclaw infer model run` 网关/本地执行结束时退休捆绑 MCP 运行时,以便重复脚本化运行不累积 stdio MCP 子进程。修复 #71457。感谢 @spartoviMD。 - OpenAI/Codex 图像生成:将遗留 `openai-codex.baseUrl` 值(如 `https://chatgpt.com/backend-api`)规范化为 Codex Responses 后端,然后再调用 `gpt-image-2`,匹配聊天传输。修复 #71460。感谢 @GodsBoy。 - 控制 UI:使 `/usage` 使用新鲜上下文快照用于上下文百分比,并在使用概览缓存命中分母中包含缓存写入令牌。修复 #47885。感谢 @imwyvern 和 @Ante042。 - GitHub Copilot:在重放期间保留加密 Responses 推理项目 ID,以便 Copilot 可以跨请求验证加密推理负载。(#71448) 感谢 @a410979729-sys。 - GitHub Copilot:无论 `encrypted_content` 是否存在,从不重写连接绑定的推理项目 ID,修复使用 `gpt-5.3-codex` 和未来通过前向兼容捕获与 `reasoning: false` 的 Codex 模型的 400“加密内容 item_id 不匹配”错误。还识别 Codex 命名模型为推理 capable,以便它们继承正确的能力标志。引用 #68735。感谢 @InvalidPandaa。 - 代理/回复:当流式助手块仅包含空白时恢复最终答案文本,防止完成的回合作为空负载错误表面。修复 #71454。(#71467) 感谢 @Sanjays2402。 - 飞书/TTS:在发送原生飞书音频气泡之前将语音意图 MP3 和其他音频回复转码为 Ogg/Opus,同时保持普通 MP3 附件作为文件。修复 #61249 和 #37868。感谢 @sg1416-zg 和 @ycjlb2023-peteryi。 - WhatsApp/TTS:将 MP3/WebM 音频(包括 Microsoft Edge TTS 输出)转码为 Ogg/Opus,然后再发送 PTT 语音备注。 - QQBot/TTS:通过将 TTS 合成为原生 QQ 语音消息来 honor 普通 `audioAsVoice` 回复,并将入站仅语音消息标记为音频媒体,而不向通用媒体上下文暴露原始语音路径。 - 提供商/SenseAudio:通过 `tools.media.audio` 添加捆绑 SenseAudio 批处理音频转录,使用 `SENSEAUDIO_API_KEY` auth。(#66943) 感谢 @Fl0rencess720。 - 提供商/MiniMax:让 TTS 在回退到 `MINIMAX_API_KEY` 之前使用 MiniMax 门户 OAuth 和 Token Plan 凭据,并包括当前 TTS HD 模型 ID。修复 #55017。感谢 @zx15210404690-hash。 - Telegram/webhook:在运行 bot 中间件之前确认验证的 webhook 更新,保持慢速代理回合不会触发 Telegram 传递重试,同时保留每个聊天处理通道。修复 #71392。感谢 @joelforsberg46-source。 - MCP/配置重载:通过处置缓存的会话 MCP 运行时热应用 `mcp.*` 更改,并在网关关闭期间处置捆绑 MCP 运行时,以便移除的 `mcp.servers` 条目及时 reap 子进程。修复 #60656。感谢 @xieyuanqing。 - Active Memory:保持静默召回子代理计费/auth 失败出共享 auth-profile 冷却状态,以便 Claude CLI 额外使用拒绝不能禁用正常 Claude 支持的回合。修复 #71284。(#71539) 感谢 @vishutdhar 和 @obviyus。 - Auth/Claude CLI:将刷新的 Claude CLI OAuth 凭据同步到管理的 auth 配置文件,以便长期运行的 Claude CLI 运行停止回退到陈旧的 OpenClaw 快照。(#70902) 感谢 @starvex。 - 会话:使 `sessions_spawn(mode="session")` 错误命名可用替代品,当当前频道不能绑定子代理线程时。修复 #67400。(#67790) 感谢 @stainlu。 - 代理/Claude CLI:通过 Claude 的提示文件标志传递 OpenClaw 系统提示,以便 Windows 运行避免 argv 长度失败而不改变系统提示语义。修复 #69158。(#69211) 感谢 @skylee-01、@cassioanorte、@Syu0 和 @Stache73。 - 代理/CLI 会话:将 `google-gemini-cli` 会话 auth-epoch 绑定到 `~/.gemini/oauth_creds.json` 中的 Google 账户身份,以便 Gemini 支持的代理在网关重启后恢复它们的对话,而不是铸造新鲜会话,并且当认证的 Google 账户更改时使陈旧绑定无效。修复 #70973。(#71076) 感谢 @openperf。 - Slack:停止在助手编写的消息编辑块中将用户提及视为发送者 attribution,防止编辑的机器人消息欺骗提到的 DM 用户。(#71700) 感谢 @vincentkoc。 - Codex:消耗未授权的绑定对话入站声明,在它们可以落入其他声明处理器或入队 Codex 回合之前。(#71702) 感谢 @vincentkoc。 - Codex 媒体理解:要求批准检查的应用服务器图像回合,同时明确拒绝工具、文件、权限和 elicitation 批准请求用于边界图像 worker。(#71703) 感谢 @vincentkoc。 - 代理/Claude CLI:允许大的实时 `stream-json` JSONL 行达到现有的每回合原始限制,防止大的 Telegram、WebChat、MCP 和图像回合在旧 stdout 缓冲区上限上中止。修复 #71793、#71080 和 #70766。(#71897) 感谢 @chacher86、@shivamgrover21 和 @tpjordan。 - 代理/Claude CLI:在 CLI JSON 输出中解包嵌套 Claude 结果信封,以便委托的代理响应作为最终文本表面而不是原始结果 JSON。(#66819) 感谢 @mraleko。 - 代理/Claude CLI:将配置的 1M 上下文窗口覆盖应用于符合条件的 Claude CLI Opus 和 Sonnet 模型,当 `context1m` 启用时。(#70863) 感谢 @bidadh。 - 模型/状态:报告新鲜 Claude CLI 原生 auth 而不是陈旧的存储 `anthropic:claude-cli` 配置文件过期,当本地凭据当前时。修复 #71256。(#71332) 感谢 @matthiasjanke 和 @neeravmakwana。 - CLI 后端:在超预算 CLI 回合后压缩 OpenClaw 转录,并从压缩转录重新播种新鲜 CLI 会话,而不是陈旧的外部恢复状态。修复 #68329。(#71916) 感谢 @obviyus。 - Telegram:保持默认工具进度消息可见当答案预览流式传输被禁用时。(#71825) 感谢 @VACInc。 - 配置/模型:清除在更新模型选择器允许列表时取消选择的模型后备,包括提供商范围的设置流程。(#71596) 感谢 @rubencu。 - 代理/流式:在用户可见文本发出之前从流式助手回复中剥离命名空间 `<antml:thinking>` 推理标签。(#69288) 感谢 @xialonglee。