← 返回更新日志

OpenClaw v2026.4.1

2026-04-01 · GitHub 原文
## 2026.4.1 ### 变更 - Tasks/chat:为当前会话新增 `/tasks` 作为原生聊天后台任务看板,展示近期任务详情,并在无关联任务可见时显示代理本地回退计数。相关 #54226。感谢 @vincentkoc。 - Web search/SearXNG:为 `web_search` 新增捆绑的 SearXNG 提供商插件,支持可配置主机地址。(#57317) 感谢 @cgdusek。 - Amazon Bedrock/Guardrails:在捆绑提供商中新增 Bedrock Guardrails 支持。(#58588) 感谢 @MikeORed。 - macOS/Voice Wake:新增语音唤醒选项以触发 Talk Mode。(#58490) 感谢 @SmoothExec。 - Feishu/comments:新增专用的 Drive 评论事件流,支持评论线程上下文解析、线程内回复以及文档协作工作流的 `feishu_drive` 评论操作。(#58497) 感谢 @wittam-01。 - Gateway/webchat:使 `chat.history` 文本截断可通过 `gateway.webchat.chatHistoryMaxChars` 和每请求 `maxChars` 配置,同时保留静默回复过滤和现有默认负载限制。(#58900) - Agents/default params:新增 `agents.defaults.params` 用于全局默认提供商参数。(#58548) 感谢 @lpender。 - Agents/failover:对提示端和助手端相同提供商的认证配置文件重试设置上限(针对速率限制失败),在跨提供商模型回退前添加 `auth.cooldowns.rateLimitedProfileRotations` 控制项,并记录新的回退行为。(#58707) 感谢 @Forgely3D - Cron/tools allowlist:新增 `openclaw cron --tools` 用于每任务工具白名单。(#58504) 感谢 @andyk-ms。 - Channels/session routing:将提供商特定的会话会话语法移至插件拥有的会话键表面,保留 Telegram 主题路由和飞书作用域继承,涵盖引导启动、模型覆盖、重启和工具策略路径。 - WhatsApp/reactions:为代理反应新增 `reactionLevel` 指导。感谢 @mcaxtr。 - Telegram/errors:新增可配置的 `errorPolicy` 和 `errorCooldownMs` 控制项,使 Telegram 能按账户、聊天和主题抑制重复投递错误,同时不静默不同失败。(#51914) 感谢 @chinar-amrutkar - ZAI/models:在捆绑的 Z.AI 提供商目录中新增 `glm-5.1` 和 `glm-5v-turbo`。(#58793) 感谢 @tomsun28 - Agents/compaction:在手动 `/compact` 和其他上下文引擎压缩路径中一致解析 `agents.defaults.compaction.model`,使引擎拥有的压缩在所有运行时入口点使用配置的覆盖模型。(#56710) 感谢 @oliviareid-svg ### 修复 - Chat/error replies:停止将原始提供商/运行时故障泄露到外部聊天频道,改为返回友好的重试消息,并为 Bedrock toolResult/toolUse 会话不匹配情况新增特定的 `/new` 提示。(#58831) 感谢 @ImLukeF。 - Gateway/reload:在配置重载器中忽略启动配置写入(通过持久化哈希),使生成的认证令牌和预置的 Control UI 源不会触发重启循环,同时真正的 `gateway.auth.*` 编辑仍需要重启。(#58678) 感谢 @yelog - Tasks/gateway:防止任务注册维护扫描在 SQLite 同步压力下阻塞网关事件循环,使升级后的网关在启动约一分钟后停止挂起。(#58670) 感谢 @openperf - Tasks/status:在 `/status` 和 `session_status` 中隐藏陈旧已完成的后台任务,优先使用实时任务上下文,且仅在无活跃工作时显示近期失败。(#58661) 感谢 @vincentkoc - Tasks/gateway:在维护标记运行丢失或修剪前重新检查当前任务记录,使扫描期间到达的任务心跳或清理更新不再被陈旧快照状态覆盖。 - Exec/approvals:当内联或配置的工具策略未设置时,尊重 `exec-approvals.json` 安全默认值,并保持 Slack 和 Discord 原生审批处理与推断的审批者和真实频道启用状态对齐,使远程执行不再陷入错误的审批超时和禁用状态。感谢 @scoootscooob 和 @vincentkoc。 - Exec/approvals:使 `allow-always` 作为持久用户批准信任持久化,而非表现为 `allow-once`;在无法安全持久化可执行允许列表条目的 shell 包装器路径上重用精确命令信任;防止静态允许列表条目静默绕过 `ask:"always"`;当 Windows 无法构建允许列表执行计划时,要求明确批准而非硬性终止远程执行。感谢 @scoootscooob 和 @vincentkoc。 - Exec/cron:当允许受信任自动化时,从有效主机回退策略解决孤立 cron 无路由审批死胡同;使 `openclaw doctor` 在 `tools.exec` 比 `~/.openclaw/exec-approvals.json` 更广泛时发出警告,使更严格的主机策略冲突显式化。感谢 @scoootscooob 和 @vincentkoc。 - Sessions/model switching:将 `/model` 更改排队在繁忙运行之后而非中断当前回合,并重定向排队的后续操作,使后续工作在当前回合完成后立即采用新模型。 - Gateway/HTTP:跳过失败的 HTTP 请求阶段,使一个损坏的外观不再强制每个 HTTP 端点返回 500。(#58746) 感谢 @yelog - Gateway/nodes:停止将实时节点命令固定到批准的节点对记录。节点配对保持信任/令牌流,而每节点 `system.run` 策略保留在该节点的执行批准配置中。修复 #58824。 - WebChat/exec approvals:在代理系统提示中使用原生审批 UI 指导,而非告知代理在 webchat 会话中粘贴手动 `/approve` 命令。感谢 @vincentkoc。 - Web UI/OpenResponses:在 webchat 中保留重写的流快照,并在模型倒带早期输出时保持 OpenResponses 最终流式文本对齐。(#58641) 感谢 @neeravmakwana - Discord/inbound media:使 Discord 附件和贴纸下载通过共享空闲超时和工作器中止路径,使缓慢或卡住的入站媒体获取停止阻塞消息处理。(#58593) 感谢 @aquaright1 - Telegram/retries:将非幂等发送保留在严格安全发送路径上,重试封装的预连接失败,并为安全交付重试保留 `429` / `retry_after` 退避。(#51895) 感谢 @chinar-amrutkar - Telegram/exec approvals:将主题感知执行批准后续操作路由通过 Telegram 拥有的线程和批准目标解析,使论坛主题批准保留在原始主题而非回退到根聊天。(#58783) - Telegram/local Bot API:为绝对路径下载保留媒体 MIME 类型,使本地音频文件仍能触发转录和其他基于 MIME 的处理。(#54603) 感谢 @jzakirov - Channels/WhatsApp:将入站消息时间戳传递给模型上下文,使 AI 能看到 WhatsApp 消息的发送时间。(#58590) 感谢 @Maninae - Channels/QQ Bot:将 `/bot-logs` 导出限制在真正显式的 QQBot 允许列表后,拒绝通配符和混合通配符条目,同时保留真实框架命令路径。感谢 @vincentkoc。 - Channels/plugins:即使在限制性插件允许列表下,也使捆绑频道插件可从遗留 `channels.<id>` 配置加载;使 `openclaw doctor` 仅对真实插件阻止器警告,而非误导性设置指导。(#58873) 感谢 @obviyus - Plugins/bundled runtimes:在打包安装、Docker 构建和本地运行时暂存中恢复外部化捆绑插件运行时依赖暂存,使捆绑插件在 2026.3.31 外部化变更后保留其声明的运行时依赖。(#58782) - LINE/runtime:从构建的 `dist/plugins/runtime` 布局解析打包运行时契约,使 LINE 频道在 2026.3.31 全局 npm 安装后能再次正常启动。(#58799) 感谢 @vincentkoc。 - MiniMax/plugins:为 API 密钥认证/配置自动启用捆绑的 MiniMax 插件,使 MiniMax 图像生成和其他插件拥有的功能无需手动插件允许列表即可加载。(#57127) 感谢 @tars90percent。 - Ollama/model picker:在 CLI 选择器中提供商选择后仅显示 Ollama 模型。(#55290) 感谢 @Luckymingxuan。 - CDP/profiles:优先使用 `cdpPort` 而非陈旧的 WebSocket URL,使浏览器自动化干净重连。(#58499) 感谢 @Mlightsnow。 - Media/paths:将相对 `MEDIA` 路径解析相对于代理工作区,使本地附件引用保持工作。(#58624) 感谢 @aquaright1。 - Memory/session indexing:防止由 `session-start` 或 `watch` 触发的同步导致完整重新索引跳过会话记录,使重启驱动的重新索引保留会话记忆。(#39732) 感谢 @upupc - Memory/QMD:创建 QMD 集合时优先使用 `--mask` 而非 `--glob`,使默认记忆集合保留其预期模式并停止在重启时冲突。(#58643) 感谢 @GitZhangChi。 - Subagents/tasks:防止子代理完成和清理在任务注册写入失败时崩溃,使损坏或缺失的任务行不再在生命周期最终化期间使网关宕机。感谢 @vincentkoc。 - Sandbox/browser:将浏览器运行时检查与 `agents.defaults.sandbox.browser.image` 比较,使 `openclaw sandbox list --browser` 停止将健康的浏览器容器报告为图像不匹配。(#58759) 感谢 @sandpile。 - Plugins/install:在存档和 npm-spec 插件安装中转发 `--dangerously-force-unsafe-install`,使文档覆盖到达这些安装路径的安全扫描器。(#58879) 感谢 @ryanlee-gemini。 - Auto-reply/commands:在斜杠命令检测前剥离入站元数据,使包装的 `/model`、`/new` 和 `/status` 命令被识别。(#58725) 感谢 @Mlightsnow。 - Agents/Anthropic:在重放、缓存控制补丁和上下文修剪中保留思维块和签名,使压缩的 Anthropic 会话继续工作而非在后续回合失败。(#58916) 感谢 @obviyus - Agents/failover:统一结构化和原始提供商错误分类,使提供商特定的 `400`/`422` 有效负载不再在重试、计费或压缩逻辑能检查它们之前被强制进入通用格式失败。(#58856) 感谢 @aaron-he-zhu。 - Auth profiles/store:在存储加载时将 misplaced SecretRef 对象从纯文本 `key` 和 `token` 字段强制转换,使无 ACP 运行时的代理升级后不再在 `.trim()` 上崩溃。(#58923) 感谢 @openperf。 - ACPX/runtime:通过替换死命名会话和在 ACPX 公开稳定会话 ID 时恢复后端会话,修复 `queue owner unavailable` 会话恢复,使第一个 ACP 提示不再继承死句柄。(#58669) 感谢 @neeravmakwana - ACPX/runtime:当报告的 ACPX 会话 ID 陈旧时,无 `--resume-session` 重试死会话队列所有者修复,使恢复仍创建新命名会话而非失败会话初始化。感谢 @obviyus。 - Auth/OpenAI Codex:在返回前将插件刷新的 OAuth 凭据持久化到 `auth-profiles.json`,使旋转的 Codex 刷新令牌在重启后存活并停止陷入 `refresh_token_reused` 循环。(#53082) - Discord/gateway:将重新连接所有权交还 Carbon,保持运行时状态与关闭/重新连接状态对齐,并强制停止未达到 READY 就打开的套接字,使 Discord 监控器能迅速恢复而非等待陈旧健康超时。(#59019) 感谢 @obviyus - Config/Telegram:在加载时将移除的 `channels.telegram.groupMentionsOnly` 迁移到 `channels.telegram.groups["*"].requireMention`,使遗留配置不再在启动时崩溃。(#55336) 感谢 @jameslcowan。