← 返回更新日志

OpenClaw v2026.5.2-beta.3 预发布

2026-05-02 · GitHub 原文
## 2026.5.2 ### 亮点 - 外部插件安装现已涵盖诊断、入门引导、医生修复、频道设置、安装/更新记录以及构件元数据,同时首次切换时仍将裸包安装保留在 npm 上。感谢 @vincentkoc。 - 网关启动、会话列表、任务维护、提示词准备、插件加载和文件系统热路径针对大型或插件繁重的安装进行了针对性的缓存和扇出减少。 - 控制界面和 WebChat 在会话、定时任务、长时间运行的网关 WebSocket、分组消息宽度、斜杠命令反馈、iOS PWA 边界、选择对比度和 Talk 诊断等方面的可靠性得到提升。 - 频道和提供商修复涵盖 Telegram 主题命令和网络、Discord 传递和启动边缘情况、OpenAI 兼容 TTS/Realtime、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**:使用引用检出、提交元数据、正常扫描/暂存以及 `plugins update` 对记录的 git 源的支持,添加一流的 `git:` 插件安装。感谢 @badlogic。 - **Google Meet**:添加 Chrome 转录模式的实时字幕健康,包括字幕观察器状态、转录计数器、最后字幕文本和状态与医生输出中的最近转录行。参考 #72478。感谢 @DougButdorf。 - **语音呼叫/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。 - **控制界面/使用情况**:为使用马赛克添加 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 版本、缺失二进制文件或临时安装程序路径的损坏托管服务定义,然后再启动。 - **更新/插件**:将打包升级和 beta 外部插件安装保留在稳定运行时别名和匹配的预发布 npm 规范上,避免从 2026.4.29 升级后出现过时 WebChat 运行时块和旧 Twitch 包。 - **Codex/应用服务器**:从捆绑的 `dist` 块和安装未提供附近 `.bin/codex` shim 时的 `@openai/codex` 包 bin 解析托管二进制文件,避免错误的缺失二进制启动失败。 - **状态**:为通过原生 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 和 tarball 元数据。感谢 @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。 - **修复(基础设施)**:阻止工作区状态目录环境覆盖 [AI]。(#75940) 感谢 @pgondhi987。 - **MCP/OpenAI**:在将工具发送到 OpenAI 前归一化顶级对象 `properties` 缺失、空或无效的无参数工具模式,因此无参数的 MCP 工具保持可用。修复 #75362。感谢 @tolkonepiu 和 @SymbolStar。 - **TTS**:honor 显式短 `[[tts:text]]...[[/tts:text]]` 块同时保持未标记短自动 TTS 抑制,因此标记语音回复被合成而不是作为空语音有效负载丢弃。修复 #73758。感谢 @yfge。 - **Hooks/医生**:当 `hooks.transformsDir` 指向规范 hooks 转换目录外部时警告,因此无效工作区技能路径在网关崩溃循环前获得直接恢复提示。修复 #75853。感谢 @midobk。 - **代理/音频**:在代理支持的 undici 获取前转换标准 `FormData` 主体,因此音频转录和 multipart 上传在配置 `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**:在网关套接字关闭时在等待共享 IDENTIFY 并发窗口期间将中止时间 Carbon 重新连接耗尽事件视为预期关闭,因此健康监视器重启不再拒绝监视器生命周期。继承 #58216;取代 #73949。感谢 @Perttulands。 - **Discord/原生命令**:当斜杠命令分发或直接插件执行不产生可见回复时返回显式警告,而不是成功样式完成 ack。修复 #58986;取代 #62057。感谢 @jb510。 - **Discord**:在长时间工具运行和自动压缩期间保持打字指示器活动,同时保持心跳滴答,因此活动会话在最终回复前不显示停滞。感谢 @Squirbie。 - **Discord**:跨 REST 获取路径为附件上传保留 multipart Content-Type 头部,因此生成的图像和其他媒体不再以 `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。 - **网关/定价**:将可选的模型定价目录刷新延迟到 sidecars 和频道达到就绪路径后,因此慢速 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 房间音频。 - **语音呼叫**:接受提供商呼叫 ID 用于网关 speak/continue 请求,并从历史记录报告结束呼叫状态而不是返回通用“未找到呼叫”用于过时呼叫。 - **控制界面/Talk**:允许 OpenAI Realtime WebRTC 提供端点通过控制界面 CSP,使用显式 VAD/转录输入设置配置浏览器会话,并公开 OpenAI 实时错误/生命周期事件而不是让 Talk 卡在直播无诊断。修复 #73427。 - **插件**:澄清配置选择的重复插件覆盖诊断,并为捆绑插件 fork 记录清单模式更新。修复 #8582。感谢 @sachah。 - **CLI 后端/Claude**:使实时会话 JSONL 回合上限有界并通过 `reliability.outputLimits` 配置,提高工具繁重 Claude CLI 回合的默认保护,同时保留内存限制。修复 #75838。感谢 @hcordoba840。 - **Telegram/DMs**:默认在平面 DM 会话上保留偶然的 `message_thread_id` 回复与引用元数据,同时保留配置主题、`dm.threadReplies` 和 `direct.<chatId>.threadReplies` 的可选 DM 主题隔离。修复 #75975。感谢 @ProjectEvolutionEVE。 - **Telegram/网络**:将出站文本和打字 Bot API 请求保护提高到 60 秒,保持低 grammY 客户端超时不抢占这些保护,让更高的 `timeoutSeconds` 配置扩展安全方法保护,并在不 risking 重复消息的情况下通过传输回退重试过时的打字指示器。修复 #76013。感谢 @iaki1206。 - **Telegram/原生命令**:在默认和群组聊天范围注册和清除命令菜单,因此 `/status` 和插件命令在论坛主题中保持可用。修复 #74032;更新 #6457。感谢 @dae-sun 和 @WouldenShyp。 - **提供商/OpenAI**:在创建 OpenAI Realtime 浏览器会话或语音桥之前解析 `keychain:<service>:<account>` `OPENAI_API_KEY` 引用,具有有界缓存 Keychain 查找。修复 #72120。感谢 @ctbritt。 - **Discord/网关**:当网关套接字在等待共享 IDENTIFY 并发窗口时关闭则重新连接,而不是静默跳过 IDENTIFY 并让机器人在线但无响应。修复 #74617。感谢 @zeeskdr-ai。 - **语音呼叫**:添加 `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` 配置后,因此插件不再在主线路上静默扩展 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**:在托管 tmux 窗格中保留彩色子系统日志前缀,即使父 shell 导出 `NO_COLOR`,同时保留显式 `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。 - **语音呼叫**:添加每号码入站路由用于拨号号码问候、响应代理/模型/提示词和 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 搜索设置流程中包含 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 的 native 模型加载调用,因此 LM Studio JIT 加载、空闲 TTL 和自动驱逐可以拥有模型生命周期。修复 #75921。感谢 @garyd9。 - **代理/转录**:将聊天历史、重启恢复、fork 令牌检查和过时令牌压缩检查保留在 bounded async 转录读取或缓存的异步索引上,而不是重新解析大型会话文件。感谢 @mariozechner。 - **Telegram**:为 Bot API 传输继承进程 DNS 结果顺序,并将恢复的粘性 IPv4 回退提升降级为调试日志,同时保持固定 IP 升级警告可见。修复 #75904。感谢 @highfly-hi 和 @neeravmakwana。 - **会话**:将持久外部对话指针(包括组和线程范围聊天会话)保留在年龄、计数和磁盘预算维护驱逐之外,同时允许合成运行时条目老化。修复 #58088。感谢 @drinkflav。 - **网络搜索/MiniMax**:允许 `MINIMAX_OAUTH_TOKEN` 满足 MiniMax Search 凭证,因此 OAuth 授权的 MiniMax Token Plan 设置不需要单独的 web 搜索密钥。修复 #65768。感谢 @kikibrian 和 @zhouhe-xydt。 - **提供商/MiniMax**:从配置的 MiniMax 基础 URL 派生 Coding Plan 使用轮询,因此全局设置不再查询 CN 使用主机。修复 #65054。感谢 @sixone74 和 @Yanhu007。 - **控制界面/WebChat**:跳过助手媒体转录补充,当过时媒体引用解析为 no 可播放媒体时,因此仅文本最终回复不存储第二次作为网关注入助手消息。修复 #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 帧,并在 malformed 应用服务器消息仍然到达控制台时包含编辑预览。感谢 @vincentkoc。 - **回复/打字**:为 genuinely 等待活动运行的排队后续消息保持打字活跃,而不是让聊天表面在排队工作时看起来空闲。修复 #65685。感谢 @papag00se。 - **ACP/Discord**:抑制内联线程绑定 ACP 会话运行的完成公告传递,因此 Discord 线程绑定 ACP 回复不交付两次。修复 #60780。感谢 @solavrc。 - **Discord/线程**:在已绑定 Discord 会话线程中忽略 webhook 编写的副本,即使 webhook ID 不同,防止 PluralKit 代理副本创建重复回合压力。修复 #52005。感谢 @acgh213。 - **Discord/线程**:当后续初始消息失败时返回创建的线程作为部分成功,因此代理不重试线程创建并创建空重复线程。修复 #48450。感谢 @dahifi。 - **Discord/组件**:在第一次授权点击后消耗非可复用组件消息中的每个按钮或选择,因此单次使用面板不能触发兄弟回调。修复 #54227。感谢 @fujiwarakasei。 - **macOS/配置**:在 Tailscale 设置水合期间保留现有 `gateway.auth` 和不相关配置键,因此仪表板或 Talk 设置更改不能通过丢弃持久化认证使控制界面客户端失效。修复 #75631。感谢 @Tengdw。 - **控制界面/TUI**:保持重新连接聊天发送绑定到相同支持会话 ID,并让 TUI 重新启动恢复最后选择的会话,避免刷新、重新连接或终端重启后的静默新鲜会话。修复 #63195、#68162 和 #73546。感谢 @bond260312-cmyk、@zhong18804784882 和 @mtuwei。 - **插件/工具**:让插件清单声明静态工具可用性,因此回复启动跳过不可用插件工具运行时而不是导入只返回 `null` 的工厂。感谢 @shakkernerd。 - **Discord/反应**:当 DMs 和组 DMs 禁用且每个配置的 guild 有 `reactionNotifications: "off"` 时跳过反应监听器注册,避免不必要的反应事件队列工作。修复 #47516。感谢 @x4v13r1120。 - **CLI 会话**:保留显式手动附加重用绑定,因此受信任 CLI 会话在首次回合时不在认证、提示词或 MCP 指纹漂移时失效。修复 #75849。感谢 @alfredjbclaw。 - **Telegram/流式**:对纯回复回复保持部分预览流式传输启用,仅对需要 Telegram 引用参数的真实原生引用摘录禁用草稿。修复 #73505。感谢 @choury。 - **配置**:每个进程记录一次“更新 OpenClaw”版本警告而不是每个配置快照读取一次。(#75927) 感谢 @romneyda。 - **Telegram/消息操作**:将良性删除消息 400 视为无操作警告而不是运行时错误,因此过时或已移除消息不创建嘈杂删除失败。修复 #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`)不可用,同时提供 secret-safe 迁移文档用于检查状态目录 `.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/语音唤醒**:通过选定的 macOS 会话目标发送唤醒词和按下说话转录,而不是总是回退到主 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**:当 `replyToMode` 目标 Slack 线程回复时保持顶级直接消息在稳定 DM 会话上,保留跨 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 搜索设置向导中包含无密钥 DuckDuckGo 提供商。修复 #65862 并取代 #65940。感谢 @Jah-yee。 - **网络搜索**:为 Gemini、Grok 和 x_search 提供商拥有的配置 honor `baseUrl` 覆盖,因此代理支持搜索工具不再拨打硬编码公共端点。取代 #61972。感谢 @Lanfei。 - **网络搜索/Brave**:将 Brave 提供商元数据指向规范 `/tools/brave-search` 文档页面并使遗留 `/brave-search` 文档页面成为重定向存根。修复 #65870 并取代 #65892。感谢 @Magicray1217 和 @Jah-yee。 - **网络搜索/Brave**:允许 `freshness` 和有界日期范围在 `llm-context` 模式,匹配 Brave 记录的 LLM 上下文 API 支持。取代 #51005。感谢 @remusao。 - **网络获取**:为非沙盒 `web_fetch` 解析外部插件 `webFetchProviders`,同时保持沙盒获取限制为捆绑提供商。修复 #74915。感谢 @ultrahighsuper 和 @mingmingtsao。 - **心跳**:从心跳回复中剥离遗留 `[TOOL_CALL]...[/TOOL_CALL]` 和 `[TOOL_RESULT]...[/TOOL_RESULT]` 伪调用块,然后频道传递。修复 #54138。感谢 @Deniable9570。 - **macOS/语音唤醒**:通过选定的 macOS 会话目标发送唤醒词和按下说话转录,而不是总是回退到主 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**:当 Slack 发送缩短的消息预览时从顶级富文本块恢复完整入站 DM 文本,因此长直接消息仍然完整到达代理。修复 #55358。感谢 @tonyjwinter。 - **回复**:从用户-facing 回复中剥离遗留 `[TOOL_CALL]{tool => ..., args => ...}[/TOOL_CALL]` 伪调用文本并在工具调用诊断中标记它,而不是在频道显示原始工具语法。修复 #63610。感谢 @canh0chua。 - **WhatsApp**:在回退到原始 websocket 关闭前通过 Baileys `end(error)` 关闭长寿命 websocket,因此监听器拆卸运行 Baileys 清理而不是留下僵尸套接字。修复 #52442。感谢 @essendigitalgroup-cyber。 - **Twitch/插件**:为 Twitch 频道配置发出平面 JSON 模式,因此单账户和多账户配置在运行时加载前验证,并为缺失 pnpm 工作区依赖添加源代码检出诊断。感谢 @vincentkoc。 - **网关/会话**:将热转录读取和镜像附加移到异步有界 IO 与序列化父链接写入,保持大型会话历史不阻塞网关请求和频道回复。修复 #75656。感谢 @DerFlash。 - **macOS/Talk 模式**:在 Push-to-Talk、Talk 模式、语音唤醒和唤醒词测试器中将多通道麦克风缓冲区降混到 Apple Speech 之前,因此专业音频接口不再产生空转录。修复 #42533。感谢 @jbuecker。 - **macOS/Talk 模式**:将原生 WebChat 订阅到活跃会话转录更新并在聊天线程中渲染外部口语用户回合,而不是只显示助手回复。修复 #75155。感谢 @SledderBling。 - **macOS/语音唤醒**:在内置语音唤醒测试中接受仅触发器短语,匹配设置 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 用户总线环境时误报“网关不活动”。修复 #60204。感谢 @mySebbe。 - **Slack/设置**:将生成的 app 清单打印为纯 JSON 而不是嵌入在框架设置注意内,因此可以复制到 Slack 而不删除边框字符。修复 #65751。感谢 @theDanielJLewis。 - **频道/WhatsApp**:通过实时网关路由 CLI 注销并在频道移除前停止运行时支持的监听器,因此移除 WhatsApp 账户不让旧套接字回复直到重启。修复 #67746。感谢 @123Mismail。 - **语音呼叫/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 一起发送 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 入站消息在直接消息路由上,防止降级 DMs 分叉到频道会话。修复 #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**:从对话目标派生 hook `ctx.channelId` 而不是提供商名称,因此 Discord 和其他频道插件可以保持每频道状态隔离。修复 #59881。感谢 @bradfreels。 - **网关/配置**:记录配置健康状态写入失败而不是静默隐藏配置观察恢复写入错误。感谢 @sallyom。 - **诊断**:在回复、工具、状态、块和 ACP 进度事件上重置卡住会话计时器,并在会话保持不变时退避重复 `session.stuck` 诊断。取代 #72010。感谢 @rubencu。 - **网关/代理**:避免为仅插件允许列表重建核心工具,并在范围插件加载之间保持完整插件注册表缓存温暖,减少每回合延迟峰值。修复 #75882、#75907、#75906、#75887 和 #75851。(#75922) 感谢 @obviyus。 - **代理/故障转移**:将裸 `status: internal server error` 提供商消息分类为可重试服务器错误,因此模型故障转移可以旋转而不是停止。(#73844) 感谢 @thesomewhatyou。 - **网关/启动**:返回共享可重试启动 sidecar 错误用于启动门控控制平面 RPC(如 sessions.create、sessions.send、sessions.abort、agent.wait 和 tools.effective),因此客户端可以重试早期 sidecar 竞争。(#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 触发,peg 网关事件循环与 `eventLoopDelayMaxMs >6s` 峰值停滞控制 UI 资产服务 and TUI 握手)。记录唤醒现在路径(`manual`、`wake`、任务完成、阻塞任务后续、`/hooks/wake mode=now` 和定时任务 `--wake now`)保持立即;可重试忙跳过不再污染下次重试的冷却;每代理洪水保护将任何意外反馈循环限制在 5 运行/60s。(#64016,参考 #17797 和 #75436) 感谢 @hexsprite。 - **修复**:阻止工作区 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。 - **修复(基础设施)**:阻止 ambient Homebrew env 变量从 brew 解析。(#74463) 感谢 @pgondhi987。 - **入门引导/配置**:避免在配置写入后暂存每个默认插件运行时依赖,因此跳过的设置流只准备配置选择插件依赖而不是拉取广泛功能插件包。感谢 @vincentkoc。 - **思考/提供商**:当启动延迟提供商不活动时通过轻量级提供商策略工件解析捆绑提供商思考配置文件,因此 OpenAI Codex GPT-5.x 在网关会话验证中保持 xhigh 可用。修复 #74796。感谢 @maxschachere。 - **安全/Windows**:忽略工作区 `.env` 系统路径变量并解析来自验证 Windows 安装根的过时进程 `taskkill.exe`,防止仓库本地 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。 - **插件/工具**:在工具发现期间首选捆绑插件代码,同时保持频道运行时水合,减少每运行插件工具准备成本而不 dropping 可执行插件工具。修复 #75290。感谢 @thanos-openclaw。 - **插件/加载器**:将插件工具注册表重用范围限定为启用的插件计划和存储的网关方法键,因此嵌入式运行器工具查找可以重用兼容启动注册表而不隐藏启用的非启动插件工具。修复 #75520。感谢 @whtoo。 - **语音呼叫/Twilio**:在出站创建呼叫请求中直接发送通知模式初始 TwiML,同时保持对话和预连接 DTMF 调用 webhook 驱动,因此一次性通知呼叫不依赖首次应答 webhook 获取。取代 #72758。感谢 @tyshepps。 - **Discord/Slack**:将状态反应清理延迟到运行最终化,因此排队、思考、工具和终端反应在正常进度更新期间不再闪烁。(#75582) - **Discord/语音**:对于仅文本配置保持文本 DM 主会话路由更新固定到配置的 DM 所有者,匹配组件交互,因此另一个直接消息发送器不能重定向未来主会话回复。感谢 @vincentkoc。 - **Discord/语音**:在 Discord 网关 RESUMED 事件后重新运行配置的语音自动加入,并在重新连接清理期间忽略已销毁过时语音连接,因此健康监视器账户重启可以重新加入配置频道。修复 #40665。感谢 @liz709。 - **插件/CLI**:在构建插件状态和检查报告时重用冷清单注册表,因此大型配置插件集不再为每个检查行重新发现捆绑/插件注册表一次。感谢 @vincentkoc。 - **Discord/语音**:延长默认语音加入 Ready 等待,添加可配置 `voice.connectTimeoutMs`/`voice.reconnectGraceMs`,并在销毁未恢复断开会话前警告,因此慢速 Discord 语音握手和重新连接不再静默失败。修复 #63098;参考 #39825 和 #65039。感谢 @darealgege、@kzicherman 和 @ayochim。 - **网关/健康**:当频道运行时状态偏离时刷新缓存的健康 RPC 快照,因此 Discord 和其他频道状态读取不再报告过时运行或连接值直到缓存 TTL 过期。(#75423) - **网关/会话**:在启动期间保持会话存储读取不运行过时修剪和条目计数上限维护,因此超大存储不再在更新后阻塞聊天历史就绪,同时写入和 `sessions cleanup --enforce` 仍然保留清理保护。修复 #70050。感谢 @tangda18。 - **安全/审计**:将普通 `security audit` 保留在冷配置/文件系统路径上,并为 `--deep` 保留插件运行时安全收集器,因此大型插件安装不能在例行审计期间执行每个插件运行时。感谢 @vincentkoc。 - **Discord/语音**:将配置的媒体理解提供商(如 Deepgram)合并到部分活动提供商注册表,因此后续语音回合在另一个媒体插件已经活动后保持转录。修复 #65687。感谢 @OneMintJulep。 - **WhatsApp**:通过根镜像运行时依赖阶段 `qrcode`,因此打包 QR 配对可以从暂存的插件运行时依赖安装渲染。修复 #75394。感谢 @FelipeX2001。 - **Discord/语音**:通过转发受信任的频道提示到语音代理运行,将每频道 Discord `systemPrompt` 覆盖应用于语音转录回合。修复 #47095。感谢 @qearlyao。 - **Discord/原生命令**:从斜杠命令和状态处理程序发送仅组件交互回复,而不是将可渲染 Discord 组件视为空响应。感谢 @vincentkoc。 - **Slack/斜杠命令**:发送块仅斜杠命令回复而不是丢弃 Slack 块有效负载没有纯文本回退。感谢 @vincentkoc。 - **Telegram/消息**:在发送仅按钮有效负载前从交互按钮/选择标签派生出回退文本,因此 Telegram 回复不被拒绝为空消息。感谢 @vincentkoc。 - **LINE/消息**:发送仅快速回复有效负载带回退选项文本而不是接受有效负载并返回空传递。感谢 @vincentkoc。 - **自动回复/停靠**:要求 `/dock-*` 路由开关从直接聊天开始,因此组或频道参与者不能 reroute 共享会话的未来回复到链接 DM。感谢 @vincentkoc。 - **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。 - **修复(日志)**:添加腾讯云、阿里云、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**:在接受回调前刷新当前原生斜杠命令注册,因此过时令牌来自删除或重新生成命令停止被接受没有网关重启,失败验证保持短暂缓存和查找启动按命令节流,每个回调门控 against 解析命令自己的启动令牌,因此一个令牌泄漏一个斜杠命令不能毒化另一个命令失败缓存,编辑斜杠验证查找错误,并添加主体读取超时到多账户路由路径,因此慢回调发送器不能阻塞调度器。感谢 @feynman-hou 和 @eleqtrizit。 - **安全/dotenv**:阻止 `COMSPEC` 在工作区 `.env`,因此恶意仓库不能重定向 Windows `cmd.exe` 解析,并锁定不区分大小写工作区 `.env` 回归覆盖完整 Windows shell 信任根家族(`COMSPEC`、`PROGRAMFILES`、`PROGRAMW6432`、`SYSTEMROOT`、`WINDIR`)。(#74460) 感谢 @mmaps。 - **网关/安装**:在 `gateway install --force` 和医生修复期间丢弃从旧服务文件保留的过时版本管理器 and 包管理器 PATH 条目,因此修复路径不再重新创建 `gateway-path-nonminimal` 警告。修复 #75220。(#75440) 感谢 @leonaIee、@renaudcerrato 和 @aaajiao。