← 返回更新日志

OpenClaw v2026.4.1-beta.1 预发布

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