← 返回更新日志

OpenClaw v2026.4.25-beta.3 预发布

2026-04-26 · GitHub 原文
## 2026.4.25 ### 亮点 - 语音回复获得完整的 TTS 升级:`/tts latest`、聊天范围自动 TTS 控制、人格化、每代理/每账户覆盖,以及新增 Azure Speech、小米、本地 CLI、Inworld、火山引擎和 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 启动发现,并为慢速主机(如树莓派)提高启动后 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。 - 提供商/插件:在冷清单/安装元数据上保留入门和认证选择设置列表,并为尚未安装的提供商插件添加提供商索引安装元数据。感谢 @vincentkoc。 - 提供商/插件:在冷清单元数据上保留提供商设置指南和配置认证导入,并对设置/配置列表路径上的静态提供商运行时导入添加回归防护。感谢 @vincentkoc。 - CLI/能力:在 `model auth login` 实际运行前,保持能力命令注册不导入模型认证运行时。感谢 @vincentkoc。 - CLI/配置:在用户选择托管搜索设置前,将网络搜索配置提示保留在冷插件注册表元数据上。感谢 @vincentkoc。 - 插件/聊天命令:在 `/plugins enable` 和 `/plugins disable` 后刷新持久化插件注册表,匹配 CLI 变更路径。感谢 @vincentkoc。 - 插件/兼容性:将 `OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY` 标记为已弃用的紧急开关,并引导操作员使用注册表修复。感谢 @vincentkoc。 - 插件/兼容性:扩展中央兼容性注册表,包含日期所有者、替换以及遗留 SDK、清单、设置、注册表迁移和代理运行时表面的最长三个月移除目标。感谢 @vincentkoc。 - 插件/注册表:当插件策略不再匹配当前配置时忽略陈旧的持久化注册表读取,并给生成的注册表文件打上“请勿编辑”警告。感谢 @vincentkoc。 - 配置/插件:在冷清单元数据上保持插件命令别名验证,而非导入运行时别名解析器。感谢 @vincentkoc。 - 安全/插件:在冷配置、环境变量和清单元数据上保持网络搜索凭据存在检查,而非导入网络搜索提供商运行时。感谢 @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:添加捆绑本地命令语音提供商,支持文件/标准输入输入、语音笔记 Opus 转换和电话 PCM 输出。(#56239)感谢 @solar2ain。 - 提供商/Inworld:添加 Inworld 作为捆绑语音提供商,支持流式 TTS 合成、语音列表、语音笔记输出和 PCM 电话输出。(#55972)感谢 @cshape。 - 提供商/火山引擎:添加火山引擎/字节跳动 Seed Speech 作为捆绑 TTS 提供商,支持 API 密钥认证、原生 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。 ### 修复 - 插件/CLI:允许标志驱动的 `openclaw channels add` 从其默认源安装选定的频道插件,而无需打开交互式提示,修复了 stdin 关闭自动化中已发布的 npm Telegram 设置。感谢 @codex。 - 插件/启动:在网关启动期间加载默认 `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。 - 入门/认证:通过范围设置提供商运行清单拥有的提供商认证选择,以便选择 OpenAI Codex 浏览器/设备认证不再在 OAuth 开始前加载每个提供商运行时。感谢 @shakkernerd。 - 入门/认证:在清单/设置元数据上保留认证后默认模型策略查找,以便下一个提示出现时不加载广泛的提供商运行时。感谢 @shakkernerd。 - 入门/模型:将跳过认证和提供商范围模型选择器提示保留在完整全局模型目录路径之外,并缓存提供商目录钩子解析,使设置不再在认证后停滞(大型插件注册表上)。感谢 @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:将原始的“代理在回复前失败”运行器失败保留在 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` 迁移遗留运行时策略配置,通过 `claude-cli` 路由规范 Anthropic 模型(不将 CLI 后端别名传递给嵌入式 harness 选择),并在频道启动前加载 CLI 后端所有者插件。修复 #71957。感谢 @WolvenRA。 - CLI/更新:通过状态和超时保护 Windows 计划任务停止,使自动更新重启不会在 `schtasks /End` 上无限期挂起(陈旧监听器清理前)。修复 #69970。感谢 @yangswld 和 @sherlock-huang。 - Windows 安装/Lobster:当 `npm_execpath` 指向原生 pnpm 二进制文件时直接执行 `pnpm.exe`,为 Lobster 嵌入式运行时添加已安装包后备,并将 Lobster 运行器回归测试包含在 Windows CI 中。修复 #69456。感谢 @igormf。 - 网关/安装:当当前网关嵌入陈旧的网关认证时刷新已加载网关服务安装,而非返回已安装,避免令牌轮换后的 LaunchAgent 令牌不匹配循环。修复 #70752。感谢 @hyspacex。 - 更新:在全局安装验证和打包的发行版修剪期间忽略捆绑插件 `.openclaw-install-stage` 目录,以便遗留运行时依赖阶段文件不会将成功更新变为“意外打包发行版文件”失败。修复 #71752。感谢 @waynegault。 - CLI/更新:当更新后插件同步失败时失败包更新,并在信任未更改工件前刷新遗留 npm 插件安装记录,防止成功更新以陈旧或失败的插件状态重启。感谢 @vincentkoc 和 @shakkernerd。 - 发行/更新:在包清单生成前拒绝预填充的捆绑插件 `.openclaw-install-stage` 目录(包括混合大小写路径变体),以便发行压缩包不能 shipped 中毒的运行时依赖阶段碎片。修复 #71752。感谢 @hclsys。 - Node 运行时:在网关重启间保持节点主机重试计时器存活,并在终端凭证暂停时退出,以便受监督的节点不会变成静默僵尸。修复 #69800。感谢 @meroli28。 - 网关/插件:在启动时阻止持久化 WhatsApp 认证状态激活捆绑频道运行时依赖修复(当 `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/任务:在标记为 `lost` 前,从持久运行日志和作业状态恢复完成的 cron 分类账记录,减少孤立 cron 运行的误报“支持会话缺失”审计错误,并保持离线 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 安装上 freshly written 网关单元尚不可见时,在第二次守护进程重新加载后重试 `systemctl --user enable`。修复 #65184。感谢 @liushuaiiu。 - Telegram:发送原生引用回复时保留精确选择的引用文本,并在 Telegram 拒绝引用参数时使用遗留回复重试。(#71952)感谢 @rubencu。 - 插件/CLI:在冷 `openclaw plugins list` 输出中保留清单名称、描述、格式和源元数据,不导入插件运行时。感谢 @shakkernerd。 - 安全/审计:从只读插件索引元数据读取频道暴露和插件允许列表所有权,以便冷审计不依赖已加载频道运行时。感谢 @shakkernerd。 - 插件/聊天:将 `/plugins list`、`/plugins enable` 和 `/plugins disable` 保留在持久化插件索引路径上,以便聊天插件管理在执行前不加载诊断/运行时插件注册表。感谢 @shakkernerd。 - 插件/诊断:通过已安装索引清单元数据读取工作区插件状态和遗留网络搜索所有权,而非广泛的清单注册表扫描。感谢 @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` 命令启动浏览器能力 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 反应,匹配其他反应能力频道。修复 #26183。感谢 @MrUnforsaken。 - 提供商/Z.AI:将 OpenClaw 思考控制映射到 Z.AI 的 `thinking` 负载,并通过 `params.preserveThinking` 添加选择加入的保留思考重放,以便 GLM 5.x 在请求时保留先前的 `reasoning_content`。修复 #58680。感谢 @xuanmingguo。 - 频道/状态:默认在清单和包元数据上保持只读频道列表,仅为显式后备调用者加载设置运行时。感谢 @shakkernerd。 - 插件:当调用方已知道所属插件集时,将设置和网络提供商元数据清单读取范围限定为显式插件 ID。感谢 @vincentkoc。 - 插件/入门:将入门安装记录索引写入延迟到受保护的配置提交窗口,以便设置失败不能使插件索引领先于 `openclaw.json`。感谢 @shakkernerd。 - 插件/注册表:从已安装插件索引解析网络提供商所有权,而非在机密、工具和定价路径上进行广泛的清单扫描。感谢 @shakkernerd。 - 配置/提供商:在配置的模型 `input` 值中接受 `video` 和 `audio`,并在提供商目录条目中保留它们。修复 #20721。感谢 @alvinttang。 - 模型/认证:对认证写入命令(`add`、`login`、`setup-token`、`paste-token` 和 GitHub Copilot 快捷方式)遵守父级 `--agent` 标志,以便 OAuth/API 密钥/令牌结果写入请求的代理存储而非默认代理。修复 #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:从频道插件能力而非语音核心拥有的频道 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,并遵循配置的 `params.chat_template_kwargs` 用于 OpenAI 兼容补全,以便 vLLM/Nemotron 回复保持可见而非变为仅思考。修复 #71891。感谢 @jmystaki-create 和 @dennis-lynch。 - 频道/回复:从用户可见助手回复和模型重播历史中剥离复制的入站元数据块,以便 Discord/vLLM 会话在模型回显它们后不泄漏“对话信息”/“不受信任...消息体”信封。修复 #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 广告,同时通过 `OPENCLAW_DISABLE_BONJOUR=0` 保持主机/macvlan 选择加入。修复 #71879。感谢 @gbballpack。 - CLI/状态:将 OpenClaw Serve/Funnel 设置标记为“Tailscale 公开”,并在可用时单独显示守护程序状态,以便 `gateway.tailscale.mode: "off"` 不再读作 Tailscale 守护程序已停止。修复 #71790。感谢 @pesvobodak。 - 插件/Bonjour:当广告商在 `probing` 或 `announcing` 中卡住时,停止网关在 `CIAO PROBING CANCELLED` 上崩溃循环;Bonjour 在重复失败重启后对当前网关进程禁用自身,同时网关保持运行。修复 #69011。感谢 @siddharthaagarwalofficial-ux、@FiredMosquito831 和 @spikefcz。 - 网关/Fly.io:从实际运行时绑定和端口种子控制 UI 允许来源,以便 CLI 驱动的非环回启动在配置存在前不崩溃。修复 #71823。 - macOS/远程 SSH:在将 SSH 传输 URL 固定到本地环回隧道时保持发现的网关主机在 `gateway.remote.sshTarget` 中,以便浏览器自动化不回归到阻塞的非环回 `ws://` 端点。修复 #67336。 - 网关/代理:从直接网关启动引导环境代理调度,以便提供商和插件网络请求在第一个嵌入式代理尝试运行前遵守 `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 菜单 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 认证为共享网关令牌/密码(无过期设备对 scope 基线),以便内部调用不再命中 `scope-upgrade` 配对提示,而远程、浏览器、节点、设备令牌和显式设备路径仍需要正常配对批准。修复 #63548。 - 提供商/Azure OpenAI:为部署范围的图像生成请求提供更长的 600 秒默认超时,以便慢速 `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 视觉条目)前报告“未知模型”。修复 #66486。感谢 @zhanggpcsu。 - QQ Bot:使用出站引用索引标记忽略自回声机器人消息,防止镜像回复重新进入代理循环,同时仍允许用户引用机器人回复。修复 #71912。感谢 @wangyc6003。 - 会话:分离重置新鲜度与会话存储 `updatedAt`,以便心跳、cron、执行和网关记账不再阻止配置的每日/空闲重置滚动长期频道会话。修复 #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.*` 上保留矩阵 DM 允许列表修复,而非写入无效的顶级 `dmPolicy` 键。修复 #71757。 - 插件/Windows:保持捆绑插件 Jiti 加载器远离 Windows 上的原生导入路径,以便 Telegram 等频道插件不再在 `C:\...` 路径上崩溃 `ERR_UNSUPPORTED_ESM_URL_SCHEME`。修复 #71749。感谢 @smeyer9。 - 提供商/Ollama:使用 Ollama 当前 `/api/web_search` 端点,并遵守 `https://ollama.com` 模型提供商基础 URL 用于 Ollama 网络搜索。修复 #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。 - 插件/提供商:遵守显式插件候选列表而非从本地状态读取持久化注册表快照,保持候选范围提供商发现封闭。感谢 @vincentkoc。 - 插件/诊断:将捆绑插件运行时依赖修复保留在托管 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 清晰失败而非静默回退到其默认。 - 插件/语音通话:在网关启动时将缺失的提供商凭据视为设置不完整,并记录缺失密钥为警告而非运行时启动错误,同时保持显式命令/工具错误(使用时)。感谢 @vincentkoc。 - Android/对话模式:防止快速或重复最终聊天事件在对话模式等待自身响应时重复 TTS 播放。修复 #46546。 - 工具/check:changed:将父级重检查锁标记传递给 lint 通道,以便 `pnpm check:changed` 不再等待其自己的 `lint:extensions` 子进程。感谢 @vincentkoc。 - CLI/完成:在注册 `openclaw onboard` 选项前对提供商认证标志去重,以便更新期间完成缓存刷新不再在陈旧核心后备标志与插件清单标志重叠时失败。修复 #71667。 - 诊断/跟踪:从当前提示快照报告实时上下文使用情况,而非提供商回合总计,避免缓存或工具繁重运行上的错误接近满上下文峰值。 - 提供商/Google:为 Gemini TTS 和电话 TTS 遵守 `models.providers.google.request.allowPrivateNetwork`,匹配 Google 图像生成和媒体理解。(#71723)感谢 @ro-hansolo。 - 提供商/MiniMax:注册 `minimax-portal` 用于音乐和视频生成,在共享 `music_generate` 和 `video_generate` 工具间保留 OAuth 认证和区域 MiniMax 基础 URL。(#63241)感谢 @tars90percent。 - 提供商/入门:通过将其视频生成认证选择范围限定到媒体设置流程,将 Runway 和阿里云模型工作室保留在文本推理设置选择器之外。(#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` 后备打开标签页时遵守配置的远程和 `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"]` 而非仅子代理允许列表。感谢 @vincentkoc。 - 控制 UI/快速设置:将助手头像覆盖持久化到浏览器本地存储(镜像用户头像),以便上传的图像数据 URL 不再以“太大:期望字符串具有 <=200 个字符”失败配置验证。同时提升网关侧 `ui.assistant.avatar` 长度上限以匹配非 UI 客户端直接写入字段的用户头像大小预算。感谢 @BunsDev。 - 插件 SDK:跨重复源/分发模块图共享诊断事件订阅,以便遗留根 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。 - 插件/模型默认值:在钩子上下文缺乏模型元数据时,在配置的代理默认模型(而非硬编码 OpenAI SDK 后备)上运行技能工作室审查、主动记忆召回和会话记忆 slug 生成。修复 #71659。 - 提供商/Venice:为 `venice/deepseek-v4-pro` 和 `venice/deepseek-v4-flash` 重放回合填充必需的 DeepSeek V4 `reasoning_content` 占位符(不发送 Venice 拒绝的本地 DeepSeek `thinking` 控制)。修复 #71628。 - 浏览器/existing-session:支持每配置文件 Chrome MCP 命令/参数,将 `cdpUrl` 映射到 `--browserUrl` 或 `--wsEndpoint`,并避免端点标志与 `--userDataDir` 组合。修复 #47879、#48037 和 #62706。感谢 @puneet1409、@zhehao 和 @madkow1001。 - 媒体/插件:在将不受信任的文件交给 `file-type` 或 `jszip` 前约束 MIME 嗅探和 ZIP 存档预检,减少附件和 ClawHub 插件归档的解析器 CPU 和内存暴露。感谢 @vincentkoc。 - 内存主机 SDK:仅当 Undici 将代理该目标时,对远程嵌入和批量 HTTP 调用使用受信任的环境代理模式,为 `ALL_PROXY` 仅和 `NO_PROXY` 绕过情况保留 SSRF DNS 固定。修复 #52162。(#71506)感谢 @DhtIsCoding。 - 网关/仪表板:在 `gateway.tls.enabled=true` 时用 `https://`/`wss://` 渲染控制 UI 和 WebSocket 链接(包括 `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 视频生成:对仅文本 SDK 404 回退到 REST `predictLongRunning` Veo 端点,同时保持参考图像/视频生成在 SDK 路径上。修复 #62309 和 #63008。(#62343)感谢 @leoleedev。 - MiniMax 音乐生成:将捆绑默认模型从不支持的 `music-2.5+` ID 切换到当前 `music-2.6` API 模型。修复 #64870 并解决 #62315 的音乐默认。感谢 @noahclanman 和 @edwardzheng1。 - Cron:将网关重启中断的作业记录为在其原始 `runningAtMs` 失败,跳过不安全启动重放,并禁用中断的一次性作业(以便它们显示可见失败而非静默消失或重复工作)。修复 #59056、#61343、#63657 和 #59301。感谢 @ponchoooPenguin、@daemic24、@myradon 和 @hikiwibot。 - Cron 工具:在网关验证前恢复平面顶级计划简写(如 `cron`、`tz` 和 `staggerMs`),以便模型生成的 cron 添加/更新调用保留 cron 抖动设置。感谢 @tyxben。 - 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` 指纹运行时依赖(使类符号链接目录条目不能崩溃阶段)。感谢 @vincentkoc。 - 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:对无显示服务器的主机上的本地托管配置文件回退到无头模式,同时保留显式每配置文件有头覆盖并报告无头源。(#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。 - 会话/分支:当缓存总数陈旧或缺失时回退到转录估计父令牌计数,以便过大线程分支 fresh 开始而非克隆完整父转录。感谢 @jalehman。 - OpenAI/Codex:通过顶级 `instructions` 发送 Codex 响应系统提示,同时保留现有原生 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 响应后端(在调用 `gpt-image-2` 前),匹配聊天传输。修复 #71460。感谢 @GodsBoy。 - 控制 UI:使 `/usage` 使用新鲜上下文快照进行上下文百分比,并在使用概览缓存命中分母中包含缓存写入令牌。修复 #47885。感谢 @imwyvern 和 @Ante042。 - GitHub Copilot:在重放期间保留加密响应推理项目 ID,以便 Copilot 可跨请求验证加密推理负载。(#71448)感谢 @a410979729-sys。 - GitHub Copilot:无论 `encrypted_content` 是否存在,绝不重写连接绑定的推理项目 ID,修复 `gpt-5.3-codex` 和未来 Codex 模型(落入前向兼容捕获且 `reasoning: false`)的 400“加密内容 item_id 不匹配”错误。同时将 Codex 命名模型识别为推理能力,以便它们继承正确能力标志。参考 #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 语音消息来遵守普通 `audioAsVoice` 回复,并将入站仅语音消息标记为音频媒体(不向通用媒体上下文暴露原始语音路径)。 - 提供商/SenseAudio:通过 `tools.media.audio` 添加捆绑 SenseAudio 批量音频转录,支持 `SENSEAUDIO_API_KEY` 认证。(#66943)感谢 @Fl0rencess720。 - 提供商/MiniMax:让 TTS 在回退到 `MINIMAX_API_KEY` 前使用 MiniMax 门户 OAuth 和 Token Plan 凭据,并包含当前 TTS HD 模型 ID。修复 #55017。感谢 @zx15210404690-hash。 - Telegram/webhook:在运行机器人中间件前确认验证的 webhook 更新,保持慢速代理回合不触发 Telegram 传递重试,同时保留每聊天处理通道。修复 #71392。感谢 @joelforsberg46-source。 - MCP/配置重载:通过处置缓存的会话 MCP 运行时热应用 `mcp.*` 更改,并在网关关闭期间处置捆绑 MCP 运行时,以便移除的 `mcp.servers` 条目快速回收子进程。修复 #60656。感谢 @xieyuanqing。 - 主动记忆:保持静默召回子代理账单/认证失败出共享认证配置文件冷却状态,以便 Claude CLI 额外使用拒绝不禁用正常 Claude 支持回合。修复 #71284。(#71539)感谢 @vishutdhar 和 @obviyus。 - 认证/Claude CLI:将刷新的 Claude CLI OAuth 凭据同步到托管认证配置文件,以便长期运行的 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` 会话认证时期绑定到 `~/.gemini/oauth_creds.json` 中的 Google 账户身份,以便 Gemini 支持代理在网关重启后恢复对话(而非铸造新会话),且 stale 绑定在认证 Google 账户更改时失效。修复 #70973。(#71076)感谢 @openperf。 - Slack:停止在助手编写的消息编辑块中将用户提及视为发送者归属,防止编辑的机器人消息欺骗提到的 DM 用户。(#71700)感谢 @vincentkoc。 - Codex:在它们可落入其他声明处理器或入队 Codex 回合前消耗未授权绑定对话入站声明。(#71702)感谢 @vincentkoc。 - Codex 媒体理解:要求批准检查的应用服务器图像回合,同时明确拒绝工具、文件、权限和 elicitation 批准请求(针对有界图像工作器)。(#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:对 eligible Claude CLI Opus 和 Sonnet 模型应用配置的 1M 上下文窗口覆盖(当 `context1m` 启用时)。(#70863)感谢 @bidadh。 - 模型/状态:报告新鲜 Claude CLI 原生认证而非本地凭据当前时的陈旧存储 `anthropic:claude-cli` 配置文件过期。修复 #71256。(#71332)感谢 @matthiasjanke 和 @neeravmakwana。 - CLI 后端:在超预算 CLI 回合后压缩 OpenClaw 转录,并从压缩转录重新播种新鲜 CLI 会话(而非陈旧外部恢复状态)。修复 #68329。(#71916)感谢 @obviyus。 - Telegram:在答案预览流式传输禁用时保持默认工具进度消息可见。(#71825)感谢 @VACInc。 - 配置/模型:清除模型选择器允许列表更新时的取消选择模型后备,包括提供商范围设置流程。(#71596)感谢 @rubencu。 - 代理/流式:在用户可见文本发出前从流式助手回复中剥离命名空间 `<antml:thinking>` 推理标签。(#69288)感谢 @xialonglee。