← 返回更新日志

OpenClaw v2026.5.2-beta.2 预发布

2026-05-02 · GitHub 原文
## 2026.5.2 ### 亮点 - 外部插件安装现已涵盖诊断、入门引导、医生修复、频道设置、安装/更新记录以及构件元数据,同时首次切换时仍将裸包安装保留在 npm 上。感谢 @vincentkoc。 - 网关启动、会话列表、任务维护、提示词准备、插件加载和文件系统热路径针对大型或插件繁重的安装进行了目标缓存和扇出减少优化。 - 控制界面和 WebChat 可靠性在会话、定时任务、长时间运行的网关 WebSocket、分组消息宽度、斜杠命令反馈、iOS PWA 边界、选择对比度和 Talk 诊断等方面得到提升。 - 频道和提供商修复涵盖 Telegram 主题命令和网络、Discord 送达和启动边缘情况、OpenAI 兼容 TTS/实时、OpenRouter/DeepSeek 回放、Anthropic 兼容流式、Brave/SearXNG/Firecrawl 网络搜索以及语音呼叫路由。 ### 变更 - 网关/启动:在启动密钥预检期间跳过插件支持的认证配置文件叠加,减少网关就绪延迟,同时保持重载和 OAuth 恢复路径的叠加能力。(#68327) 感谢 @JIRBOY。 - 插件/ClawHub:使诊断、入门引导、医生修复和频道设置在安装记录中携带 ClawPack 元数据,同时保持显式 `clawhub:` 安装在 ClawHub 上,裸包安装保留在 npm 上用于首次切换。感谢 @vincentkoc。 - 插件/CLI:在 `openclaw plugins list --json` 中包含包依赖安装状态,以便脚本可以在不运行时加载插件的情况下发现缺失的插件依赖。 - 插件/运行时:将广泛的运行时预加载范围限定为从配置、启动规划、配置的频道、槽位和自动启用规则派生的有效插件 ID,而不是导入每个可发现的插件。 - 代理/运行时:在请求时提供商、工具、频道操作、Web/能力/内存/迁移助手以及记忆的提供商额外参数中重用启动时加载的插件注册表,因此稳定的嵌入式运行输入不再重复插件注册表解析,而模型特定的传输钩子补丁保持隔离。感谢 @DmitryPogodaev。 - 代理/运行时:为稳定的配置和进程环境运行记忆化转录回放策略解析,同时保留自定义环境提供商钩子行为。感谢 @DmitryPogodaev。 - 基础设施/路径守卫:为规范绝对 POSIX 包含检查添加快速路径,避免在热文件系统遍历器中重复进行 `path.resolve` 和 `path.relative` 工作。参考 #75895、#75575 和 #68782。感谢 @Enderfga。 - 工具:添加平台级工具描述符规划器,用于描述符优先可见性、通用可用性检查和执行器引用。感谢 @shakkernerd。 - 插件/工具:缓存从 `api.registerTool(...)` 捕获的插件工具描述符,因此重复的提示词时间规划可以跳过插件运行时加载,而执行仍加载实时插件工具。(#76079) 感谢 @shakkernerd。 - 文档/Codex:阐明 ChatGPT/Codex 订阅设置应使用 `openai/gpt-*` 配合 `agentRuntime.id: "codex"` 用于原生 Codex 运行时,而 `openai-codex/*` 保留为 PI OAuth 路由。感谢 @pashpashpash。 - 插件/源代码检出:从源代码检出的 `extensions/*` pnpm 工作区树加载捆绑插件,因此插件本地依赖和编辑被直接使用,而打包安装继续使用构建的运行时树。感谢 @vincentkoc。 - 插件/Beta:将 ACPX 外部化为官方 `@openclaw/acpx` 包,因此打包安装在 ACP 后端安装前将 ACP harness 适配器二进制文件保留在核心之外。感谢 @vincentkoc。 - 插件/Beta:将诊断 OpenTelemetry 外部化为官方 `@openclaw/diagnostics-otel` 包,因此打包安装在插件安装前将 OTEL 依赖栈保留在核心之外。感谢 @vincentkoc。 - 插件/Beta:为 `2026.5.1-beta.2` npm 和 ClawHub 发布准备 Google Chat、LINE、Matrix 和 Mattermost,并将可发布插件分发树保留在核心 npm 包之外。感谢 @vincentkoc。 - 插件/Beta:为 `2026.5.1-beta.2` npm 和 ClawHub 发布准备 BlueBubbles、诊断 Prometheus、Google Meet、Nextcloud Talk、Nostr、Zalo 和 Zalo Personal。感谢 @vincentkoc。 - 插件/Beta:为 `2026.5.1-beta.1` npm 和 ClawHub 发布准备诊断 OpenTelemetry、Discord、Diffs、Lobster、Memory LanceDB、Microsoft Teams、QQ Bot、Voice Call 和 WhatsApp。感谢 @vincentkoc。 - 插件/Beta:为 `2026.5.1-beta.1` npm 和 ClawHub 发布准备 Brave、Codex、Feishu、Synology Chat、Tlon 和 Twitch。感谢 @vincentkoc。 - 提供商/xAI:将 Grok 4.3 添加到捆绑目录并使其成为默认 xAI 聊天模型。 - Google Meet:允许 API 创建的房间设置 `accessType` 和 `entryPointAccess`,并添加 `googlemeet end-active-conference` 用于在呼叫后关闭托管空间。(#74824) 感谢 @BsnizND。 - Google Meet:添加 `googlemeet test-listen` 和匹配的 `google_meet` `test_listen` 动作,因此转录模式加入等待真实字幕或转录移动后再报告监听优先健康状态。参考 #72478。感谢 @DougButdorf。 - 插件/ClawHub:当 ClawHub 发布摘要元数据时优先选择版本化 ClawPack 构件,在安装前验证 ClawPack 响应头和下载字节。感谢 @vincentkoc。 - 插件/ClawHub:在 ClawHub 插件安装和更新记录上持久化 ClawPack 摘要元数据,因此注册表刷新和下载验证可以重用存储的构件事实。感谢 @vincentkoc。 - 插件/ClawHub:允许官方捆绑插件切换在记录 ClawHub 构件元数据的同时保持 npm 作为裸包规范的启动默认。感谢 @vincentkoc。 - 插件/入门引导:允许按需安装提供商设置条目在显式 ClawHub 安装后持久化 ClawHub 构件元数据,同时保留 npm/本地回退路径。感谢 @vincentkoc。 - 插件/Crestodian:添加 ClawHub 插件搜索以及 Crestodian 插件列表/搜索/安装/卸载操作,包含安装和卸载的审批与审计覆盖。 - 频道/线程绑定:用 `threadBindings.spawnSessions` 替换分裂的子代理/ACP 线程生成切换,默认线程绑定生成开启,并让 `openclaw doctor --fix` 迁移遗留键。(#75943) - 提供商/OpenAI:为 OpenAI 兼容 TTS 端点添加 `extraBody`/`extra_body` 直通,因此自定义语音服务器可以在 `/audio/speech` 请求中接收诸如 `lang` 的字段。修复 #39900。感谢 @R3NK0R。 - 依赖:刷新工作区依赖固定,包括 TypeBox 1.1.37、AWS SDK 3.1041.0、Microsoft Teams 2.0.9 和 Marked 18.0.3。感谢 @mariozechner、@aws 和 @microsoft。 - Discord/频道:添加可复用消息频道访问组以及 Discord 频道受众 DM 授权,因此允许列表可以在频道授权路径中引用 `accessGroup:<name>`。(#75813) - Crabbox/脚本:在 `pnpm crabbox:*` 命令前打印选定的 Crabbox 二进制文件、版本和支持的提供商,并拒绝缺乏 `blacksmith-testbox` 提供商支持的过时二进制文件。 - 代理/Codex:为 Codex/消息工具 Telegram 直接、Discord 组和心跳回合添加提交的快乐路径提示词快照,因此可以审查提示词漂移。感谢 @pashpashpash。 - 依赖:刷新捆绑运行时和插件依赖固定,包括 Pi 0.71.1、OpenAI 6.35.0、Codex 0.128.0、Zod 4.4.1 和 Matrix 41.4.0。感谢 @mariozechner。 - 代理/工作区:添加 `agents.defaults.skipOptionalBootstrapFiles` 用于在引导期间跳过选定的可选工作区文件,同时不禁用必需的工作区设置。(#62110) 感谢 @mainstay22。 - 插件/CLI:添加一流的 `git:` 插件安装,支持引用检出、提交元数据、正常扫描/暂存以及 `plugins update` 对记录 git 源的支持。感谢 @badlogic。 - Google Meet:添加 Chrome 转录模式的实时字幕健康,包括字幕观察器状态、转录计数器、最后字幕文本和状态与医生输出中的最近转录行。参考 #72478。感谢 @DougButdorf。 - Voice Call/Google Meet:添加 Twilio Meet 加入阶段日志,围绕预连接 DTMF、实时流设置和初始问候交接,以便更容易进行实时呼叫调试。感谢 @donkeykong91 和 @PfanP。 - macOS 应用:将最近会话上下文行移到 Context 子菜单,同时保持使用情况和成本详情在根级别,因此菜单栏伴侣在有许多活动会话时保持紧凑。感谢 @guti。 - 网关/SDK:添加 SDK 面向的 tools.invoke RPC,共享 HTTP 策略、类型化批准/拒绝结果以及 SDK 助手支持。参考 #74705。感谢 @BunsDev 和 @ai-hpc。 - Discord:在网关重启期间保持活动按钮、选择和表单工作直到过期,因此多步 Discord 交互在升级或重启期间不太可能中断。感谢 @amknight。 - 消息/文档:阐明 `BodyForAgent` 是主要入站模型文本,而 `Body` 是遗留信封回退,并添加 Signal 覆盖,因此频道硬化补丁针对真实提示词路径。参考 #66198。感谢 @defonota3box。 - Slack:在 `app_home_opened` 上发布安全默认 App Home 标签视图并在设置清单中包含 Home 标签事件。修复 #11655;参考 #52020。感谢 @TinyTb。 - Slack:在重启期间跟踪机器人参与的线程,因此进行中的线程对话可以在网关重启后继续自动回复。感谢 @amknight。 - 控制界面/使用情况:为 Usage Mosaic 添加 UTC 刻钟令牌桶并重用于小时过滤,保留遗留会话跨度回退用于较旧摘要。(#74337) 感谢 @konanok。 - BlueBubbles:添加可选 `channels.bluebubbles.replyContextApiFallback`,当内存回复上下文缓存未命中时从 BlueBubbles HTTP API 获取原始消息(共享一个 BB 账户的多实例部署、重启后、长时间存活 TTL/LRU 逐出后)。默认关闭;频道级设置通过 `mergeAccountConfig` 传播到省略标志的账户;通过类型化 `BlueBubblesClient` 路由,因此每次获取都受到与每个其他 BB 客户端请求相同的三模式策略保护的 SSRF 保护;回复 ID 形状经过验证,部分索引前缀(`p:0/<guid>`)在请求前被剥离;同一 `replyToId` 的并发 webhook 合并为一个获取,成功响应填充回复缓存用于后续命中。还将 BlueBubbles 附件下载失败从详细提升到运行时错误,因此静默丢弃的入站图像在默认日志级别可见,并扩展 `sanitizeForLog` 以在到达日志接收前编辑 `?password=…`/`?token=…` 查询参数和 `Authorization:` 头(CWE-532)。(#71820) 感谢 @coletebou 和 @zqchris。 - CLI/代理:添加 `openclaw proxy validate`,因此操作员可以在部署代理路由的 OpenClaw 命令前验证有效代理配置、代理可达性和预期允许/拒绝目标行为。(#73438) 感谢 @jesse-merhi。 - 代理/Codex:默认 Codex 应用服务器动态工具为原生优先,保留 OpenClaw 集成工具,同时将文件、补丁、执行和进程所有权留给 Codex harness。(#75308) 感谢 @pashpashpash。 - 代理/Codex:默认 Codex harness 直接源回复为 OpenClaw `message` 工具,当可见回复送达未显式配置时,保留频道可见输出作为 deliberate 工具调用。(#75765) 感谢 @pashpashpash。 - 心跳/代理:为工具 capable 心跳运行添加结构化 `heartbeat_respond` 工具,因此代理可以记录安静结果或显式通知文本,而不只依赖 `HEARTBEAT_OK` 解析。(#75765) 感谢 @pashpashpash。 - 网关/配置:允许 `$include` 指令从操作员批准的 `OPENCLAW_INCLUDE_ROOTS` 目录读取文件,同时保留默认配置目录限制。感谢 @ificator。 ### 修复 - 代理/OpenAI:默认 GPT-5 API 密钥会话为 SSE 响应传输,除非显式选择 WebSocket,恢复新鲜控制界面和 WebChat beta 安装中的回复,其中自动 WebSocket 路径连接但未产生模型事件。 - 代理/会话:当最终运行元数据从过时内存快照持久化时保留终端生命周期状态,防止会话在完成或超时回合后保持运行状态。 - 网关/CLI:使 `openclaw gateway start` 在启动前修复指向旧 OpenClaw 版本、缺失二进制文件或临时安装器路径的托管服务定义。 - 更新/插件:在稳定运行时别名和匹配预发布 npm 规范上保持打包升级和 beta 外部插件安装,避免从 2026.4.29 升级后出现过时 WebChat 运行时块和旧 Twitch 包。 - Codex/应用服务器:从捆绑 `dist` 块和 `@openai/codex` 包 bin 解析托管二进制文件,当安装未提供附近 `.bin/codex` 包装器时,避免错误缺失二进制启动失败。 - 状态:为通过原生 Codex 运行时运行的 `openai/gpt-*` 会话显示 `openai-codex` OAuth 配置文件,而不是报告认证为未知。(#76197) 感谢 @mbelinky。 - 插件/ClawHub:在下载前使用 ClawHub 构件解析器响应作为安装决策,保留遗留 ZIP 回退和未来 ClawPack npm-pack 安装在相同显式解析器路径上。感谢 @vincentkoc。 - 插件/ClawHub:在启动切换时保持裸插件包规范在 npm 上,并保留 ClawHub 解析用于显式 `clawhub:` 规范,直到 ClawHub 包准备就绪部署。感谢 @vincentkoc。 - 插件/源代码检出:从 `extensions/*` 工作区发现仅源代码插件(如 Codex),同时使用 npm 包排除作为打包核心边界,移除过时核心捆绑元数据路径。 - 插件/ClawHub:从显式 npm-pack `.tgz` 解析器路径安装 ClawPack 构件,并为更新和诊断流持久化构件种类、npm 完整性、shasum 和压缩包元数据。感谢 @vincentkoc。 - 控制界面:允许部署使用验证的 `gateway.controlUi.chatMessageMaxWidth` 设置配置分组聊天消息最大宽度,而不是升级后修补捆绑 CSS。修复 #67935。感谢 @xiew4589-lang。 - 控制界面/定时任务:在 malformed 持久化定时任务行进入 UI 状态前忽略它们,并守卫过时定时任务渲染路径,防止不良定时任务快照后控制界面部分空白。修复 #55047 和 #54439;取代 #54550 和 #54552。 - 控制界面/会话:将默认会话选项卡查询绑定到最近活动和更少行,避免昂贵的全历史加载,同时保持过滤器可编辑。修复 #76050。(#76051) 感谢 @Neomail2。 - 网关/频道:将启动扇出限制为四个频道/账户移交,并从 Bonjour ciao 自探针竞争恢复,减少 Windows 启动停滞与许多 Telegram 账户。修复 #75687。 - 网关/会话:通过重用列表安全会话缓存/索引并返回轻量级压缩检查点预览而不是重量级摘要,保持 `sessions.list` 轮询在大型会话存储上的响应性。感谢 @rolandrscheel。 - 控制界面/网关:通过协议 ping 保持长时间运行的仪表板 WebSocket 会话活动,并在重新连接或重载后通过恢复会话范围活动运行中止状态保持 Stop 可用。修复 #70991。感谢 @alexandre-leng。 - CLI/更新:将继承的网关服务标记视为来源提示,并且仅当托管网关仍活动时阻止包替换,因此自更新可以停止服务并安全继续。(#75729) 感谢 @hxy91819。 - 代理/故障转移:豁免工具执行期间触发的运行级超时,避免模型故障转移、超时触发的压缩和通用超时负载合成,防止主要模型已响应后出现误导性“LLM 请求超时”错误。修复 #52147。(#75873) 感谢 @simonusa。 - Docker:从摘要固定镜像复制 Bun 1.3.13 并保持 CI 在同一版本。修复 #74356。感谢 @fede-kamel 和 @sallyom。 - 代理/压缩:在连续回合中保留 z.ai 风格提供商(z.ai 直接、openrouter z-ai/*、内部 GLM 网关)的先前上下文,避免成功回合后意外 Pi 状态重置。(#76056) 感谢 @openperf。 - 医生/插件:基于 `meta.lastTouchedVersion` 运行一次性 2026.5.2 配置插件安装修复,在标记配置接触发布前通过配置的外部源安装积极使用的可下载 OpenClaw 插件。 - 会话/转录:对所有会话转录锁获取使用一个 `session.writeLock.acquireTimeoutMs` 策略,并将默认等待提高到 60 秒,避免合法慢速准备、清理、压缩和镜像工作期间的用户可见锁超时。修复 #75894。感谢 @shandutta。 - 控制界面:使用安全区域感知的文档锁定包含独立 iOS PWA 视口,因此添加到主屏幕启动无法滚动超出设备边界。参考 #76072。感谢 @kvncrw。 - 代理/重启恢复:通过精确转录锁路径加上规范会话回退匹配清理的转录锁,因此使用主题后缀转录的中断主会话在网关重启后恢复。参考 #76052。感谢 @anyech。 - 代理/运行时:缓存稳定系统提示词前缀并在分发准备期间重用提示词报告工具模式统计,减少流开始前的重复 CPU 工作。修复 #75999;取代 #76061。感谢 @zackchiutw 和 @STLI69。 - 控制界面/WebChat:使用高对比度文本选择颜色,因此高亮聊天文本跨主题保持可见。修复 #60850;取代 #60854。感谢 @Badschaff 和 @efe-arv。 - Telegram/原生命令:将持久化会话文件传递到插件命令用于主题绑定会话,因此 `/codex bind` 从 Telegram 论坛主题工作。参考 #75845 和 #76049。感谢 @MatthewSchleder。 - 安全审计/插件:枚举已安装插件根时忽略插件安装备份、禁用和依赖碎片目录,避免插件更新后 `.openclaw-install-backups` 的误报。修复 #75456。 - Telegram:为绑定顶级组中的原生斜杠命令 honor 运行时对话绑定,因此 `/status@bot` 等命令路由到活动非 `main` 会话而不是回退到默认路由。修复 #75405;取代 #75558。感谢 @ziptbm 和 @yfge。 - 网关/任务:使任务注册表维护使用传递本地支持会话查找和新鲜活动子会话索引,避免大型过时注册表上的重复完整任务快照和会话存储克隆。修复 #73517 和 #75708;取代 #74406 和 #75709。感谢 @Lightningxxl、@glfruit 和 @jared-rebel。 - 认证/会话:JSON 克隆认证配置文件缓存/运行时快照和剩余会话清理预览而不是使用 `structuredClone`,在避免大型存储上的原生内存增长的同时保持变异隔离。修复 #45438。感谢 @markus-lassfolk。 - 模型 CLI:恢复 `openclaw models list --provider <id>` 目录和未配置提供商的注册表回退行,因此提供商特定验证命令不再报告“未找到模型”。修复 #75517;取代 #75615。感谢 @lotsoftick 和 @koshaji。 - 网关/macOS:使用规范系统 PATH 写入 LaunchAgent 服务并停止保留旧 plist PATH 条目,因此 Volta、asdf、fnm 和 pnpm shell 路径不再影响网关子进程 Node 解析。修复 #75233;取代 #75246。感谢 @nphyde2。 - Slack/hooks:在命令文本为空时在消息接收钩子内容中保留机器人警报附件文本。修复 #76035;参考 #76036。感谢 @amsminn。 - 会话/代理:通过专用进程内编写器路由网关会话存储写入、CLI 清理维护和代理删除会话清除,并在编写器槽期间借用验证的可变缓存,避免运行时文件锁加上热元数据更新上的重复 `sessions.json` 重新读取和 JSON 克隆。参考 #68554。感谢 @henkterharmsel。 - 控制界面/聊天:当本地斜杠命令分发不可用或意外失败时显示内联反馈,而不是静默清除编写器。修复 #52105。感谢 @MooreQiao。 - 内存/Markdown:就位替换 CRLF 托管块并在不重写非托管 Markdown 的情况下折叠重复标记块,因此 Dreaming 和 Memory Wiki 文件从重复生成部分自愈。修复 #75491;取代 #75495、#75810 和 #76008。感谢 @asaenokkostya-coder、@ottodeng、@everettjf 和 @lrg913427-dot。 - 代理/工具:将关键工具循环断路器停止作为阻塞工具结果返回而不是抛出的工具失败,因此模型看到保护栏并停止重试相同调用。 - 代理/会话:在心跳回合后保留预先存在的运行时模型和上下文窗口,因此每运行心跳模型覆盖不泄漏到共享会话状态。修复 #75452。感谢 @zhangguiping-xydt。 - 模型命令:阐明非默认选择的直接和内联 `/model` 确认为会话范围。感谢 @addu2612。 - 医生/网关:停止警告非存在、未配置的用户 bin 目录在网关服务 PATH 中是必需的。修复 #76017。感谢 @xiphis。 - TUI/聊天:在上下文窗口预热期间跳过完整提供商模型归一化,同时保留提供商拥有的上下文元数据,避免大型模型注册表的冷启动停滞。感谢 @547895019。 - 代理:为 Codex 和 Azure OpenAI 响应传输启用畸形工具调用参数修复,同时保持通用 OpenAI 响应路径在修复门外。修复 #75154。感谢 @Nimraakram22。 - 内存 Wiki:在损坏的 wiki 链接验证期间接受包含 `.md` 后缀的相对 Markdown 链接,避免原生渲染模式链接的误报。感谢 @Kenneth8128。 - OpenAI Codex:在交互式 SSH/无头提示中显示设备配对代码,同时将短寿命代码保留在持久运行时日志之外。修复 #74212。感谢 @da22le123。 - QA 实验室:当套件父级消失时停止网关子进程,因此中断的本地 QA 运行不能留下热孤立网关。 - Codex/应用服务器:容忍启动恢复期间的第二次连接关闭,并在重启警告中包含重试计数和字符串化错误,因此并发通道在一个共享客户端竞争后不失败。 - 插件/CLI:为每个命令程序缓存插件 CLI 注册条目,因此完成状态生成在一个调用中不重复完整插件扫描。感谢 @ScientificProgrammer。 - 插件:在以后默认模式加载时重用网关可绑定插件加载器缓存条目,而不为网关绑定请求提供默认构建注册表,减少分发期间的重复插件注册。参考 #61756。感谢 @DmitryPogodaev。 - 网关/密钥:在 `secrets.reload` 和 `secrets.resolve` 警告日志中包含捕获的错误消息,同时保持 RPC 错误通用,因此操作员可以诊断重新加载和权限失败。感谢 @davidangularme。 - 提供商/OpenRouter:为 `openrouter/deepseek/deepseek-v4-flash` 和 `openrouter/deepseek/deepseek-v4-pro` 填充 DeepSeek V4 `reasoning_content` 回放占位符,因此思考/工具跟进回合不因 DeepSeek 回放形状错误而失败。修复 #76018。感谢 @cloph-dsp。 - Anthropic 兼容流:恢复在匹配内容块之前到达的文本增量,因此 Kimi Code 和类似提供商不因空 `incomplete_result` 回复完成。修复 #76007。感谢 @vliuyt。 - fix(infra):阻止工作区状态目录环境覆盖 [AI]。(#75940) 感谢 @pgondhi987。 - MCP/OpenAI:在将工具发送到 OpenAI 前归一化顶级对象 `properties` 缺失、null 或无效的无参数工具模式,因此无参数的 MCP 工具保持可用。修复 #75362。感谢 @tolkonepiu 和 @SymbolStar。 - TTS:honor 显式短 `[[tts:text]]...[[/tts:text]]` 块同时保持未标记短自动 TTS 抑制,因此标记语音回复被合成而不是作为空仅语音负载丢弃。修复 #73758。感谢 @yfge。 - Hooks/医生:当 `hooks.transformsDir` 指向规范 hooks 转换目录外部时警告,因此无效工作区技能路径在网关崩溃循环前获得直接恢复提示。修复 #75853。感谢 @midobk。 - 代理/音频:在代理支持的 undici 获取前转换标准 `FormData` 主体,因此音频转录和多部分上传在配置 `HTTP_PROXY` 或 `HTTPS_PROXY` 时不发送 `[object FormData]`。修复 #48554。感谢 @dco5。 - Discord:允许在仅工具公会频道中显式配置 ack 反应,同时抑制自动生命周期/状态反应。修复 #74922。感谢 @samvilian 和 @BlueBirdBack。 - Discord:启用会话支持的 A2A 公告目标查找,因此 `sessions_send` 使用目标会话的 `deliveryContext.accountId` 或 `lastAccountId` 而不是在多账户设置中回退到默认机器人。修复 #42652;参考 #51626 和 #44773;取代 #73975。感谢 @irchelper、@dpalfox 和 @Lanfei。 - Discord/设置:将解析的 guild/channel 允许列表选择写入选定的 guild 和 channel 而不是在设置期间回退到通配符 guild。取代 #47788。感谢 @Eldersonar。 - Discord:在网关套接字关闭时处理中止时间 Carbon 重新连接耗尽事件作为预期关闭,在过时套接字重启期间,因此健康监视器重启不再拒绝监视器生命周期。继承 #58216;取代 #73949。感谢 @Perttulands。 - Discord/原生命令:当斜杠命令分发或直接插件执行产生无可见回复时返回显式警告,而不是成功样式完成 ack。修复 #58986;取代 #62057。感谢 @jb510。 - Discord:在长工具运行和自动压缩期间保持打字指示器活动,同时保持活动滴答继续,因此活动会话在最终回复前不显示停滞。感谢 @Squirbie。 - Discord:在 REST 获取路径中保留多部分内容类型头用于附件上传,因此生成的图像和其他媒体不再以 `CONTENT_TYPE_INVALID` 失败送达。感谢 @FunJim。 - Discord:保存入站媒体时保留附件和贴纸文件名,因此代理可以看到人类可读文件名而不是仅 UUID 基础路径。修复 #59744。感谢 @xela92 和 @rockcent。 - Discord:在会话显示标签中保留非 ASCII 频道名称,同时保持允许列表匹配在现有 ASCII slug 合约上。感谢 @swjeong9。 - Discord/PluralKit:将代理 webhook 回合规范化为原始 Discord 消息 ID 用于入站去重,同时保留代理消息 ID 用于回复路由。感谢 @acgh213。 - Discord:仅在有效线程会话的第一回合注入线程启动器上下文,因此跟进线程回复不重复启动器块。修复 #41355;取代 #44447 和 #44449。感谢 @p3nchan。 - Discord:从 Discord API 风格 snake_case 负载字段解析线程 `ownerId` 和 `parentId`,因此机器人拥有的 autoThreads 不需要不必要的提及。感谢 @mgh3326。 - 网关/诊断:在稳定性捆绑中包含有界编辑的启动错误消息,因此崩溃循环报告识别失败的插件或合约而不暴露密钥。参考 #75797。感谢 @ymebosma。 - 网关/定价:在辅助设备和频道到达就绪路径后延迟可选模型定价目录刷新,因此慢速 OpenRouter 或 LiteLLM 定价获取不能阻塞网关就绪。修复 #74128;取代 #73486。感谢 @ctbritt 和 @alprclbi。 - 网关/定价:当网关关闭停止刷新循环时中止进行中模型定价目录获取,并避免停止后缓存写入或刷新计时器。修复 #72208。感谢 @rzcq。 - Codex/应用服务器:使启动重试清理具有所有权意识,因此并发 Codex 通道不能关闭另一通道 freshly restarted 共享应用服务器客户端。感谢 @vincentkoc。 - Google Meet/Twilio:在设置期间报告缺失拨入详情并解释 Twilio 在没有电话拨号计划时不能加入 Meet URL。 - Google Meet/Twilio:在发送 Meet PIN DTMF 前启动电话腿,延迟介绍语音直到后连接拨号序列后,并记录每个阶段以便操作员可以区分 Twilio 腿音频与 Meet 房间音频。 - Voice Call:接受提供商呼叫 ID 用于网关 speak/continue 请求,并从历史报告结束呼叫状态而不是返回通用“未找到呼叫”用于过时呼叫。 - 控制界面/Talk:允许 OpenAI 实时 WebRTC 提供端点通过控制界面 CSP,使用显式 VAD/转录输入设置配置浏览器会话,并暴露 OpenAI 实时错误/生命周期事件而不是让 Talk 卡在直播无诊断。修复 #73427。 - 插件:阐明配置选择的重复插件覆盖诊断并为捆绑插件叉记录清单模式更新。修复 #8582。感谢 @sachah。 - CLI 后端/Claude:使实时会话 JSONL 回合上限有界并通过 `reliability.outputLimits` 配置,提高工具重型 Claude CLI 回合的默认保护,同时保留内存限制。修复 #75838。感谢 @hcordoba840。 - Telegram/DMs:默认保持附带 `message_thread_id` 回复与引用元数据在平面 DM 会话上,同时保留可选 DM 主题隔离用于配置主题、`dm.threadReplies` 和 `direct.<chatId>.threadReplies`。修复 #75975。感谢 @ProjectEvolutionEVE。 - Telegram/网络:将出站文本和打字 Bot API 请求保护器提高到 60 秒,保持低 grammY 客户端超时不抢占这些保护器,让更高 `timeoutSeconds` 配置扩展安全方法保护器,并在不风险重复消息情况下通过传输回退重试过时打字指示器。修复 #76013。感谢 @iaki1206。 - Telegram/原生命令:在默认和组聊天范围注册和清除命令菜单,因此 `/status` 和插件命令在论坛主题中保持可用。修复 #74032;更新 #6457。感谢 @dae-sun 和 @WouldenShyp。 - 提供商/OpenAI:在创建 OpenAI 实时浏览器会话或语音桥前解析 `keychain:<service>:<account>` `OPENAI_API_KEY` 引用,具有有界缓存 Keychain 查找。修复 #72120。感谢 @ctbritt。 - Discord/网关:当网关套接字在等待共享 IDENTIFY 并发窗口时关闭则重新连接,而不是静默跳过 IDENTIFY 并让机器人在线但无响应。修复 #74617。感谢 @zeeskdr-ai。 - Voice Call:添加 `sessionScope: "per-call"` 用于新鲜每呼叫代理内存,同时保留默认每电话呼叫者历史。修复 #45280。感谢 @pondcountry。 - 音乐生成:将太小工具超时提高到提供商安全 10 秒下限并折叠级联中止回退错误为更清晰根本原因摘要。感谢 @shakkernerd。 - 内存核心/梦想:在多代理梦想扫描中包含主要运行时工作区而不混合主代理会话转录到配置的子代理工作区。修复 #70014。感谢 @ttomiczek。 - 控制界面:添加选项卡/RPC 定时归因并解耦慢速概览/定时任务次要刷新,因此会话导航获得立即可见反馈。参考 #64004。感谢 @WaMaSeDu。 - 内存:在 Windows 原子重新索引期间重试瞬态 SQLite 索引文件交换,因此短暂 `EBUSY`、`EPERM` 或 `EACCES` 锁不失败内存重建。修复 #64187。感谢 @kunpeng-ai-lab。 - Telegram/启动:对网关机器人探测使用现有 `getMe` 请求保护器而不是固定 2.5 秒预算,并 honor 慢速 Telegram API 路径的更高 `timeoutSeconds` 配置。修复 #75783。感谢 @tankotan。 - Telegram/模型:使模型选择器确认说选择是会话范围的并且不改变代理的持久默认。修复 #75965。感谢 @sd1114820。 - 控制界面/斜杠命令:将回退命令元数据保留在浏览器安全注册表路径上,因此提供商思考运行时导入不能以 `process is not defined` 空白 Web UI。修复 #75987。感谢 @novkien。 - 心跳/Discord:保持异步执行完成事件出通用 `System (untrusted)` 提示块,让专用执行心跳提示处理它们,因此 Discord 不再接收原始执行失败尾部作为单独系统风格消息。修复 #66366。感谢 @Promee-ThaBossHoss。 - 频道:从共享用户-facing 回复消毒中剥离纯文本 MiniMax 和 XML 工具调用脚手架,因此消息频道在提供商将其作为文本而不是结构化工具调用发出时不传递原始模型工具语法。修复 #62820。感谢 @canh0chua。 - 推断/媒体:报告 `image describe`、`image describe-many` 和 `audio transcribe` 的缺失图像理解和音频转录提供商配置,而不是在无提供商可用时责怪输入路径。修复 #73569 并取代 #73593、#74288 和 #74495。感谢 @bittoby、@tmimmanuel、@Linux2010 和 @vyctorbrzezowski。 - 文档/健康:阐明会话列表显示存储对话行而不是 Discord/频道套接字活跃度,并将连接检查指向频道状态和健康探测。修复 #70420。感谢 @ashersoutherncities-art 和 @martingarramon。 - WhatsApp/定时任务:保持 DM 配对存储批准出隐式定时任务和心跳收件人回退,因此计划自动化只使用显式目标、活动配置收件人或配置的 `allowFrom` 条目。修复 #62339。感谢 @kelvinisly-collab。 - Google Meet:在非 macOS 主机上保持面向代理的 `google_meet` 工具可见,但阻止本地 Chrome 实时操作与指导,因此 Linux 代理仍可使用转录、Twilio、chrome-node 和工件流而不选择 macOS 仅 BlackHole 路径。参考 #75950。感谢 @actual-software-inc。 - macOS/设置:保持从 Tailscale 设置水合打开 General 不重写 `openclaw.json`,保留 `gateway`、`auth`、`meta` 和 `wizard` 直到用户更改设置。修复 #59545。感谢 @Tengdw。 - Discord:在等待共享 IDENTIFY 并发窗口时优先交互回调过时背景 REST 工作而不轮询活动 REST 桶,在发送前验证过大网关负载和成员意图请求,并从消息动作转发显式组件负载。(#75363) - 主动内存:使用配置的回忆超时作为阻塞提示词构建钩子预算默认值,并将冷启动设置优雅放在显式 `setupGraceTimeoutMs` 配置后,因此插件不再在主线 silently 扩展 15000 ms 配置到 45000 ms。修复 #75843。感谢 @vishutdhar。 - 插件/web-provider:在派生相同候选插件 ID 作为加载器路径后,为运行时 web 提供商解析重用活动网关插件注册表,避免每个请求的冗余 `loadOpenClawPlugins` 调用,同时保留来源和范围过滤器。修复 #75513。感谢 @jochen。 - Crestodian/CLI:当交互式 Crestodian 在没有 TTY 的情况下调用时退出非零,因此脚本和 CI 不再将设置错误视为成功。修复 #73646 并取代 #73928 和 #74059。感谢 @bittoby、@luyao618 和 @Linux2010。 - 定时任务:保持隐式/默认隔离定时任务公告送达出主会话感知队列,因此隔离作业不累积在主对话中。修复 #61426。感谢 @Lihannon。 - 子代理:当父级在其自己持久原生子代理会话上使用 `sessions_send` 时避免重复父可见回复,同时保留异步发送的公告送达。修复 #73550。感谢 @sylviazhang2006-design。 - 网络搜索/Brave:添加可选 `brave.http` 诊断用于 Brave 请求 URL/查询参数、响应状态/定时和缓存命中/未命中/写入事件,而不记录 API 密钥或响应体。修复 #55196。感谢 @mecampbellsoup。 - 网络搜索/Brave:添加 `plugins.entries.brave.config.webSearch.baseUrl` 用于 Brave 兼容代理,包括 web 和 LLM 上下文模式的端点感知缓存键。修复 #19075。感谢 @jkoprax 和 @vishnukool。 - 网络搜索/配置:验证显式 `tools.web.search.provider` 值针对捆绑和安装的插件清单,同时警告过时第三方插件配置。修复 #53092。感谢 @TinyTb。 - 网络搜索/SearXNG:用一般类别重试空非一般类别搜索一次,因此不支持类别引擎不返回空结果当一般搜索有匹配时。修复 #73552。感谢 @Loukky。 - CLI/消息:跳过网关停止钩子用于只读 `message read` 和绑定停止钩子关闭用于其他消息动作,因此一次性 Discord 读取不能挂在插件生命周期清理后。感谢 @vincentkoc。 - 插件/web-provider:默认缓存重复捆绑网络搜索和 web 获取提供商注册表加载,同时保留显式缓存选择退出。取代 #75992。感谢 @DmitryPogodaev。 - 代理/沙盒:当沙盒编辑原子替换文件时保留现有工作区文件模式,因此 0644 文件在 Write/Edit/apply_patch 后不塌陷到 0600。修复 #44077。感谢 @patosullivan。 - 控制界面/WebChat:路由类型 `/new` 通过新聊天仪表板会话创建流而不是 `chat.send`,同时保持 `/reset` 作为显式当前会话重置。修复 #69599。感谢 @WolvenRA。 - 代理/模型:在规范运行时迁移后保留遗留 CLI 运行时模型引用(如 `claude-cli/*`)在配置允许列表,因此定时任务 `payload.model` 覆盖保持工作。修复 #75753。感谢 @RyanSandoval。 - Codex/应用服务器:当应用服务器客户端在启动线程恢复期间关闭时重启一次共享 Codex 应用服务器客户端,保留现有线程绑定而不是在关闭客户端上重试 `thread/start`。感谢 @vincentkoc。 - 网关/watch:在父 shell 导出 `NO_COLOR` 时在托管 tmux 窗格保持彩色子系统日志前缀,同时保留显式 `FORCE_COLOR=0` 选择退出。感谢 @vincentkoc。 - 代理/压缩:为预压缩内存刷新回合提交非空运行时事件标记,因此严格 Anthropic 提供商不再拒绝静默刷新作为空用户消息。修复 #75305。感谢 @sableassistant3777-source。 - 插件 SDK:从 `plugin-sdk/ssrf-runtime` 重新导出 `isPrivateIpAddress`,恢复 SearXNG 和 Firecrawl 私有网络守卫的源代码检出构建。感谢 @vincentkoc。 - Discord/消息动作:广告 `upload-file` 并通过 Discord 发送运行时与代理作用域媒体读取路由,因此代理可以发现和发送文件附件。修复 #60652 并取代 #60808、#61087 和 #61100。感谢 @claw-io、@efe-arv、@joelnishanth 和 @sjhddh。 - 会话:抑制精确会话间控制回复如 `NO_REPLY` 并保持代理对代理公告簿记出可见转录。修复 #53145。感谢 @TarahAssistant。 - CLI/目录:报告已安装频道插件的不支持目录操作而不是提示在插件缺少目录适配器时重新安装。修复 #75770。感谢 @lawong888。 - 网络搜索/SearXNG:在 SearXNG 设置期间显示 JSON API `search.formats` 先决条件,然后在提示基本 URL 前。取代 #65592。感谢 @evanpaul14。 - 网络搜索/SearXNG:从 SearXNG 图像类别结果传递 `img_src` 图像 URL。取代 #61416。感谢 @sghael。 - 网络搜索/Kimi:当 Moonshot 返回未接地聊天答案而不是原生网络搜索证据时显式失败,因此 Kimi 不再报告通用回退文本作为成功搜索。修复 #52573。感谢 @wangwllu。 - 网络搜索:保持公共提供商请求在严格 SSRF 守卫上并保留私有网络访问用于显式自托管 SearXNG/Firecrawl 端点。修复 #74357 并取代 #74360。感谢 @fede-kamel。 - Firecrawl:在转发到 Firecrawl 前拒绝私有、环回、元数据和非 HTTP(S) `firecrawl_scrape` 目标 URL。取代 #48133。感谢 @kn1ghtc。 - 网络搜索/Firecrawl:允许自托管私有/内部 Firecrawl `baseUrl` 端点,包括私有目标的 HTTP,同时保持托管 Firecrawl 在严格官方端点。修复 #63877 并取代 #59666、#63941 和 #74013。感谢 @jhthompson12、@jzakirov、@Mlightsnow 和 @shad0wca7。 - CLI/模型:在 `infer model run --json` 中报告网关模型故障转移尝试,并避免在 `models status` 中双重前缀提供商限定默认如 `openrouter/auto`。部分修复 #69527。感谢 @alexifra。 - 提供商/OpenRouter:剥离验证 OpenRouter Anthropic 模型请求的尾部助手预填充回合,当推理启用时,因此 Claude 4.6 路由不因 Anthropic 的预填充拒绝通过 OpenAI 兼容适配器失败。修复 #75395。感谢 @sbmilburn。 - Voice Call:添加每号码入站路由用于拨号号码问候、响应代理/模型/提示词和 TTS 语音覆盖。修复 #56604。感谢 @healthstatus。 - Feishu:为消息发送、媒体发送和聊天成员查找保留 Feishu/Lark HTTP 错误体,因此 HTTP 400 失败包括供应商代码、消息、日志 ID 和故障排除器详情。修复 #73860。感谢 @desksk。 - 代理/转录:避免通过同步会话管理器重新打开大型 Pi 转录文件用于维护重写、持久化工具结果截断、手动压缩边界硬化和排队压缩旋转。感谢 @mariozechner。 - 网络搜索/Exa:接受 `plugins.entries.exa.config.webSearch.baseUrl`,将其规范化为 Exa `/search` 端点,并按端点分区缓存结果。修复 #54928 并取代 #54939。感谢 @mrpl327 和 @lyfuci。 - 网络搜索/MiniMax:在 web-search 设置流中包含 MiniMax Search,并让 `MINIMAX_API_KEY` 参与 MiniMax Search 自动检测。取代 #65828。感谢 @Jah-yee。 - 插件/ClawHub:通过归档安装保留官方源链接信任,因此 OpenClaw 可以安装触发内置危险模式扫描器的受信任 ClawHub 插件包。感谢 @vincentkoc。 - 插件/ClawHub:为归档支持的插件安装安装包运行时依赖,因此像 WhatsApp 的 ClawHub 包在下载后加载声明依赖。感谢 @vincentkoc。 - 插件/工具:仅对匹配请求上下文缓存重复插件工具工厂结果,减少每回合工具准备而不泄漏沙盒、会话、浏览器、交付或运行时配置状态。修复 #75956。感谢 @Linux2010。 - 提供商/LM Studio:允许 `models.providers.lmstudio.params.preload: false` 跳过 OpenClaw 的本地模型加载调用,因此 LM Studio JIT 加载、空闲 TTL 和自动驱逐可以拥有模型生命周期。修复 #75921。感谢 @garyd9。 - 代理/转录:保持聊天历史、重启恢复、fork 令牌检查和过时令牌压缩检查在 bounded 异步转录读取或缓存的异步索引上,而不是重新解析大型会话文件。感谢 @mariozechner。 - Telegram:继承进程 DNS 结果顺序用于 Bot API 传输并将恢复粘性 IPv4 回退提升降级为调试日志,同时保持固定 IP 升级警告可见。修复 #75904。感谢 @highfly-hi 和 @neeravmakwana。 - 会话:保持持久外部对话指针,包括组和线程范围聊天会话,出年龄、计数和磁盘预算维护逐出,同时仍允许合成运行时条目老化。修复 #58088。感谢 @drinkflav。 - 网络搜索/MiniMax:允许 `MINIMAX_OAUTH_TOKEN` 满足 MiniMax Search 凭证,因此 OAuth 授权 MiniMax 令牌计划设置不需要单独的 web-search 密钥。修复 #65768。感谢 @kikibrian 和 @zhouhe-xydt。 - 提供商/MiniMax:从配置的 MiniMax 基础 URL 派生 Coding Plan 使用轮询,因此全局设置不再查询 CN 使用主机。修复 #65054。感谢 @sixone74 和 @Yanhu007。 - 控制界面/WebChat:跳过当过时媒体引用解析为无可播放媒体时的助手媒体转录补充,因此仅文本最终回复不存储第二次作为网关注入助手消息。修复 #73956。感谢 @HemantSudarshan。 - 会话:拒绝解析到线程范围聊天会话的 `sessions_send` 目标,因此代理间协调不能注入活动人类-facing Slack 或 Discord 线程。修复 #52496。感谢 @barry-p5cc。 - 子代理:honor `sessions_spawn` 与 `expectsCompletionMessage: false` 通过跳过父完成交接交付,同时运行子清理。修复 #75848。感谢 @alfredjbclaw。 - 媒体/完成:将仅媒体消息工具发送视为交付异步完成输出,避免视频或音乐生成完成后重复原始 `MEDIA:` 回退帖子。 - 网关/日志:保持延迟频道启动日志在子系统日志记录器上,因此 Slack、Discord、Telegram 和语音呼叫启动消息保持时间戳前缀。感谢 @vincentkoc。 - Codex/应用服务器:恢复被原始命令输出换行符分割的 JSON-RPC 帧并在畸形应用服务器消息仍到达控制台时包含编辑预览。感谢 @vincentkoc。 - 回复/打字:保持打字活跃用于 genuinely 等待活动运行的排队跟进消息,而不是使聊天表面在工作排队时看起来空闲。修复 #65685。感谢 @papag00se。 - ACP/Discord:抑制内联线程绑定 ACP 会话运行的完成公告交付,因此 Discord 线程绑定 ACP 回复不交付两次。修复 #60780。感谢 @solavrc。 - Discord/线程:在已绑定 Discord 会话线程中忽略 webhook 编写的副本,即使 webhook ID 不同,防止 PluralKit 代理副本创建重复回合压力。修复 #52005。感谢 @acgh213。 - Discord/线程:当跟进初始消息失败时返回创建的线程作为部分成功,因此代理不重试线程创建并创建空重复线程。修复 #48450。感谢 @dahifi。 - Discord/组件:在第一次授权点击后消耗非可复用组件消息中的每个按钮或选择,因此单次面板不能触发 sibling 回调。修复 #54227。感谢 @fujiwarakasei。 - macOS/配置:在应用回退写入期间保留现有 `gateway.auth` 和不相关配置键,因此仪表板或 Talk 设置更改不能通过丢弃持久认证使控制界面客户端失效。修复 #75631。感谢 @Tengdw。 - 控制界面/TUI:保持重新连接聊天发送绑定到相同支持会话 ID,并让 TUI 重启恢复最后选定会话,避免刷新、重新连接或终端重启后的静默新鲜会话。修复 #63195、#68162 和 #73546。感谢 @bond260312-cmyk、@zhong18804784882 和 @mtuwei。 - 插件/工具:让插件清单声明静态工具可用性,因此回复启动跳过不可用插件工具运行时而不是导入只返回 `null` 的工厂。感谢 @shakkernerd。 - Discord/反应:当 DM 和组 DM 禁用且每个配置 guild 有 `reactionNotifications: "off"` 时跳过反应监听器注册,避免不必要的反应事件队列工作。修复 #47516。感谢 @x4v13r1120。 - CLI 会话:保留显式手动附加重用绑定,因此受信任 CLI 会话在首次回合不因认证、提示词或 MCP 指纹漂移而无效。修复 #75849。感谢 @alfredjbclaw。 - Telegram/流式:对纯回复引用回复保持部分预览流式启用,仅对需要 Telegram 引用参数的真实原生引用摘录禁用草稿。修复 #73505。感谢 @choury。 - 配置:记录“更新 OpenClaw”版本警告每个进程而不是每个配置快照读取一次。(#75927) 感谢 @romneyda。 - Telegram/消息动作:将良性删除消息 400s 视为无操作警告而不是运行时错误,因此过时或已移除消息不创建嘈杂删除失败。修复 #73726。感谢 @Avicennasis。 - Telegram:分割长默认 markdown 发送和媒体跟进文本为安全 HTML 块,因此出站消息超过 Telegram 限制不再作为单个过大 Bot API 请求失败。修复 #75868。感谢 @zhengsx。 - 网关/聊天历史:为仍有 Claude CLI 绑定的 Anthropic 路由会话合并 Claude CLI 转录导入,因此本地聊天历史不隐藏 CLI JSONL 回合。修复 #75850。感谢 @alfredjbclaw。 - 媒体:在本地 `MEDIA:` 指令文件扩展名后修剪序列化 JSON 后缀,因此生成图像元数据不能污染解析媒体路径并导致错误 `ENOENT` 送达失败。修复 #75182。感谢 @TnzGit 和 @hclsys。 - 插件/运行时:插件启用/禁用更改后热重载网关插件运行时表面,同时保持源代码更改插件安装、更新和卸载操作重启备份,因此加载模块代码不重用。修复 #72097。 - 定时任务:使调度器重新加载计划比较容忍 malformed 持久化作业,因此一个不良定时任务条目不中止整个滴答。修复 #75886。感谢 @samfox-ai。 - 医生/频道:迁移后警告默认 Telegram 或 Discord 账户无配置令牌且其环境回退(`TELEGRAM_BOT_TOKEN` 或 `DISCORD_BOT_TOKEN`)不可用,带秘密安全迁移文档用于检查状态目录 `.env`。修复 #74298。感谢 @lolaopenclaw。 - 网关/诊断:在遥测中保持空闲活跃度样本而不是可见警告日志,除非诊断工作活动、等待或排队。感谢 @vincentkoc。 - 频道/定时任务:拒绝错误频道的提供商前缀目标,并让前缀公告目标如 `telegram:123` 在选择回退到 `last` 时选择其频道,因此 Telegram ID 不能强制为 WhatsApp 电话号码。修复 #56839。感谢 @bencoremans。 - 控制界面/聊天:当原始会话别名如 `main` 发送聊天回合但网关在相同运行下发出事件到规范会话键时保持实时回复可见。修复 #73716。感谢 @teebes。 - CLI/模型:拒绝 `openclaw models set` 和 `set-image` 上的 `--agent` 而不是静默写入代理范围请求到全局模型默认。修复 #68391。感谢 @derrickabellard。 - CLI:停止将遗留单数 `openclaw tool ...` 令牌视为限制性 `plugins.allow` 下的插件 ID,因此它作为正常未知/保留命令回退而不是建议过时允许列表条目。修复 #64732。感谢 @efe-arv、@SweetSophia 和 @hashtag1974。 - 媒体:在重命名前通过同目录临时文件写入入站媒体缓冲区,因此失败磁盘写入不留下零字节构件供以后语音转录。修复 #55966。感谢 @OpenCodeEngineer。 - TTS/Telegram:保持受信任的本地 TTS 工具生成的语音排队用于语音笔记送达,即使运行级内置工具列表省略原始 `tts` 名称。修复 #74752。感谢 @Loveworld3033 和 @andyliu。 - TTS:要求显式用户或配置音频意图用于代理语音工具,因此仪表板聊天保持文本除非请求音频。修复 #69777。感谢 @alexandre-leng。 - 插件/配置:保持捆绑源代码检出插件不被运行时门控安装仅 `minHostVersion` 元数据,接受预发布主机下限,修剪插件服务启动失败到一个日志行,并在基础配置解析期间避免宽频道运行时加载。感谢 @vincentkoc。 - 心跳:从心跳回复剥离遗留 `[TOOL_CALL]...[/TOOL_CALL]` 和 `[TOOL_RESULT]...[/TOOL_RESULT]` 伪调用块在频道送达前。修复 #54138。感谢 @Deniable9570。 - macOS/Voice Wake:通过选定的 macOS 会话目标发送唤醒词和 Push-to-Talk 转录,而不是总是回退到主 WebChat。修复 #51040。感谢 @carl-jeffrolc。 - 提供商/xAI:给 Grok `web_search` 60s 默认超时,强化畸形 xAI 响应解析,并返回结构化超时错误而不是中止工具调用。修复 #58063 和 #58733。感谢 @dnishimura、@marvcasasola-svg 和 @Nanako0129。 - 提供商/配置:在添加或重新授权其插件返回默认模型配置补丁的提供商时保留现有默认模型。修复 #50268。感谢 @rixcorp-oc。 - Slack/消息动作:当 Slack `send` 包含文件加呈现或交互控制时先发送媒体然后跟进 Block Kit 消息,因此文件附件不再被拒绝。修复 #51458。感谢 @HirokiKobayashi-R。 - Slack/DMs:honor `dmHistoryLimit` 用于新鲜 1:1 Slack DM 会话通过回填最近对话历史在当前回复前。修复 #64427。感谢 @brantley-creator。 - Slack/DMs:保持顶级直接消息在稳定 DM 会话上,即使 `replyToMode` 目标 Slack 线程回复,保留跨 DM 回合上下文。修复 #58832。感谢 @daye-jjeong。 - Slack/送达:在出站送达错误中保留 Slack Web API 缺失范围详情,因此排队重试状态识别要添加的 OAuth 范围。修复 #62391。感谢 @alexey-pelykh。 - Slack/能力:在尝试遗留范围 API 前从 `auth.test` 响应元数据读取授予范围,因此现代机器人令牌不再报告 `unknown_method` 用于频道能力。修复 #44625。感谢 @Qquanwei 和 @martingarramon。 - Slack/DMs:直接使用 `chat.postMessage(channel=<user id>)` 发送文本/块仅主动 DM,同时保持对话解析用于上传和线程发送。修复 #62042。感谢 @MarkMolina。 - Slack/路由:匹配用 Slack 目标语法编写的路由绑定如 `channel:C...`、`user:U...` 或 `<@U...>`,因此绑定 Slack 对等路由到配置代理而不是 `main`。修复 #41608。感谢 @Winnsolutionsadmin。 - Slack/路由:匹配写为 `channel:C...` 的公共频道允许列表条目针对裸 Slack 运行时频道 ID,因此允许频道提及不失败为 `channel-not-allowed`。修复 #41264 并取代 #56530。感谢 @babutree 和 @Realworld404。 - Slack/消息动作:在出站目标对等之前优先考虑绑定到它的账户,而不是回退到代理的第一个频道账户,因此多工作区发送使用预期的 Slack 账户。取代 #66807。感谢 @rijhsinghani。 - Slack/送达:仅当 SDK 包装 DNS 请求失败如 `EAI_AGAIN` 时重试 Slack Web API 写入,因此瞬态解析器 hiccup 可以恢复而不重试可能重复消息的平台错误。修复 #68789。感谢 @sonnyb9。 - Slack/消息动作:通过捆绑上传文件操作路径转发代理作用域媒体根,因此工作区文件可以附加而不失败本地媒体守卫。修复 #64625。感谢 @benpchandler。 - Slack/提及:通过 Slack `usergroups.users.list` 解析 `<!subteam^...>` 用户组提及,并仅当机器人用户是成员时将其视为显式提及,因此提及门控代理频道为真实用户组提及唤醒,无需配置仅允许列表。修复 #73827。感谢 @CG-Intelligence-Agent-Jack。 - Slack/消息工具:让 `read` 获取精确 Slack 消息时间戳,包括与 `threadId` 配对的特定线程回复,而不是只返回父线程或最近频道历史。修复 #53943。感谢 @zomars。 - PDF/Gemini:在 `x-goog-api-key` 头发送原生 PDF 分析 API 密钥而不是请求 URL,保持密钥远离代理和访问日志。取代 #60600。感谢 @garagon。 - 网络搜索/Gemini:将代理中止信号路由到提供商获取并记录提供商侧中止失败作为正常工具错误而不是静默中止运行。修复 #72995。感谢 @RoseKongPS。 - 网络搜索:将缺失密钥错误指向 `web_fetch` 用于已知 URL 和浏览器工具用于交互页面。感谢 @zhaoyang97。 - 网络搜索:延迟绑定托管代理 `web_search` 调用到当前运行时配置快照,因此现有会话在密钥重新加载后不保持过时未解析 SecretRef。修复 #75420。感谢 @richardmqq。 - 网络搜索/Gemini:在专用搜索配置和 `GEMINI_API_KEY` 后重用 `models.providers.google.apiKey` 和 `models.providers.google.baseUrl` 作为 Gemini 网络搜索的较低优先级回退。取代 #57496。感谢 @Aoiujz。 - 网络搜索/Gemini:通过 Google Search 接地时间范围传递 `freshness` 和 `date_after`/`date_before` 过滤器。修复 #66498。感谢 @ismael-81。 - 网络搜索/DuckDuckGo:在 web search 设置向导中包含无密钥 DuckDuckGo 提供商。修复 #65862 并取代 #65940。感谢 @Jah-yee。 - 网络搜索:honor `baseUrl` 覆盖用于 Gemini、Grok 和 x_search 提供商拥有配置,因此代理支持搜索工具不再拨号硬编码公共端点。取代 #61972。感谢 @Lanfei。 - 网络搜索/Brave:将 Brave 提供商元数据指向规范 `/tools/brave-search` 文档页并使遗留 `/brave-search` 文档页成为重定向存根。修复 #65870 并取代 #65892。感谢 @Magicray1217 和 @Jah-yee。 - 网络搜索/Brave:允许 `freshness` 和有界日期范围在 `llm-context` 模式,匹配 Brave 记录的 LLM Context API 支持。取代 #51005。感谢 @remusao。 - Web 获取:为非沙盒 `web_fetch` 解析外部插件 `webFetchProviders`,同时保持沙盒获取限于捆绑提供商。修复 #74915。感谢 @ultrahighsuper 和 @mingmingtsao。 - 心跳:从心跳回复剥离遗留 `[TOOL_CALL]...[/TOOL_CALL]` 和 `[TOOL_RESULT]...[/TOOL_RESULT]` 伪调用块在频道送达前。修复 #54138。感谢 @Deniable9570。 - macOS/Voice Wake:通过选定的 macOS 会话目标发送唤醒词和 Push-to-Talk 转录,而不是总是回退到主 WebChat。修复 #51040。感谢 @carl-jeffrolc。 - 提供商/xAI:给 Grok `web_search` 60s 默认超时,强化畸形 xAI 响应解析,并返回结构化超时错误而不是中止工具调用。修复 #58063 和 #58733。感谢 @dnishimura、@marvcasasola-svg 和 @Nanako0129。 - Slack/目录:使 `openclaw directory peers/groups list --channel slack` 优先令牌支持实时读取器并从 `directory self` 返回连接的 Slack 账户,因此有效 Slack 令牌不再产生空目录 CLI 结果。修复 #50776。感谢 @pjaillon。 - Slack:保持助手打字状态、临时打字反应和状态反应活跃用于使用仅消息工具可见回复的组/频道回合,同时仍抑制自动源回复。修复 #75877。感谢 @teosborne。 - Slack:从顶级富文本块恢复完整入站 DM 文本,当 Slack 发送缩短消息预览时,因此长直接消息仍完整到达代理。修复 #55358。感谢 @tonyjwinter。 - 回复:从面向用户的回复剥离遗留 `[TOOL_CALL]{tool => ..., args => ...}[/TOOL_CALL]` 伪调用文本并在工具调用诊断中标记它,而不是在频道显示原始工具语法。修复 #63610。感谢 @canh0chua。 - WhatsApp:通过 Baileys `end(error)` 关闭长寿命 web 套接字,然后回退原始 websocket 关闭,因此监听器拆卸运行 Baileys 清理而不是留下僵尸套接字。修复 #52442。感谢 @essendigitalgroup-cyber。 - Twitch/插件:为 Twitch 频道配置发出平面 JSON 模式,因此单账户和多账户配置在运行时加载前验证,并添加源代码检出诊断用于缺失 pnpm 工作区依赖。感谢 @vincentkoc。 - 网关/会话:将热转录读取和镜像附加移到异步有界 IO 与序列化父链接写入,保持大型会话历史不阻塞网关请求和频道回复。修复 #75656。感谢 @DerFlash。 - macOS/Talk Mode:在 Push-to-Talk、Talk Mode、Voice Wake 和唤醒词测试器将多通道麦克风缓冲器下混到 Apple Speech 前,因此专业音频接口不再产生空转录。修复 #42533。感谢 @jbuecker。 - macOS/Talk Mode:订阅原生 WebChat 到活动会话转录更新并在聊天线程中渲染外部口语用户回合,而不是只显示助手回复。修复 #75155。感谢 @SledderBling。 - macOS/Voice Wake:在内置 Voice Wake 测试接受仅触发短语,匹配设置 UI 和运行时仅触发路径而不是在唤醒词后需要额外命令文本。修复 #64986。感谢 @zoiks65。 - 定时任务/TTS:在出站送达前运行定时任务公告负载通过正常 TTS 指令转换,因此计划 `[[tts]]` 回复生成语音负载而不是泄漏原始标签。修复 #52125。感谢 @kenchen3000。 - WhatsApp:将可下载引用图像媒体从回复上下文保存为入站媒体,因此代理可以检查用户回复的图像而不是只看到 `<media:image>`。修复 #59174。感谢 @gaffner。 - 会话/存储:停止持久化仅运行时 `skillsSnapshot.resolvedSkills` 数组在每个会话条目内,因此 `sessions.json` 不再携带每个活动会话的每个解析 `SKILL.md` 正文副本;`ensureSkillSnapshot` 在冷恢复时从磁盘重新水合数组,因此嵌入式运行器、Claude CLI 技能插件和 Claude 实时会话指纹都看到填充技能,遗留存储在下次保存时自愈。参考 #11950、#6650、#15000。感谢 @amoghasgekar。 - 医生/WhatsApp:警告当 Linux crontabs 仍运行遗留 `ensure-whatsapp.sh` 健康检查,这可能当 cron 缺少 systemd 用户总线环境时误报 `Gateway inactive`。修复 #60204。感谢 @mySebbe。 - Slack/设置:打印生成的 app 清单为纯 JSON 而不是嵌入在框架设置注意内,因此它可以复制到 Slack 无需删除边框字符。修复 #65751。感谢 @theDanielJLewis。 - 频道/WhatsApp:通过活动网关路由 CLI 注销并在频道移除前停止运行时支持监听器,因此移除 WhatsApp 账户不留下旧套接字回复直到重启。修复 #67746。感谢 @123Mismail。 - Voice Call/Twilio:在电话呼叫期间 honor TTS 指令文本和提供商语音/模型覆盖,因此 `[[tts:...]]` 标签不字面说,语音 ID 覆盖到达 OpenAI/ElevenLabs 调用。修复 #58114。感谢 @legonhilltech-jpg。 - 代理/会话锁:在获取和启动清理期间用匹配开始时间 reclaim 未跟踪当前进程会话锁,因此网关重启恢复自拥有的孤儿 `.jsonl.lock` 文件。修复 #75805;参考 #49603。感谢 @cdznho。 - 代理/子代理:在原生 `sessions_spawn` 解析生成准备前初始化内置上下文引擎,因此 cliBackend-only 冷启动不失败与未注册 `legacy` 上下文引擎。修复 #73095。(#73904) 感谢 @brokemac79。 - 插件/Bonjour:与打包 OpenClaw 一起 shipped ciao 运行时依赖,因此新鲜 OCM 环境可以启动默认 mDNS 发现无缺失模块失败。感谢 @shakkernerd。 - 代理/工具:将回复插件工具发现范围限定为清单声明工具所有者和已活动匹配工具条目,避免宽插件运行时加载用于窄或核心仅工具允许列表。感谢 @shakkernerd。 - 代理/回复:延迟隐式图像模型发现并在持久化配置文件上保持 OAuth 认证存储采用在回复启动期间,将 OCM MarCodex 温暖准备削减到实时检查的子秒。感谢 @shakkernerd。 - 插件/工具:强制 `contracts.tools` 作为插件工具注册的清单所有权合约,拒绝未声明运行时工具名称并添加捆绑插件漂移覆盖。感谢 @shakkernerd。 - 代理/Codex:停止提示消息工具仅源回合以 `NO_REPLY` 完成,因此安静回合由不调用可见消息工具表示而不是冲突最终文本指令。感谢 @pashpashpash。 - 网关/配置:报告失败备份恢复为日志中失败和配置观察审计记录而不是标记它们有效。(#70515) 感谢 @davidangularme。 - 压缩:使用活动会话模型故障转移链用于隐式摘要失败而不持久化故障转移模型选择,因此 Azure 内容过滤器 400s 可以恢复。修复 #64960。(#74470) 感谢 @jalehman 和 @OpenCodeEngineer。 - 网关/配置:允许 `gateway config.patch` 更新记录的子代理思考默认。修复 #75764。(#75802) 感谢 @kAIborg24。 - 插件/CLI:保持 git 插件安装路径凭证自由,保留现有 git 检出直到替换成功,honor 重复 npm 安装模式,并在卸载时移除托管 git 仓库。感谢 @vincentkoc。 - 插件/CLI:从 git 安装命令失败细节编辑认证 git URL,因此失败克隆或检出输出不能在插件安装期间泄露凭证。感谢 @vincentkoc。 - 频道/状态反应:当运行完成或错误时移除过时非终端生命周期反应,因此 Discord 不留下永久思考表情在完成后。修复 #75458。感谢 @davelutztx。 - Discord/医生:将不支持的每频道 `agentId` 条目迁移到顶级 `bindings[]` 路由下 guild 频道配置,因此 `openclaw doctor --fix` 保留预期代理路由而不是剥离它为未知键。修复 #62455。感谢 @lobster-biscuit。 - Discord/DMs:设置入站直接消息 `ctx.To` 到语义 `user:<id>` 目标同时保持交付通过 DM 频道路由,因此镜像和恢复路径不将 DMs 视为频道对话。修复 #68126。感谢 @illuminate0623。 - Discord/DMs:当 Discord 频道查找暂时不可用时保持无 guild 入站消息在直接消息路由上,防止降级 DM 分叉到频道会话。修复 #59817。感谢 @DooPeePey。 - Discord:在 HTTP 5xx、请求超时和瞬态传输失败而不是仅 Discord 速率限制时重试出站 API 调用,减少短 Discord 或网络中断期间丢弃定时任务和代理回复。修复 #52396。感谢 @sunshineo。 - Discord:包含 Components v2 文本显示内容来自引用回复和转发快照,因此仅组件消息仍出现在回复上下文。修复 #56228。感谢 @HollandDrive。 - Discord:添加可配置网关 READY 超时用于启动和运行时重新连接,因此交错多账户设置可以避免错误重启循环。修复 #72273。感谢 @sergionsantos。 - Discord:通过命令协调保留原生斜杠命令描述本地化,因此本地化 Discord 描述不再被英语默认覆盖。修复 #56580。感谢 @mhseo93。 - Discord:添加配置出站提及别名,因此已知 `@Name` 引用可以重写为真实 Discord 用户提及而不是依赖瞬态目录缓存。修复 #67587。感谢 @McoreD。 - Discord:避免启动 REST 放大通过 Discord 速率限制后跳过原生命令部署重试,并从可解析机器人令牌派生机器人 ID 而不是需要 `/users/@me` 查找。修复 #75341。感谢 @PrinceOfEgypt。 - 插件/hooks:从对话目标派生钩子 `ctx.channelId` 而不是提供商名称,因此 Discord 和其他频道插件可以保持每频道状态隔离。修复 #59881。感谢 @bradfreels。 - 网关/配置:记录配置健康状态写入失败而不是静默隐藏配置观察恢复写入错误。感谢 @sallyom。 - 诊断:在回复、工具、状态、块和 ACP 进度事件上重置卡住会话计时器,并在会话保持不变时退避重复 `session.stuck` 诊断。取代 #72010。感谢 @rubencu。 - 网关/代理:避免为核心工具重建插件仅允许列表,并保持完整插件注册表缓存在范围插件加载间温暖,减少每回合延迟峰值。修复 #75882、#75907、#75906、#75887 和 #75851。(#75922) 感谢 @obviyus。 - 代理/故障转移:将裸 `status: internal server error` 提供商消息分类为可重试服务器错误,因此模型故障转移可以旋转而不是停止。(#73844) 感谢 @thesomewhatyou。 - 网关/启动:为启动门控控制平面 RPC 如 sessions.create、sessions.send、sessions.abort、agent.wait 和 tools.effective 返回共享可重试启动边车错误,因此客户端可以重试早期边车竞争。(#76012) 感谢 @scoootscooob。 - 提供商/Google:通过将其思考预算下限提高到 512 修复 Gemini 2.5 Flash-Lite `reasoning: "minimal"` 拒绝,同时保留现有 Gemini 2.5 Pro 和 Flash 最小预设。(#70629) 感谢 @ericberic。 - 代理/状态:为稀疏频道插件会话解析 `session_status(sessionKey="current")` 在文字当前查找未命中后,因此 Scope、Slack、Discord 和其他插件驱动代理避免通过 `Unknown sessionKey: current` 重试。修复 #74141。(#72306) 感谢 @bittoby。 - 定时任务:通过临时心跳忙跳过重试 recurring wake-now 主会话作业,在记录成功前,因此排队定时任务事件不再显示为 ok 鬼运行,同时主通道仍忙。修复 #75964。(#76083) 感谢 @kshetrajna12 和 @xuruiray。 - 提供商/Google:在推理期间保持 Gemini 思考签名仅流块活跃,因此 Gemini 3.1 Pro Preview 回复不再在可见文本前命中空闲超时。修复 #76071。(#76080) 感谢 @marcoschierhorn 和 @zhangguiping-xydt。 - CLI/技能:在 `openclaw skills check --agent` 显示每代理模型和命令可见性,并让医生报告或禁用默认代理不可用的技能。(#75983) 感谢 @mbelinky。 - 代理/工具:当网关元数据和活动认证存储证明没有配置提供商可以支持它们时跳过回复路径中不可用的媒体生成和 PDF 工具工厂,同时保持显式配置和认证支持提供商在正常工厂路径上。感谢 @shakkernerd。 - 代理/运行时:在确保回复运行时插件加载时重用网关元数据启动计划,因此实时代理回合在网关已经范围启动激活后不宽加载插件运行时。感谢 @shakkernerd。 - 代理/运行时:将范围回复运行时注册表重用到插件加载器缓存键兼容性检查,因此相同启动插件 ID 的配置更改不能保持过时运行时钩子或工具活动。感谢 @shakkernerd。 - 代理/运行时:让兼容更宽插件注册表满足范围回复运行时请求,当它们已经包含请求插件时,避免冗余运行时加载而不绕过加载器缓存键新鲜度检查。感谢 @shakkernerd。 - 代理/运行时:在回复启动期间针对清单模型目录元数据验证代理模型允许列表,避免在代理运行通道开始前宽提供商运行时目录加载。感谢 @shakkernerd。 - 代理/运行时:当清单目录行缺失时保持允许列表配置模型思考元数据可用,因此显式高推理级别保持有效用于自定义配置模型。感谢 @shakkernerd。 - 代理/工具:在回复工具预门控期间保留插件声明配置仅生成提供商如本地 Comfy 工作流,并在规划器和最终工具工厂之间共享清单认证/配置可用性检查。感谢 @shakkernerd。 - 代理/工具:当无网关元数据快照活动时,从遗留本地工作流配置和云 API 密钥配置保持 Comfy 生成工具可见,使用插件声明清单信号而不是加载提供商运行时。感谢 @shakkernerd。 - 代理/工具:在回复工具注册期间通过网关插件元数据快照路由媒体和生成能力查找,避免实时回复路径上的重复清单注册表重载。感谢 @shakkernerd。 - 代理/工具:让插件在清单中声明媒体生成认证别名和基础 URL 守卫,保留 OpenAI Codex OAuth 图像生成可用性无核心拥有提供商特殊情况。感谢 @shakkernerd。 - 代理/工具:在决定媒体和生成工具可用性时重用为活动运行加载的认证配置文件存储,避免回复启动期间重复提供商认证运行时发现。感谢 @shakkernerd。 - 代理/工具:保持图像、视频和音乐生成工具注册在清单/认证控制平面检查而不是在回复启动期间加载运行时提供商注册表,减少实时路径工具准备阻塞同时离开提供商运行时解析用于执行和列表动作。感谢 @shakkernerd。 - Discord:在代理提示词提示和频道文档中记录规范提及格式,因此出站回复使用 `<@USER_ID>`、`<#CHANNEL_ID>` 和 `<@&ROLE_ID>` 而不是遗留昵称提及。(#75173) - 心跳调度器:通过集中冷却门控执行事件/通知/生成/重试唤醒,因此后台 `process.start` 退出通知不能再自喂 runaway 心跳运行(配置 `every: "30m"` 在生产中每 ~10s 触发,钉住网关事件循环与 `eventLoopDelayMaxMs >6s` 峰值停滞控制 UI 资产服务 and TUI 握手)。记录唤醒现在路径(`manual`、`wake`、任务完成、阻塞任务跟进、`/hooks/wake mode=now` 和定时任务 `--wake now`)保持立即;可重试忙跳过不再毒害下次重试冷却;每代理洪水保护将任何意外反馈循环限制在 5 运行/60s。(#64016,参考 #17797 和 #75436) 感谢 @hexsprite。 - fix:阻止工作区 CLOUDSDK_PYTHON 覆盖并始终为 gcloud 设置受信任解释器。(#74492) 感谢 @pgondhi987。 - 提供商/Z.AI:将捆绑 GLM 目录和认证 env 元数据移动到插件清单,因此 `models list --all --provider zai` 显示完整已知目录无重复运行时种子数据。感谢 @shakkernerd。 - 提供商/Qianfan 和 Providers/Stepfun:在插件清单中声明设置认证元数据(`api-key` 方法、`QIANFAN_API_KEY`、`STEPFUN_API_KEY`),因此入门引导和 `models setup` 表面预期 env var 而不是回退遗留 `providerAuthEnvVars` 运行时种子数据。感谢 @shakkernerd。 - fix(infra):阻止 ambient Homebrew env 变量从 brew 解析。(#74463) 感谢 @pgondhi987。 - 入门引导/配置:避免在配置写入后阶段每个默认插件运行时依赖,因此跳过设置流只准备配置选择插件依赖而不是拉取宽功能插件包。感谢 @vincentkoc。 - 思考/提供商:通过轻量级提供商策略工件解析捆绑提供商思考配置文件,当启动延迟提供商不活动时,因此 OpenAI Codex GPT-5.x 在网关会话验证中保持 xhigh 可用。修复 #74796。感谢 @maxschachere。 - 安全/Windows:忽略工作区 `.env` 系统路径变量并解析过时进程 `taskkill.exe` 来自验证 Windows 安装根,防止仓库本地 env 文件重定向清理助手。感谢 @pgondhi987。 - CLI/插件:为 `plugins enable` 和 `plugins disable` 就位刷新持久插件注册表策略,因此例程切换不再重建和哈希每个插件源当目标已经索引。感谢 @vincentkoc。 - Windows/安装:从可写安装器临时目录运行 npm 并固定 Bedrock 运行时依赖低于 Windows ARM Node 24 npm 解析器失败,因此全局 OpenClaw 安装不再在入门引导前失败。感谢 @mariozechner。 - CLI/插件:将安装和启用槽选择范围限定到选定插件清单/运行时回退,因此插件安装不再加载每个插件运行时或宽状态快照只更新内存/上下文槽。感谢 @vincentkoc。 - 插件/TTS:保持捆绑语音提供商发现在冷包网关路径上可用并添加捆绑插件矩阵运行时探针用于健康、就绪、RPC、TTS 发现和就绪后运行时依赖 watchdog 覆盖。参考 #75283。感谢 @vincentkoc。 - Google Meet/Twilio:在 `googlemeet doctor` 显示委托语音呼叫 ID、DTMF 和介绍问候状态,并避免声称 DTMF 发送当无 Meet PIN 序列配置时。参考 #72478。感谢 @DougButdorf。 - 插件/工具:在工具发现期间优先选择捆绑插件代码并跳过频道运行时水合同时保留伴侣提供商注册,减少每运行插件工具准备成本而不丢弃可执行插件工具。修复 #75290。感谢 @thanos-openclaw。 - 插件/加载器:将插件工具注册表重用范围限定到启用插件计划和存储的网关方法键,因此嵌入式运行器工具查找可以重用兼容启动注册表而不隐藏启用非启动插件工具。修复 #75520。感谢 @whtoo。 - Voice Call/Twilio:在出站创建呼叫请求中直接发送通知模式初始 TwiML,同时保持对话和预连接 DTMF 调用 webhook 驱动,因此一次性通知呼叫不依赖首次应答 webhook 获取。取代 #72758。感谢 @tyshepps。 - Discord/Slack:延迟状态反应清理直到运行最终化,因此排队、思考、工具和终端反应在正常进度更新期间不再闪烁。(#75582) - Discord/语音:为仅文本配置保持文本 DM 主会话路由更新钉在配置的 DM 所有者,匹配组件交互,因此另一个直接消息发送器不能重定向未来主会话回复。感谢 @vincentkoc。 - Mattermost/Matrix:保持直接消息主会话路由更新钉在配置的 DM 所有者,因此配对或临时允许发送器不能重定向未来共享会话回复。感谢 @vincentkoc。 - Discord:保持 SecretRef 支持机器人令牌可发现用于消息动作,而无需在模式生成期间解析令牌,并在出站代理消息发送前解析范围频道 SecretRef,即使工具从配置快照构建。修复 #75324。感谢 @slideshow-dingo 和 @Conan-Scott。 - 更新:当守护程序安装时用托管网关服务配置文件和状态路径运行包后安装医生修复,因此 shell/配置文件不匹配不再修复调用者状态,而重启网关保持过时配置。感谢 @vincentkoc。 - 模型/DeepInfra:声明 DeepInfra 清单目录发现并从清单派生其运行时回退目录,恢复提供商过滤 `models list --all --provider deepinfra` 行无重复静态模型数据。感谢 @shakkernerd。 - CLI/更新:验证托管网关重启针对安装服务端口而不是调用者 shell 端口,因此包更新不报告健康守护程序为失败当配置文件使用不同网关端口时。感谢 @vincentkoc。 - 网关/代理:在开始代理运行前拒绝严格 `openclaw agent --deliver` 请求与缺失交付目标,因此用户不等待完成回合不能发送任何地方。感谢 @vincentkoc。 - 设置/导入:honor 非交互 `--import-from` 入门引导标志通过运行迁移导入路径而不是静默完成正常设置无导入。感谢 @vincentkoc。 - Discord/语音:在语音输出策略下运行语音频道回合,隐藏代理 `tts` 工具并要求口语回复文本,因此 `/vc join` 会话合成和播放代理回复而不是以 `NO_REPLY` 结束。修复 #61536。感谢 @aounakram。 - 医生/插件:保持普通 `doctor --non-interactive` 不安装捆绑插件运行时依赖,因此无头健康检查报告缺失依赖同时 `doctor --fix` 保持显式修复路径。感谢 @vincentkoc。 - 医生/网关:在安装或重写网关服务前要求交互确认,因此 `doctor --fix --non-interactive` 可以修复插件/配置漂移而不从临时环境替换操作员的 launchd/systemd 服务。感谢 @vincentkoc。 - 插件/运行时依赖:在生成的运行时依赖安装清单中始终写入依赖映射,因此 npm 不崩溃或修剪阶段捆绑插件包当计划为空时。修复 #74949。感谢 @hclsys。 - Telegram:对流式预览使用耐用消息编辑而不是原生草稿状态,因此生成回复不再通过草稿到消息转换闪烁看起来像重复。(#75073) 感谢 @obviyus。 - Telegram:回显预检 DM 语音笔记转录回原始聊天,包括 Telegram DM 主题线程元数据,而不是只回显后期媒体理解转录。修复 #75084。感谢 @M-Lietz。 - Telegram:限制低长轮询客户端超时,因此配置 `timeoutSeconds` 值低于 `getUpdates` 轮询窗口不强制新鲜 HTTPS 连接每几秒。修复 #75114。感谢 @hpinho77。 - 网络搜索:描述 `web_search` 为使用配置提供商而不是硬编码 Brave 当 DuckDuckGo 或其他提供商活动时。修复 #75088。感谢 @sun-rongyang。 - 基础设施/tmp:容忍并发临时目录权限修复通过重新检查另一进程已经收紧的目录,因此并行 ACP 子进程启动不抛出 `Unsafe fallback OpenClaw temp dir`。修复 #66867。感谢 @Kane808-AI 和 @jarvisz8。 - 代理/压缩:添加可选 `agents.defaults.compaction.midTurnPrecheck` 中回合预检查检测工具循环上下文压力并在下个工具调用前触发压缩,而不是等待回合结束。(#73499) 感谢 @marchpure 和 @haoxingjun。 - 网关/批准:让环回令牌/密码支持原生批准客户端解析执行批准而不附加过时配对网关身份,同时远程和未认证批准客户端保持正常设备身份行为。(#74472) - 网关/配置:在前景和服务最后已知良好恢复日志加主代理通知中包含拒绝验证路径,因此不支持直接编辑解释哪个键导致恢复而不是看起来像静默恢复。修复 #75060。感谢 @amknight。 - 插件/运行时依赖:通过 `fs.realpathSync.native`(带 `path.resolve` 回退)哈希 OS 规范 `packageRoot` 当计算捆绑运行时依赖阶段键时,因此加载器和频道 `bundled-root` 调用者不再在 `~/.openclaw/plugin-runtime-deps/openclaw-<version>-<hash>/` 下派生 divergent 阶段目录,捆绑频道停止在 Windows npm 符号链接、连接或 PM2 多实例工作者布局上失败 `ENOENT`。修复 #74963。(#75048) 感谢 @openperf 和 @vincentkoc。 - fix(logging):添加腾讯云、阿里云、HuggingFace 和 Replicate API 密钥的编辑模式(#58162)。感谢 @gavyngong。 - 配对:表面意外允许列表文件系统 stat 错误而不是将允许列表视为缺失,因此权限和 I/O 失败在配对授权检查期间可见。(#63324) 感谢 @franciscomaestre。 - macOS 应用:为执行批准命令详情保留布局空间,因此允许对话框不再重叠命令、上下文和动作按钮。(#75470) 感谢 @ngutman。 - 代理/故障转移:通过 `FailoverError` 和 `describeFailoverError`/`coerceToFailoverError` 携带 `sessionId`、`lane`、`provider`、`model` 和 `profileId` 归因,因此结构化错误日志(如 `gateway.err.log` 摄取)可以将耗尽回退包装错误归因于原始会话和最后尝试提供商而不是在每配置文件错误后丢弃元数据。修复 #42713。(#73506) 感谢 @wenxu007。 - 上下文引擎:将组装提示词视为预emptive 溢出预检查的默认权威,因此返回窗口化、自包含上下文的引擎不再触发巨大原始历史的错误硬失败压缩。其组装视图可以隐藏溢出风险的引擎可以用 `AssembleResult.promptAuthority: "preassembly_may_overflow"` 选择回退遗留行为。(#74255) 感谢 @100yenadmin。 - Mattermost:在接受回调前刷新当前原生斜杠命令注册,因此过时令牌来自删除或重新生成的命令停止被接受没有网关重启,同时失败验证保持短暂缓存和查找开始每个命令节流,每个回调门控解析命令自己的启动令牌,因此一个令牌泄漏一个斜杠命令不能毒害另一个命令失败缓存,编辑斜杠验证查找错误,并添加主体读取超时到多账户路由路径,因此慢回调发送器不能阻塞调度器。感谢 @feynman-hou 和 @eleqtrizit。 - 安全/dotenv:阻止 `COMSPEC` 在工作区 `.env`,因此恶意仓库不能重定向 Windows `cmd.exe` 解析,并锁定不区分大小写工作区 `.env` 回归覆盖完整 Windows shell 信任根家族(`COMSPEC`、`PROGRAMFILES`、`PROGRAMW6432`、`SYSTEMROOT`、`WINDIR`)。(#74460) 感谢 @mmaps。 - 网关/安装:在 `gateway install --force` 和医生修复期间丢弃遗留版本管理器和包管理器 PATH 条目保留自旧服务文件,因此修复路径不再重新创建 `gateway-path-nonminimal` 警告。修复 #75220。(#75440) 感谢 @leonaIee、@renaudcerrato 和 @aaajiao。