← 返回更新日志

OpenClaw v2026.4.25

2026-04-27 · 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 启动发现,并为慢速主机(如树莓派)提高启动后 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-lab、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` 负载。 - **代理/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。 ### 修复 - **自动回复**:在重放不安全提供商/运行时失败后进行入站消息去重毒化,使重试在可见进度前保持安全,但阻止在块输出、工具副作用或会话进度后重复消息。修复 #69303;保留 #58549 和 #64606 作为重复验证。感谢 @martingarramon、@NikolaFC 和 @zeroth-blip。 - **日志/会话**:将配置的脱敏模式应用于持久化会话记录文本,并在安全自定义脱敏正则中接受转义字符类,使记录 JSONL 不再在明文中保留匹配敏感文本。修复 #42982。感谢 @panpan0000。 - **代理/OpenAI**:使 Responses 网络搜索与最小思考兼容,通过将 `web_search` 请求提升到最低支持的推理工作量,而非发送被拒绝的最小负载。 - **代理/工具**:在决定捆绑 MCP 工具是否可用时尊重 `bundle-mcp` 允许列表令牌,使受限工具策略仍可启用捆绑 MCP 而不暴露无关工具。 - **代理/模型回退**:直接跳转到已知的后续实时会话模型重定向,而非遍历无关回退候选,同时保留已着陆的实时会话/回退循环防护。修复 #57471;相关循环族已通过 #58496 关闭。感谢 @yuxiaoyang2007-prog。 - **技能/内存**:通过观看具体技能和内存根(含过滤器)恢复 Chokidar v5 热重载,包括 SKILL.md 删除和已删除技能文件夹,无广泛工作区递归。修复 #27404、#33585 和 #41606。感谢 @shelvenzhou、@08820048 和 @rocke2020。 - **Discord/网关**:在频道重载期间将失败的健康监视器重启尝试计入冷却和每小时上限,并驱逐陈旧的账户生命周期状态,使重复 Discord 网关恢复无法在旧状态上循环。修复 #38596。(#40413) 感谢 @jellyAI-dev 和 @vashquez。 - **插件/CLI**:允许标志驱动的 `openclaw channels add` 从其默认源安装选定的频道插件,而无需打开交互式提示,修复已发布 npm Telegram 在 stdin 关闭自动化中的设置。 - **插件/启动**:在允许时于网关启动期间加载默认 `memory-core` 槽,使活动内存召回可调用 `memory_search` 和 `memory_get` 而无需显式 `plugins.slots.memory` 条目,同时保留 `plugins.slots.memory: "none"`。 - **插件/安装**:在外部捆绑运行时镜像中有形化插件拥有的根块,使暂存的插件依赖在打包安装下可解析为本机 ESM。修复 #72058;取代 #72084。感谢 @amnesia106 和 @drvoss。 - **插件/CLI**:在 jiti 之前优先为编译的捆绑插件 JavaScript 使用原生 require,使只读配置、状态、设备和节点命令避免在慢速主机上不必要的转换开销。修复 #62842。感谢 @Effet。 - **插件/兼容性**:将医生端弃用迁移与运行时插件兼容性单独清点,使版本清理保留所需修复,同时执行日期移除窗口。感谢 @vincentkoc。 - **插件/兼容性**:为遗留扩展 API、内存注册、提供商钩子/类型别名、运行时别名、频道 SDK 助手和批准/测试实用程序填充程序添加缺失的日期兼容性记录。感谢 @vincentkoc。 - **插件/CLI**:在托管插件文件被移除后刷新持久化注册表,使 ClawHub 卸载无法留下陈旧的 `plugins list` 条目。 - **插件/CLI**:使插件安装和卸载配置写入感知冲突,在显式重新安装/移除时清除陈旧拒绝列表条目,并在配置/索引提交成功后才删除托管插件文件。 - **插件**:当跟踪的插件或钩子更新出错时使 `plugins update` 失败,将捆绑运行时依赖修复保留在限制性允许列表后,并拒绝包含无法加载的扩展条目的包安装。 - **网关/聊天**:在文档化的进行中路径上保留重复附件支持的 `chat.send` 重试(使用相同幂等键),使中止仍针对真实活动运行。修复 #70139。感谢 @Feelw00。 - **插件**:在安装和发现之间共享包入口点解析,拒绝不匹配的 `runtimeExtensions`,并在扫描期间缓存捆绑运行时依赖清单读取。 - **WhatsApp/Web**:通过基于 WhatsApp Web 传输活动的看门狗保持安静但健康的链接设备会话连接,同时保留更长的应用静默上限,使帧活动无法永远掩盖卡住的会话。修复 #70678;继承聚焦的 #71466 方法并保留 #63939 作为相关可配置超时后续。感谢 @vincentkoc 和 @oromeis。 - **入门/设置**:在用户选择浏览所有模型前,将首次运行配置读取、插件兼容性通知和模型后健全性检查保留在冷元数据路径上,避免提示间的完整插件/运行时目录工作。感谢 @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 全局更新,并在后备成功时忽略已废弃的首次失败。感谢 @shakkernerd。 - **插件/卸载**:当插件 ID 更改或选定插件被移除时,迁移和重置 `plugins.slots.contextEngine` 与内存槽。感谢 @shakkernerd。 - **代理/Discord**:将原始 `Agent failed before reply` 运行程序失败保留在 Discord 群组/频道聊天之外,并仅在 `/verbose` 启用时在直接聊天中显示详细运行程序错误。 - **UI/Windows**:在生成 UI 安装/构建/测试命令前引用解析的 pnpm `.cmd` 启动器路径,使 `C:\Program Files` 下的 Node 安装不再失败为 `C:\Program`。修复 #45275。感谢 @Kobevictor、@stoppieboy 和 @iubns。 - **Codex/代理**:在请求构建时为现代 Codex 模型(gpt-5.5、gpt-5.4、gpt-5.4-mini、gpt-5.2)将 `--thinking minimal` 转换为 `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` 目录,使残留运行时依赖暂存文件不将成功更新变为“意外打包分发文件”失败。修复 #71752。感谢 @waynegault。 - **CLI/更新**:当插件同步失败时使包更新失败,并在信任未更改工件前刷新遗留 npm 插件安装记录,防止成功更新以陈旧或失败的插件状态重启。感谢 @vincentkoc 和 @shakkernerd。 - **发布/更新**:在包清单生成前拒绝预填充的捆绑插件 `.openclaw-install-stage` 目录(含混合大小写路径变体),使发布 tarball 无法发送中毒的运行时依赖暂存碎片。修复 #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/任务**:从持久运行日志和作业状态恢复完成的 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**:在 freshly written gateway unit 在迁移的 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` 命令启动浏览器能力 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。 - **模型/认证**:尊重父 `--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**:根据频道插件能力而非 speech-core 拥有的频道 ID 列表解析语音备注和语音备忘录路由。 - **ACP**:将子代理和异步任务完成唤醒作为纯提示发送到外部 ACP 测试,而非 OpenClaw 内部运行时上下文信封,同时使这些信封不在 ACP 记录中。感谢 @pashpashpash。 - **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,并 honoring 配置的 `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**:在将 SSH 传输 URL 固定到本地环回隧道时保持发现的网关主机在 `gateway.remote.sshTarget` 中,使浏览器自动化不回归到阻塞的非环回 `ws://` 端点。修复 #67336。 - **网关/代理**:从直接网关启动引导环境代理调度,使提供商和插件网络请求在第一个嵌入式代理尝试运行前 honoring `HTTPS_PROXY`/`HTTP_PROXY`。(#71833) 感谢 @mjamiv。 - **插件/运行时依赖**:验证干净 npm 安装实际将请求的捆绑运行时包放置在托管安装根,报告精确缺失规格而非错误成功修复。(#71883) 感谢 @Solvely-Colin。 - **插件/发现**:忽略指向打包捆绑插件目录的回传的陈旧 `plugins.load.paths` 别名,让医生移除它们,将捆绑插件保留在运行时依赖暂存路径上。 - **模型/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**:仅在 ACP 后端加载时隐藏 `sessions_spawn` ACP 运行时选项,并使 `/acp doctor` 调用出 `plugins.allow` 阻止捆绑 `acpx`。感谢 @vincentkoc。 - **代理/Codex**:仅在 ACP 运行时后端可用时隐藏 ACP 提示/技能路由,并在医生中警告启用的 Codex 插件配置仍将 `openai-codex/*` 模型路由通过 PI。感谢 @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**:为部署范围图像生成请求提供更长 600 秒默认超时,使慢速 `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 视觉条目),避免“未知模型”。修复 #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.*` 上保留 Matrix DM 允许列表修复,而非写入无效顶级 `dmPolicy` 键。修复 #71757。 - **插件/Windows**:使捆绑插件 Jiti 加载器脱离 Windows 上的原生导入路径,使 Telegram 等频道插件不再在 `C:\...` 路径上崩溃 `ERR_UNSUPPORTED_ESM_URL_SCHEME`。修复 #71749。感谢 @smeyer9。 - **提供商/Ollama**:使用 Ollama 当前 `/api/web_search` 端点,并 honoring `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。 - **插件/提供商**: honoring 显式插件候选列表而非从本地状态读取持久化注册表快照,保持候选范围提供商发现封闭。感谢 @shakkernerd。 - **插件/诊断**:将捆绑插件运行时依赖修复保留在托管 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/oneshot**:在关闭完成的 oneshot ACP 运行前协调运行时会话身份,使完成的 `sessions.json` 条目不卡在 `acp.identity.state="pending"`。 - **ACPX**:捆绑 `[email protected]`,使不支持的通用模型覆盖清晰失败而非静默回退到目标适配器默认。 - **ACP/模型**:记录非 Codex ACP 模型覆盖需要 ACP `models` 加 `session/set_model` 的适配器支持,使不支持的测试清晰失败而非静默回退到默认。 - **插件/语音呼叫**:在网关启动时将缺失的提供商凭证视为设置不完整,并将缺失密钥记录为警告而非运行时启动错误,同时保留显式命令/工具错误(使用时)。感谢 @shakkernerd。 - **Android/对话模式**:防止当对话模式等待自身响应时快速或重复最终聊天事件导致重复 TTS 播放。修复 #46546。 - **工具/check:changed**:将父重检查锁标记传递给 lint 通道,使 `pnpm check:changed` 不再等待其自己的 `lint:extensions` 子进程。感谢 @pandego 和 @Tianworld。 - **CLI/完成**:在注册 `openclaw onboard` 选项前对提供商认证标志去重,使更新期间完成缓存刷新不再在陈旧核心后备标志与插件清单标志重叠时失败。修复 #71667。 - **诊断/跟踪**:从当前提示快照报告实时上下文使用,而非提供商回合总数,避免缓存或工具重型运行上错误接近满上下文峰值。 - **提供商/Google**:为 Gemini TTS 和电话 TTS honoring `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**:当 mDNS 看门狗取消卡住的探测时,停止网关在 `CIAO PROBING CANCELLED` 上崩溃循环;Bonjour 在重复失败重启后对当前网关进程禁用自身,同时网关保持运行。恢复 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` 后备打开标签页时 honoring 配置的远程和 `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,并覆盖 Docker 实时测试中的 OpenCode ACP 绑定路径。 - **提供商/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。 - **插件/模型默认值**:在配置的代理默认模型(而非硬编码 OpenAI SDK 后备)上运行 Skill Workshop 审查、Active Memory 召回和会话内存 slug 生成(当钩子上下文缺少模型元数据时)。修复 #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。 - **媒体/插件**:在将不受信任文件 handing 给 `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` 指纹运行时依赖(使类符号链接目录条目不崩溃暂存)。 - **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 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 命名模型识别为推理能力,使它们继承正确能力标志。引用 #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**: honoring 纯 `audioAsVoice` 回复通过合成 TTS 到原生 QQ 语音消息,并将入站仅语音消息标记为音频媒体(不向通用媒体上下文暴露原始语音路径)。 - **提供商/SenseAudio**:添加捆绑 SenseAudio 批处理音频转录(通过 `tools.media.audio`,`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。 - **Active Memory**:使静默召回子代理账单/认证失败保留在共享认证配置文件冷却状态外,使 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。