← 返回更新日志

OpenClaw v2026.4.25-beta.4 预发布

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 覆盖范围扩展到模型调用、令牌使用、工具循环、测试平台运行、执行进程、出站交付、上下文组装和内存压力,并带有边界低基数属性。感谢 @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:将代理测试平台生命周期遥测导出为有界 `openclaw.harness.run` 跨度和 `openclaw.harness.duration_ms` 指标,以便 QA 实验室、Codex 和未来的测试平台共享一个跟踪形状。感谢 @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`,以便插件可以重用已注册的 OpenTelemetry SDK,同时保持 OpenClaw 诊断监听器连接。(#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。 - 提供商/Volcengine:添加 Volcengine/BytePlus 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 测试平台:要求 Codex 应用服务器 `0.125.0` 或更新版本,并通过 OpenClaw 钩子中继覆盖原生 MCP `PreToolUse`、`PostToolUse` 和 `PermissionRequest` 有效负载。感谢 @vincentkoc。 - 代理/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 实验室覆盖。感谢 @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` 迁移遗留运行时策略配置,通过 `claude-cli` 路由规范 Anthropic 模型而不将 CLI 后端别名传递给嵌入式测试平台选择,并在频道启动之前加载 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` 目录,以便剩余的运行时依赖阶段文件不会将成功的更新变成 `unexpected packaged dist file` 失败。修复 #71752。感谢 @waynegault。 - CLI/更新:当更新后插件同步失败时失败包更新,并在信任未更改的工件之前刷新遗留 npm 插件安装记录,防止成功的更新以陈旧或失败的插件状态重启。感谢 @vincentkoc 和 @shakkernerd。 - 发行/更新:在包清单生成之前拒绝预填充的捆绑插件 `.openclaw-install-stage` 目录,包括混合大小写路径变体,以便发行压缩包不能发送中毒的运行时依赖阶段碎片。修复 #71752。感谢 @hclsys。 - Node 运行时:在网关重启之间保持节点主机重试计时器存活,并在终端凭据暂停时退出,以便受监督的节点不会变成沉默的僵尸。修复 #69800。感谢 @meroli28。 - 网关/插件:停止持久化的 WhatsApp 身份验证状态在启动期间激活捆绑频道运行时依赖修复,当 `channels.whatsapp` 缺失时,避免打包的 Linux 安装上的 npm/git 停顿。修复 #71994。感谢 @xiao398008。 - 网关/设备令牌:在令牌轮换和撤销内强制调用者范围包含,以便仅配对的会话不能变异更高范围的操作员令牌。修复 #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 旋转,并避免声称安装了 `node@24` 当 Homebrew keg 二进制文件缺失时。修复 #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。 - 信号:通过 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:在 freshly written 网关单元在迁移的 systemd 安装上尚不可见时,在第二个守护进程重新加载后重试 `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。 - 网关:在插件、画布和控制 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。 - 插件:当调用方已经知道拥有插件集时,将设置和网络提供商元数据清单读取范围限定为显式插件 ID。感谢 @vincentkoc。 - 插件/入门:将入门安装记录索引写入延迟到受保护的配置提交窗口,以便设置失败不能使插件索引领先于 `openclaw.json`。感谢 @shakkernerd。 - 插件/注册表:从已安装插件索引解析网络提供商所有权,而不是在机密、工具和定价路径上广泛的清单扫描。感谢 @shakkernerd。 - 配置/提供商:在配置的模型 `input` 值中接受 `video` 和 `audio`,并在提供商目录条目中保留它们。修复 #20721。感谢 @alvinttang。 - 模型/身份验证:尊重父 `--agent` 标志用于身份验证写入命令(`add`、`login`、`setup-token`、`paste-token` 和 GitHub Copilot 快捷方式),以便 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 测试平台,而不是 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 会话在模型回显它们之后不泄漏 `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 广告,同时通过 `OPENCLAW_DISABLE_BONJOUR=0` 保留主机/macvlan 选择加入。修复 #71879。感谢 @gbballpack。 - CLI/状态:将 OpenClaw Serve/Funnel 设置标记为 `Tailscale exposure` 并单独显示守护程序状态(当可用时),以便 `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:在 `gateway.remote.sshTarget` 中保持发现的网关主机,同时将 SSH 传输 URL 固定到本地环回隧道,以便浏览器自动化不回归到阻塞的非环回 `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。 - 飞书:保持合成卡片操作和机器人菜单 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 测试平台: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/网关:保持诊断探测从创建第一次只读设备配对,同时仍然为详细的读探测重用缓存的设备令牌。修复 #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 上的本机入门/安装烟雾。 - 插件/诊断:通过相同的打包插件目录解析器读取捆绑频道诊断能力,用于插件加载,以便发布的安装保持 Matrix DM 允许列表修复在 `channels.matrix.dm.*` 上而不是写入无效的顶级 `dmPolicy` 键。修复 #71757。 - 插件/Windows:保持捆绑插件 Jiti 加载器关闭 Windows 上的本机导入路径,以便频道插件如 Telegram 不再崩溃 `ERR_UNSUPPORTED_ESM_URL_SCHEME` 在 `C:\...` 路径上。修复 #71749。感谢 @smeyer9。 - 提供商/Ollama:使用 Ollama 的当前 `/api/web_search` 端点并尊重 `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。 - 插件/提供商:尊重显式插件候选列表而不是从本地状态读取持久化注册表快照,保持候选范围提供商发现封闭。感谢 @vincentkoc。 - 插件/诊断:保持捆绑插件运行时依赖修复在托管 OpenClaw 阶段内,即使用户 npm 前缀/全局配置将 npm 指向 `$HOME/node_modules`。修复 #71730。 - ACP/sessions_spawn:当调用者显式请求 `runtime="acp"` 时拒绝正常 OpenClaw 配置代理 ID,同时允许配置 `runtime.type="acp"` 的代理解析到他们的 ACP 测试平台 ID。修复 #63914。 - ACP/sessions_spawn:将 `runTimeoutSeconds` 应用于 ACP 子回合并在背景子代理通道调度这些回合,以便配额停滞的 ACP 测试平台不永久占用主代理通道。修复 #68823。 - ACP/一次性:在关闭完成的一次性 ACP 运行之前协调运行时会话身份,以便完成的 `sessions.json` 条目不卡住 `acp.identity.state="pending"`。 - ACPX:捆绑 `[email protected]` 以便不支持的通用模型覆盖清楚地失败而不是静默回退到目标适配器默认。 - ACP/模型:记录非-Codex ACP 模型覆盖需要 ACP `models` 加上 `session/set_model` 的适配器支持,以便不支持的测试平台清楚地失败而不是静默回退到它们的默认。 - 插件/语音呼叫:在网关启动期间将缺失的提供商凭据视为设置不完整,并将缺失的密钥记录为警告而不是运行时启动错误,同时保持显式命令/工具错误使用时。感谢 @vincentkoc。 - Android/对话模式:防止当对话模式等待它自己的响应时快速或重复最终聊天事件的重复 TTS 播放。修复 #46546。 - 工具/check.changed:将父重检查锁标记传递给 lint 通道,以便 `pnpm check:changed` 不再等待它自己的 `lint:extensions` 子。感谢 @vincentkoc。 - CLI/完成:在注册 `openclaw onboard` 选项之前去重提供商身份验证标志,以便更新期间的完成缓存刷新不再失败,当陈旧的核心后备标志重叠插件清单标志。修复 #71667。 - 诊断/跟踪:从当前提示快照报告实时上下文使用,而不是提供商回合总数,避免缓存或工具繁重运行上的错误接近完整上下文峰值。 - 提供商/Google:尊重 `models.providers.google.request.allowPrivateNetwork` 用于 Gemini TTS 和电话 TTS,匹配 Google 图像生成和媒体理解。(#71723)感谢 @ro-hansolo。 - 提供商/MiniMax:注册 `minimax-portal` 用于音乐和视频生成,在共享 `music_generate` 和 `video_generate` 工具之间保留 OAuth 身份验证和区域 MiniMax 基础 URL。(#63241)感谢 @tars90percent。 - 提供商/入门:通过将它们的视频生成身份验证选择范围限定到媒体设置流程,将 Runway 和阿里巴巴模型工作室保留在文本推理设置选择器之外。(#65856)感谢 @Jah-yee。 - 插件/Bonjour:当 mDNS 监视器取消卡住的探测时,停止网关在 `CIAO PROBING CANCELLED` 上崩溃循环。恢复在 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"]` 而不是单独的子代理允许列表。 - 控制 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 并覆盖 OpenCode ACP 绑定路径在 Docker 实时测试中。 - 提供商/OpenCode Go:在 Go 目录中添加 DeepSeek V4 Pro 和 DeepSeek V4 Flash,同时捆绑 Pi 注册表赶上。修复 #71587。 - 提供商/OpenCode Go:通过 OpenAI 兼容 Go 端点路由 DeepSeek V4 Pro/Flash,并抑制无效的 `reasoning_effort: "off"` 有效负载,修复 `opencode-go/deepseek-v4-flash` 的工具启用请求。修复 #71683。 - 插件/模型默认值:在配置的代理默认模型上运行 Skill Workshop 审查、主动记忆召回和会话记忆 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 调用使用受信任的环境代理模式,为 `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` 结果而不是通过文件 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 抖动设置。感谢 @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` 指纹运行时依赖,以便符号链接类目录条目不能崩溃阶段。 - 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:在受保护的导航期间忽略良性已经处理的路由竞争,以便浏览器页面任务不再失败当 Playwright 中途拆除路由。(#68708)感谢 @Steady-ai。 - 浏览器/CLI:延迟加载浏览器命令组和插件运行时服务,以便 `openclaw browser --help` 可以渲染而不加载完整的浏览器自动化堆栈。修复 #65400。(#65460、#66640)感谢 @pandego 和 @Tianworld。 - 浏览器/CLI:从 CLI 启动元数据提供预计算的 `openclaw browser --help` 文本,避免常见帮助调用的完整插件/配置启动路径。 - 浏览器/下载:用 OpenClaw 下载首选项种子托管 Chrome 配置文件,并捕获未管理的点击触发下载到受保护的下载目录下,同时显式下载等待器仍然拥有它们的目标文件。(#64558)感谢 @Pearcekieser。 - 浏览器/Chrome:停止传递冗余 `--disable-setuid-sandbox` 当 `browser.noSandbox` 启用时;`--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 响应系统提示,同时保留现有原生 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 "Encrypted content item_id did not match" 错误。还识别 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 语音消息来尊重普通 `audioAsVoice` 回复,并将入站仅语音消息标记为音频媒体,而不向通用媒体上下文暴露原始语音路径。 - 提供商/SenseAudio:通过 `tools.media.audio` 添加捆绑 SenseAudio 批处理音频转录,具有 `SENSEAUDIO_API_KEY` 身份验证。(#66943)感谢 @Fl0rencess720。 - 提供商/MiniMax:让 TTS 在回退到 `MINIMAX_API_KEY` 之前使用 MiniMax 门户 OAuth 和令牌计划凭据,并包括当前 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 支持的代理在网关重启后恢复它们的对话,而不是铸造新鲜会话,并且当认证的 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:当 `context1m` 启用时,将配置的 1M 上下文窗口覆盖应用于 eligible Claude CLI Opus 和 Sonnet 模型。(#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。