← 返回更新日志

OpenClaw v2026.3.28

2026-03-29 · GitHub 原文
### 重大变更 - Providers/Qwen:移除已弃用的 `qwen-portal-auth`(针对 `portal.qwen.ai` 的 OAuth 集成);迁移至 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。 - xAI/onboarding:让捆绑的 Grok 网络搜索插件在 `openclaw onboard` 和 `openclaw configure --section web` 期间提供可选的 `x_search` 设置,包括使用共享 xAI 密钥的 `x_search` 模型选择器。 - 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 后端支持,并用通用 `--cli-backend-logs` 替换 `gateway run --claude-cli-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:通过向 `upload-file` 添加对 Microsoft Teams 和 Google Chat 的显式支持,以及通过 `upload-file` 暴露 BlueBubbles 文件发送(同时保留遗留的 `sendAttachment` 别名),开始统一基于文件的发送。 - 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。 ### 问题修复 - Agents/Anthropic:将未处理的提供商停止原因(例如 `sensitive`)作为结构化助手错误恢复,而非导致代理运行崩溃。(#56639) - Google/models:通过传递实际运行时提供商 ID 并添加模板提供商回退,解决所有 Google 提供商别名的 Gemini 3.1 pro、flash 和 flash-lite 解析问题;修复 flash-lite 前缀排序。 - 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:在入队边界通过清理防御空消息文本,并添加独立合并器守卫,保护防抖刷新。(#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 不再阻塞同一身份验证配置文件上的每个模型;将指数 1 分钟 -> 1 小时升级替换为阶梯 30 秒 / 1 分钟 / 5 分钟梯子;并在所有模型受速率限制时公开用户-facing 倒计时消息。(#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:添加具有 Codex/Claude 面向会话工具、Claude 频道通知以及更安全 stdio 桥生命周期处理(用于重连和路由会话发现)的网关支持频道 MCP 桥。 - 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/log 噪音。(#45328)感谢 @gregretkowski。 - Feishu:在监视器停止/中止时关闭 WebSocket 连接,因此幽灵连接不再持续存在,防止跨重启周期的重复事件处理和资源泄漏。(#52844)感谢 @schumilin。 - Feishu:使用原始消息 `create_time` 而非 `Date.now()` 作为入站时间戳,因此离线重试的消息携带正确的创作时间,防止对陈旧指令的错误目标代理操作。(#52809)感谢 @schumilin。 - Control UI/Skills:使用浏览器模态生命周期打开技能详情对话框,因此点击技能行时面板保持居中,而非在页面底部渲染出屏幕。(#55075) - 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:停止在工具执行期间将合成代理 ID(如 `agent-spawner`)视为 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` 有效负载保留上下文溢出指导,并从用户界面副本中省略提供商 `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:在启动期间解析针对活动 Matrix 配置环境路径的 `accessToken` 和 `password` SecretRefs,并正式接受 SecretRef `accessToken` 配置值。(#54980)感谢 @kakahu2015。 - Microsoft Teams/proactive DMs:当存在多个存储的引用时,为 `user:<aadObjectId>` 发送使用最新的个人会话引用,因此回复停止目标过时 DM 线程。(#54702)感谢 @gumclaw。 - Gateway/plugins:在构建 HTTP `/tools/invoke` 工具列表时重用会话工作区,并硬化工具构造以默认推断会话代理工作区,因此工作区插件不会在重复 HTTP 工具调用上重新注册。感谢 @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。 - Plugins/Matrix:用 `thumbnail_file` 加密 E2EE 图像缩略图,同时在 `thumbnail_url` 上保留未加密房间预览,因此加密 Matrix 图像事件保持缩略图元数据而不泄漏明文预览。(#54711)感谢 @frischeDaten。 - Telegram/forum topics:通过保留论坛线程命令上下文上的主题目标,保持原生 `/new` 和 `/reset` 路由到活动主题。(#35963)