← 返回更新日志

OpenClaw v2026.3.28-beta.1 预发布

2026-03-28 · GitHub 原文
## 2026.3.28-beta.1 ### 破坏性变更 - Providers/Qwen:移除已弃用的 `qwen-portal-auth` OAuth 集成(用于 `portal.qwen.ai`);迁移至 Model Studio,使用 `openclaw onboard --auth-choice modelstudio-api-key`。(#52709) 感谢 @pomelo-nwu。 - Config/Doctor:放弃自动迁移超过两个月的老旧配置;非常古老的遗留密钥现在会在加载或运行 `openclaw doctor` 时直接验证失败,而不再被重写。 ### 变更 - xAI/tools:将捆绑的 xAI 提供商移至 Responses API,增加一级 `x_search` 支持,并自动从已拥有的网络搜索和工具配置中启用 xAI 插件,使捆绑的 Grok 认证/已配置搜索流程无需手动切换插件即可工作。(#56048) 感谢 @huntharo。 - MiniMax:为 `image-01` 模型增加图像生成提供商,支持生成和图像转图像编辑,并具备宽高比控制功能。(#54487) 感谢 @liyuan97。 - Plugins/hooks:在 `before_tool_call` 钩子中增加异步 `requireApproval`,允许插件暂停工具执行并通过执行批准覆盖层、Telegram 按钮、Discord 交互或任何频道的 `/approve` 命令提示用户批准。`/approve` 命令现在同时处理执行和插件批准,并具备自动回退机制。(#55339) 感谢 @vaclavbelak 和 @joshavant。 - ACP/channels:为 Discord、BlueBubbles 和 iMessage 增加当前会话 ACP 绑定,因此 `/acp spawn codex --bind here` 可将当前聊天转换为 Codex 支持的工作区,而无需创建子线程;同时文档化聊天表面、ACP 会话和运行时工作区之间的区别。 - OpenAI/apply_patch:默认对 OpenAI 和 OpenAI Codex 模型启用 `apply_patch`,并将其沙箱策略访问权限与 `write` 权限对齐。 - Plugins/CLI backends:将捆绑的 Claude CLI、Codex CLI 和 Gemini CLI 推理默认值移至插件表面,增加捆绑的 Gemini CLI 后端支持,并将 `gateway run --claude-cli-logs` 替换为通用 `--cli-backend-logs`,同时保留旧标志作为兼容别名。 - Plugins/startup:从显式配置引用自动加载捆绑的提供商和 CLI 后端插件,因此捆绑的 Claude CLI、Codex CLI 和 Gemini CLI 消息提供商设置不再需要手动 `plugins.allow` 条目。 - Podman:简化围绕当前无根用户的容器设置,将启动助手安装到 `~/.local/bin`,并文档化主机 CLI `openclaw --container <name> ...` 工作流,而非专用的 `openclaw` 服务用户。 - Slack/tool actions:增加显式的 `upload-file` Slack 操作,通过现有 Slack 上传传输路由文件上传,并为频道和私信提供可选的文件名/标题/注释覆盖。 - Message actions/files:通过为 Microsoft Teams 和 Google Chat 增加显式支持,以及通过 `upload-file` 暴露 BlueBubbles 文件发送(同时保留遗留的 `sendAttachment` 别名),开始统一基于规范 `upload-file` 操作的优先文件发送。 - Plugins/Matrix TTS:将自动 TTS 回复作为原生 Matrix 语音气泡发送,而非通用音频附件。(#37080) 感谢 @Matthew19990919。 - CLI:增加 `openclaw config schema` 以打印 `openclaw.json` 的生成 JSON 模式。(#54523) 感谢 @kvokka。 - Config/TTS:在常规读取和密钥解析时自动迁移遗留语音配置,为 Doctor 保留遗留诊断,并移除旧捆绑 `tts.<provider>` API 密钥形状的常规模式运行时回退。 - Memory/plugins:将预压缩内存刷新计划移至活动内存插件合约之后,因此 `memory-core` 拥有刷新提示和目标路径策略,而非硬编码的核心逻辑。 - MiniMax:将模型目录精简为仅 M2.7,移除遗留的 M2、M2.1、M2.5 和 VL-01 模型。(#54487) 感谢 @liyuan97。 - Plugins/runtime:在插件运行时 `system` 命名空间中暴露 `runHeartbeatOnce`,以便插件能触发单次心跳周期,并带有显式的交付目标覆盖(例如 `heartbeat: { target: "last" }`)。(#40299) 感谢 @loveyana。 - Agents/compaction:在陈旧使用预检压缩中保留后压缩 AGENTS 刷新,适用于即时回复和排队的后续操作。(#49479) 感谢 @jared596。 - Agents/compaction:公开特定防护的取消原因,并将良性的手动 `/compact` 无操作情况重新标记为“跳过”而非“失败”。(#51072) 感谢 @afurm。 - Docs:增加 `pnpm docs:check-links:anchors` 用于 Mintlify 锚点验证,同时保留 `scripts/docs-link-audit.mjs` 作为稳定的链接审计入口点。(#55912) 感谢 @velvet-shark。 - Tavily:用 `X-Client-Source: openclaw` 标记出站 API 请求,以便 Tavily 归属 OpenClaw 产生的流量。(#55335) 感谢 @lakshyaag-tavily。 ### 修复 - Google/models:通过传递实际运行时提供商 ID 并增加模板提供商回退,解决所有 Google 提供商别名的 Gemini 3.1 pro、flash 和 flash-lite 解析问题;修复 flash-lite 前缀排序。(#56567) - OpenAI Codex/image tools:为媒体理解注册 Codex,并将图像提示通过 Codex 指令路由,因此图像分析不再因缺少提供商注册或缺少 `instructions` 而失败。(#54829) 感谢 @neeravmakwana。 - Agents/image tool:恢复当未注册特定提供商的媒体理解提供商时的通用图像运行时回退,因此图像分析对 `openrouter` 和 `minimax-portal` 等提供商重新生效。(#54858) 感谢 @MonkeyLeeT。 - WhatsApp:修复自聊 DM 模式中的无限回声循环,即机器人自身的出站回复被重新处理为新的入站用户消息。(#54570) 感谢 @joelnishanth - Telegram/splitting:用经过验证的 HTML 长度搜索替换比例文本估计,因此长消息在单词边界而非单词中间分割;当标签开销超过限制时优雅降级。(#56595) - Telegram/delivery:在机器人投递中跳过仅空白和钩子擦除的文本回复,以防止 GrammyError 400 空文本崩溃。(#56620) - Telegram/send:在所有四个 API 接收点验证 `replyToMessageId`,使用共享规范化器拒绝非数字、NaN 和混合内容字符串。(#56587) - Mistral:规范化 OpenAI 兼容请求标志,因此官方 Mistral API 运行不再因剩余的 `422 状态码(无正文)` 聊天错误而失败。 - Control UI/config:默认保持敏感原始配置隐藏,用显式的“揭示以编辑”状态替换空白阻塞编辑器,并恢复原始 JSON 编辑而不自动暴露密钥。修复 #55322。 - CLI/zsh:延迟 `compdef` 注册直到 `compinit` 可用,因此 zsh 补全能通过插件管理器和手动设置干净加载。(#56555) - BlueBubbles/debounce:在入队边界通过清理 guarding 防抖刷新,并添加独立的组合器 guarding,以防止空消息文本。(#56573) - Auto-reply:在频道投递前用严格单键检测抑制 JSON 封装的 `{"action":"NO_REPLY"}` 控制信封;当文本仅为静默信封时保留媒体。(#56612) - ACP/ACPX 代理注册:将 OpenClaw 的 ACPX 内置代理镜像与最新 `openclaw/acpx` 命令默认值和内置别名对齐,将版本化的 `npx` 内置项固定到确切版本,并阻止未知 ACP 代理 ID 在 MCP-代理路径上回退到原始 `--agent` 命令执行。(#28321) 感谢 @m0nkmaster 和 @vincentkoc。 - Security/audit:扩展网络搜索密钥审计,通过边界安全捆绑网络搜索注册表填充程序识别 Gemini、Grok/xAI、Kimi、Moonshot 和 OpenRouter 凭据。(#56540) - Docs/FAQ:从英文和中文 FAQ 条目中删除损坏的 Xfinity SSL 故障排除交叉链接——两部分已包含完整的内联解决方法。(#56500) - Telegram:在论坛主题会话中再次投递详细工具摘要,因此线程化主题聊天现在匹配 DM 详细行为。(#43236) 感谢 @frankbuild。 - BlueBubbles/CLI agents:为 CLI 路由回合恢复入站提示图像引用,重新应用嵌入运行程序图像大小保护措施,并用回归测试覆盖两个 CLI 图像传输路径。(#51373) - BlueBubbles/groups:在组门控通过后,可选地用本地 macOS 联系人名称丰富未命名参与者列表,因此组成员上下文可显示名称而非仅原始电话号码。 - Discord/reconnect:排空陈旧的网关套接字,在强制全新重连前清除缓存的恢复状态,并在旧套接字拒绝死亡时失败关闭,因此 Discord 恢复停止在中毒恢复状态上循环。(#54697) 感谢 @ngutman。 - iMessage:停止通过发送 `reply_to` 作为 RPC 元数据并剥离出站消息中的游离指令标签,将内联 `[[reply_to:...]]` 标签泄漏到投递文本中。(#39512) 感谢 @mvanhorn。 - CLI/plugins:使路由命令使用与网关启动相同的自动启用捆绑频道快照,因此像 Slack 这样的配置捆绑频道无需先配置重写即可加载。(#54809) 感谢 @neeravmakwana。 - CLI/message send:通过始终将默认 CLI 代理线程化到出站镜像中,将手动 `openclaw message send` 投递再次写入已解析代理会话记录。(#54187) 感谢 @KevInTheCloud5617。 - CLI/onboarding:在 Moonshot 设置菜单中再次显示 Kimi Code API 密钥选项,因此交互式选择器包含所有 Kimi 设置路径。修复 #54412 感谢 @sparkyrider - Agents/status:为新的 Anthropic 4.6 模型覆盖使用提供商感知上下文窗口查找,因此 `/status` 显示正确的 1.0m 窗口,而非报告不足的共享缓存最小值。(#54796) 感谢 @neeravmakwana。 - OpenAI/WebSocket:在 WebSocket 工具回合上保留推理重放元数据和工具调用项 ID,并在需要完整上下文重发时启动新响应链。(#53856) 感谢 @xujingchen1996。 - OpenAI/WS:为 Responses WebSocket 运行恢复推理块,并保持推理/工具调用重放元数据完整,因此恢复的会话不会丢失或破坏后续推理能力回合。(#53856) 感谢 @xujingchen1996。 - Agents/errors:在可用时公开提供商配额/重置详情,但将 HTML/Cloudflare 速率限制页面保留在通用回退上,因此原始错误页面不会显示给用户。(#54512) 感谢 @bugkill3r。 - Claude CLI:将捆绑的 Claude CLI 后端切换为 `stream-json` 输出,以便监视程序查看长时间运行的进度,并在 Claude 以空结果行完成时保留会话/使用元数据。(#49698) 感谢 @felear2022。 - Claude CLI/MCP:始终为后台 Claude CLI 运行传递严格生成的 `--mcp-config` 覆盖,包括空服务器情况,因此 Claude 不会继承环境用户/全局 MCP 服务器。(#54961) 感谢 @markojak。 - Agents/embedded replies:当嵌入运行在没有用户可见回复的情况下结束时,公开中间 429 和过载失败,同时保留仍使用遗留 `mediaUrl` 的成功仅媒体回复。(#50930) 感谢 @infichen。 - Chat/UI:将聊天发送按钮移至共享幽灵按钮主题样式,同时保持停止按钮图标在危险状态下的可读性。(#55075) 感谢 @bottenbenny。 - WhatsApp/allowFrom:对有效阻塞目标显示特定的 allowFrom 策略错误,而非误导性的 `<E.164|group JID>` 格式提示。感谢 @mcaxtr。 - Agents/cooldowns:按模型限定速率限制冷却,因此一个 429 不再阻塞同一认证配置文件上的每个模型;用阶梯式 30 秒 / 1 分钟 / 5 分钟阶梯替换指数 1 分钟 -> 1 小时升级,并在所有模型速率限制时公开用户面向倒计时消息。(#49834) 感谢 @kiranvk-2011。 - Agents/embedded transport errors:在嵌入运行用户消息和生命周期诊断中区分常见网络故障(如连接被拒绝、DNS 查找失败和中断的套接字)与真实超时。(#51419) 感谢 @scoootscooob。 - Telegram/pairing:忽略自 authored DM `message` 更新,因此机器人固定的状态卡片和类似服务更新不会触发虚假配对请求或重新进入入站调度。(#54530) 感谢 @huntharo - Mattermost/replies:将配对回复、斜杠命令回退回复和模型选择器消息保留在已解析配置路径上,因此 `exec:` SecretRef 机器人令牌在所有出站回复分支上生效。(#48347) 感谢 @mathiasnagler。 - Microsoft Teams/config:在严格配置验证中接受现有的 `welcomeCard`、`groupWelcomeCard`、`promptStarters` 以及反馈/反思键,因此已支持的 Teams 运行时设置停止失败模式检查。(#54679) 感谢 @gumclaw。 - MCP/channels:增加网关支持的频道 MCP 桥,包含 Codex/Claude 面向的会话工具、Claude 频道通知,以及针对重连和路由会话发现的更安全 stdio 桥生命周期处理。 - Plugins/SDK:通过插件 SDK 别名解析线程化 `moduleUrl`,因此用户安装在 openclaw 目录外(例如 `~/.openclaw/extensions/`)的插件能正确解析 `openclaw/plugin-sdk/*` 子路径导入,并在 `release:check` 中门控 `plugin-sdk:check-exports`。(#54283) 感谢 @xieyongliang。 - Config/web fetch:允许运行时模式验证中记录的 `tools.web.fetch.maxResponseBytes` 设置,因此有效配置不再因无法识别的密钥错误而失败。(#53401) 感谢 @erhhung。 - Message tool/buttons:在合并的工具定义中保持共享 `buttons` 模式可选,因此当未提供按钮时,纯 `action=send` 调用停止失败验证。(#54418) 感谢 @adzendo。 - Agents/openai-compatible tool calls:跨实时助手消息和重放历史去重重复工具调用 ID,因此 OpenAI 兼容后端不再因重复 `tool_call_id` 值而拒绝 HTTP 400。(#40996) 感谢 @xaeon2026。 - Models/openai-completions:默认非原生 OpenAI 兼容提供商省略工具定义 `strict` 字段,除非用户明确选择重新加入,因此工具调用在拒绝该选项的提供商上继续工作。(#45497) 感谢 @sahancava。 - Plugins/context engines:当旧引擎拒绝时重试严格遗留 `assemble()` 调用(不带新 `prompt` 字段),为预提示插件保留提示感知检索兼容性。(#50848) 感谢 @danhdoan。 - CLI/update status:当本地版本已匹配 npm 最新版时明确说明“已是最新”,同时保持可用性逻辑不变。(#51409) 感谢 @dongzhenye。 - Daemon/Linux:停止将非网关 systemd 服务标记为重复网关(仅因其单元文件提及 OpenClaw),减少 Doctor/日志中的误报噪音。(#45328) 感谢 @gregretkowski。 - Feishu:在监视器停止/中止时关闭 WebSocket 连接,因此幽灵连接不再持续存在,防止重启周期中的重复事件处理和资源泄漏。(#52844) 感谢 @schumilin。 - Feishu:使用原始消息 `create_time` 而非 `Date.now()` 作为入站时间戳,因此离线重试的消息携带正确的创作时间,防止对陈旧指令的错误目标代理操作。(#52809) 感谢 @schumilin。 - Control UI/Skills:使用浏览器模态生命周期打开技能详情对话框,因此点击技能行时面板保持居中,而非在页面底部渲染为离屏。(#55075) 感谢 @bottenbenny。 - Matrix/replies:在入站回复上下文中包含引用的投票问题/选项,因此当用户回复 Matrix 投票消息时代理能看到原始投票内容。(#55056) 感谢 @alberthild。 - Matrix/plugins:防止插件引导在打包的运行时混合裸和深 `matrix-js-sdk` 入口点时崩溃,因此不相关频道在插件加载期间不会宕机。(#56273) 感谢 @aquaright1。 - Agents/sandbox:遵守 `tools.sandbox.tools.alsoAllow`,让显式沙箱重新允许移除匹配的内置默认拒绝工具,并保持沙箱解释/错误指导与有效沙箱工具策略对齐。(#54492) 感谢 @ngutman。 - Agents/sandbox:使阻止工具指导再次支持全局匹配,在解释提示中编辑/净化会话特定信息以更安全复制粘贴,并避免在这些提示中泄露控制字符会话密钥。(#54684) 感谢 @ngutman。 - Agents/compaction:在重试高上下文 LLM 超时前触发超时恢复压缩,因此嵌入运行停止重复超大请求。(#46417) 感谢 @joeykrug。 - Agents/compaction:在后期嵌入自动压缩成功后协调 `sessions.json.compactionCount`,因此持久化会话计数在处理程序报告完成后赶上来。(#45493) 感谢 @jackal092927。 - Agents/failover:将 Codex accountId 令牌提取失败分类为认证错误,因此模型故障转移继续到下一个配置的候选者。(#55206) 感谢 @cosmicnet。 - Plugins/runtime:在构建 HTTP `/tools/invoke` 工具列表时重用兼容的活动插件注册表,并强化工具构造以默认推断会话代理工作区,因此工作区插件不会在重复 HTTP 工具调用上重新注册。感谢 @gumadeiras。 - Talk/macOS:停止直接系统语音失败重放系统语音,对共享监视程序定时使用应用语言环境回退,并为 macOS 回退路由和语言感知超时策略增加回归覆盖。(#53511) 感谢 @hongsw。 - Discord/gateway cleanup:在启动/处置清理期间保持晚期 Carbon 重连耗尽错误被抑制,因此 Discord 监视器关闭不再在晚期网关关闭事件上崩溃。(#55373) 感谢 @Takhoffman。 - Discord/gateway shutdown:将预期重连耗尽事件(在故意生命周期停止期间)视为干净关闭,因此启动中止清理不再暴露虚假网关失败。(#55324) 感谢 @joelnishanth。 - Discord/gateway shutdown:抑制在拆卸翻转 `lifecycleStopping` 之前已缓冲的重连耗尽事件,因此陈旧套接字 Discord 重启不再使整个网关崩溃。修复 #55403 和 #55421。感谢 @lml2468 和 @vincentkoc。 - GitHub Copilot/auth refresh:将大的 `expires_at` 值视为秒纪元,并限制远期运行时认证刷新定时器,因此 Copilot 令牌刷新不能陷入 `setTimeout` 溢出热循环。(#55360) 感谢 @michael-abdo。 - Agents/status:在无显式覆盖时在 `session_status` 中使用持久化运行时会话模型,并在 `session_status` 和 `/status` 中都遵守每代理 `thinkingDefault`。(#55425) 感谢 @scoootscooob、@xaeon2026 和 @ysfbsf。 - Heartbeat/runner:保证心跳运行和意外运行程序错误后间隔定时器被重新武装,因此计划心跳在中断周期后不会静默停止。(#52270) 感谢 @MiloStack。 - Config/Doctor:将陈旧的捆绑插件加载路径从遗留 `extensions/*` 位置重写为打包捆绑路径,包括目录名称不匹配和斜杠后缀配置条目。(#55054) 感谢 @SnowSky1。 - WhatsApp/mentions:停止将引用消息中嵌入的提及视为直接提及,因此回复一条 @提及机器人的消息不再错误触发提及门控。(#52711) 感谢 @lurebat。 - Matrix:在 `m.direct` 种子成功后保持独立 2 人房间脱离 DM 路由,同时仍遵守显式 `is_direct` 状态和启动回退恢复。(#54890) 感谢 @private-peter - Agents/ollama fallback:用前导状态码公开非 2xx Ollama HTTP 错误,因此 HTTP 503 响应再次触发模型故障转移。(#55214) 感谢 @bugkill3r。 - Feishu/tools:阻止像 `agent-spawner` 这样的合成代理 ID 在工具执行期间被视为 Feishu 账户 ID,因此工具回退到配置/默认 Feishu 账户,除非上下文 ID 是真实启用的 Feishu 账户。(#55627) 感谢 @MonkeyLeeT。 - Google/tools:从 Gemini 工具模式中剥离空 `required: []` 数组,因此仅可选工具参数不再触发 Google 验证器 400 错误。(#52106) 感谢 @oliviareid-svg。 - Onboarding/TUI/local gateways:在设置输出中显示解析的网关端口,澄清无守护进程本地健康/仪表板消息,并在重跑和显式本地网关 URL 上保留回环 Control UI 认证,因此本地快速入门流程干净恢复。(#55730) 感谢 @shakkernerd。 - TUI/chat log:将系统消息保持为单个逻辑条目,并在整个消息边界修剪溢出,因此换行系统间距保持完整。(#55732) 感谢 @shakkernerd。 - TUI/activation:在 TUI 中验证 `/activation` 参数,并拒绝无效值而非静默强制为 `mention`。(#55733) 感谢 @shakkernerd。 - Agents/model switching:在下一个安全重试边界将 `/model` 更改应用于活动嵌入运行,因此过载或重试回合切换到新选择的模型,而非固定到旧提供商。 - Agents/Codex fallback:将 Codex `server_error` 负载分类为可故障转移,在到达聊天前净化 `Codex error:` 负载,为前缀 `invalid_request_error` 负载保留上下文溢出指导,并从用户面向 UI 副本中省略提供商 `request_id` 值。(#42892) 感谢 @xaeon2026。 - Memory/search:在拆分插件运行时之间共享内存嵌入提供商注册,因此内存搜索在 memory-core 注册内置适配器后不再因未知提供商错误而失败。(#55945) 感谢 @glitch418x。 - Discord/Carbon beta:更新 `@buape/carbon` 到最新 beta 并传递新 `RateLimitError` 请求参数,因此 Discord 与上游 beta 构造函数变更保持兼容。(#55980) 感谢 @ngutman。 - Plugins/inbound claims:通过 `inbound_claim` 钩子元数据传递完整入站附件数组,同时为兼容性保留遗留单一媒体附件字段。(#55452) 感谢 @huntharo。 - Plugins/Matrix:通过转发 `originalFilename` 到 `saveMediaBuffer` 保留入站媒体的发送者文件名。(#55692) 感谢 @esrehmki。 - Matrix/mentions:识别可见标签使用机器人房间显示名称的 `matrix.to` 提及,因此 `requireMention: true` 房间在现代 Matrix 客户端中正确响应。(#55393) 感谢 @nickludlam。 - Ollama/thinking off:通过实时 Ollama 扩展请求路径路由 `thinkingLevel=off`,因此支持思考的 Ollama 模型现在接收顶级 `think: false` 而非静默生成隐藏推理令牌。(#53200) 感谢 @BruceMacD。 - Plugins/diffs:在打包更新期间阶段捆绑 `@pierre/diffs` 运行时依赖,因此捆绑的差异查看器在全局安装和更新后保持加载。(#56077) 感谢 @gumadeiras。 - Plugins/diffs:不带 JSON 模块导入加载捆绑 Pierre 主题,因此差异渲染在较新 Node 构建上继续工作。(#45869) 感谢 @NickHood1984。 - Plugins/uninstall:卸载频道插件时移除拥有的 `channels.<id>` 配置,并使卸载预览与显式频道所有权对齐,因此内置频道和共享密钥保持完整。(#35915) 感谢 @wbxl2000。 - Plugins/Matrix:在选择出站直接房间和路由未映射验证摘要时优先显式 DM 信号,因此严格 2 人回退房间不会超越真实 DM。(#56076) 感谢 @gumadeiras - Plugins/Matrix:在启动期间解析环境支持的 `accessToken` 和 `password` SecretRefs 到活动 Matrix 配置环境路径,并正式接受 SecretRef `accessToken` 配置值。(#54980) 感谢 @kakahu2015。 - Microsoft Teams/proactive DMs:当存在多个存储的引用时,为 `user:<aadObjectId>` 发送使用最新的个人会话引用,因此回复停止针对陈旧的 DM 线程。(#54702) 感谢 @gumclaw。 - Gateway/plugins:在构建 HTTP `/tools/invoke` 工具列表时重用会话工作区,并强化工具构造以默认推断会话代理工作区,因此工作区插件不会在重复 HTTP 工具调用上重新注册。(#56101) 感谢 @neeravmakwana - Brave/web search:在请求和缓存键生成前将不支持的 Brave `country` 过滤器规范化为 `ALL`,因此像 `VN` 这样的语言环境派生值停止因上游 422 验证错误而失败。(#55695) 感谢 @chen-zhang-cs-code。 - Discord/replies:在剥离内联回复标签时保留前导缩进,因此回复标记的纯文本和围栏代码块保持其格式。(#55960) 感谢 @Nanako0129。 - Daemon/status:从轻量级探测公开即时网关关闭原因,并在 `openclaw daemon status` 中优先这些具体的认证或配对失败而非通用超时。(#56282) 感谢 @mbelinky。 - Agents/failover:默认将 HTTP 410 错误分类为可重试超时,同时从负载保留显式会话过期、计费和认证信号。(#55201) 感谢 @nikus-pan。 - Agents/subagents:为扩展频道(如 BlueBubbles)恢复完成宣布投递。(#56348) - Plugins/Matrix:通过 `createRequire(...)` 加载捆绑的 `@matrix-org/matrix-sdk-crypto-nodejs`,因此 E2EE 媒体发送和接收在打包的 ESM 构建中保持包本地原生绑定查找工作。(#54566) 感谢 @joelnishanth。