← 返回更新日志

OpenClaw v2026.4.2

2026-04-02 · GitHub 原文
### 重大变更 - **Plugins/xAI**:将 `x_search` 设置从旧版核心路径 `tools.web.x_search.*` 迁移至插件自有路径 `plugins.entries.xai.config.xSearch.*`,在 `plugins.entries.xai.config.webSearch.apiKey` / `XAI_API_KEY` 上标准化 `x_search` 认证,并通过 `openclaw doctor --fix` 迁移旧版配置。(#59674)感谢 @vincentkoc。 - **Plugins/web fetch**:将 Firecrawl `web_fetch` 配置从旧版核心路径 `tools.web.fetch.firecrawl.*` 迁移至插件自有路径 `plugins.entries.firecrawl.config.webFetch.*`,通过新的获取提供者边界而非仅限 Firecrawl 的核心分支路由 `web_fetch` 回退,并通过 `openclaw doctor --fix` 迁移旧版配置。(#59465)感谢 @vincentkoc。 ### 功能变更 - **Tasks/Task Flow**:恢复核心 Task Flow 底层,支持托管与镜像同步模式、持久化流状态/修订跟踪,以及 `openclaw flows` 检查/恢复原语,使后台编排可持久化并独立于插件创作层操作。(#58930)感谢 @mbelinky。 - **Tasks/Task Flow**:新增托管子任务生成及粘性取消意图,使外部编排器可立即停止调度,并在活动子任务完成后让父 Task Flow 稳定至 `cancelled` 状态。(#59610)感谢 @mbelinky。 - **Plugins/Task Flow**:新增绑定的 `api.runtime.taskFlow` 接缝,使插件及可信创作层能通过主机解析的 OpenClaw 上下文创建并驱动托管 Task Flow,而无需每次调用传递所有者标识符。(#59622)感谢 @mbelinky。 - **Android/assistant**:新增助手角色入口点及 Google Assistant App Actions 元数据,使 Android 能通过助手触发器启动 OpenClaw 并将提示词传入聊天组合器。(#59596)感谢 @obviyus。 - **Exec 默认值**:使网关/节点主机执行默认以 YOLO 模式运行,通过请求 `security=full` 并设置 `ask=off`,并对主机批准文件回退及文档/doctor 报告与该无提示默认值对齐。 - **Providers/runtime**:新增提供者拥有的回放钩子表面,用于转录策略、回放清理及推理模式分发。(#59143)感谢 @jalehman。 - **Plugins/hooks**:新增 `before_agent_reply`,使插件能在内联操作后通过合成回复截断 LLM。(#20067)感谢 @JoshuaLelon。 - **Channels/session routing**:将提供者特定会话会话语法移至插件拥有的会话键表面,在引导、模型覆盖、重启及工具策略路径中保留 Telegram 话题路由与飞书作用域继承。 - **Feishu/comments**:新增专用 Drive 评论事件流,支持评论线程上下文解析、线程内回复及 `feishu_drive` 评论操作,用于文档协作工作流。(#58497)感谢 @wittam-01。 - **Matrix/plugin**:在文本发送、媒体字幕、编辑、轮询回退文本及操作驱动编辑中发出符合规范的 `m.mentions` 元数据,使 Matrix 提及在 Element 等客户端中可靠通知。(#59323)感谢 @gumadeiras。 - **Diffs**:新增插件拥有的 `viewerBaseUrl`,使查看器链接可使用稳定代理/公共源,而无需每次工具调用传递 `baseUrl`。(#59341)关联 #59227。感谢 @gumadeiras。 - **Agents/compaction**:在手动 `/compact` 及其他上下文引擎压缩路径中一致解析 `agents.defaults.compaction.model`,使引擎拥有的压缩在所有运行时入口点使用配置的覆盖模型。(#56710)感谢 @oliviareid-svg。 - **Agents/compaction**:新增 `agents.defaults.compaction.notifyUser`,使 `🧹 Compacting context...` 开始通知变为可选而非始终显示。(#54251)感谢 @oguricap0327。 - **WhatsApp/reactions**:为代理反应新增 `reactionLevel` 指导。感谢 @mcaxtr。 - **Exec approvals/channels**:当支持通道能从现有所有者配置推断批准者时,自动启用 DM 优先原生聊天批准,同时保持通道扇出显式并澄清转发与原生批准客户端配置。 ### 问题修复 - **Providers/transport policy**:在共享 HTTP、流及 WebSocket 路径中集中请求认证、代理、TLS 及头部塑形,阻止不安全的 TLS/运行时传输覆盖,并将代理跳 TLS 与目标 mTLS 设置分离。(#59682)感谢 @vincentkoc。 - **Providers/Copilot**:在共享提供者端点解析器中对原生 GitHub Copilot API 主机进行分类,并强化令牌派生代理端点解析,使 Copilot 基础 URL 路由保持集中,并在格式错误提示时安全失败。(#59644)感谢 @vincentkoc。 - **Providers/streaming headers**:在 OpenAI WebSocket、嵌入式运行器及代理流路径中集中默认及归属头部合并,使提供者特定头部保持一致,且调用者覆盖仅在预期位置生效。(#59542)感谢 @vincentkoc。 - **Providers/media HTTP**:在共享 OpenAI 兼容音频、Deepgram 音频、Gemini 媒体/图像及 Moonshot 视频请求路径中集中基础 URL 标准化、默认认证/头部注入及显式头部覆盖处理。(#59469)感谢 @vincentkoc。 - **Providers/OpenAI-compatible routing**:集中原生与代理请求策略,使隐藏归属及相关 OpenAI 系列默认值仅在流、WebSocket 及共享音频 HTTP 路径的验证原生端点上应用。(#59433)感谢 @vincentkoc。 - **Providers/Anthropic routing**:集中原生与代理端点分类,用于直接 Anthropic `service_tier` 处理,使仿冒或代理主机不继承原生 Anthropic 默认值。(#59608)感谢 @vincentkoc。 - **Gateway/exec loopback**:为空配对设备令牌映射恢复旧版角色回退,并允许静默本地角色升级,使本地执行和节点客户端在 `2026.3.31` 后不再因配对要求错误失败。(#59092)感谢 @openperf。 - **Agents/subagents**:将仅管理员子代理网关调用固定至 `operator.admin`,同时保持 `agent` 至少特权,使 `sessions_spawn` 不再在循环作用域升级配对中因 `close(1008) "pairing required"` 失败。(#59555)感谢 @openperf。 - **Exec approvals/config**:在规范化期间从 `~/.openclaw/exec-approvals.json` 剥离无效 `security`、`ask` 及 `askFallback` 值,使格式错误的策略枚举干净回退至文档默认值,而非损坏运行时策略解析。(#59112)感谢 @openperf。 - **Exec approvals/doctor**:从真实批准文件路径报告主机策略来源,并在归属有效策略冲突时忽略格式错误的主机覆盖值。(#59367)感谢 @gumadeiras。 - **Exec/runtime**:将 `tools.exec.host=auto` 视为仅路由,在沙箱可用时保留隐式无配置执行,否则使用网关,并拒绝会绕过配置沙箱或主机目标的每次调用主机覆盖。(#58897)感谢 @vincentkoc。 - **Slack/mrkdwn formatting**:在入站上下文中添加内置 Slack mrkdwn 指导,使 Slack 回复不再回退到在 Slack 中渲染不佳的通用 Markdown 模式。(#59100)感谢 @jadewon。 - **WhatsApp/presence**:在自聊天模式连接时发送 `unavailable` 状态,使个人手机用户不再在网关运行时丢失所有推送通知。(#59410)感谢 @mcaxtr。 - **WhatsApp/media**:将 HTML、XML 及 CSS 加入 MIME 映射,并对未知媒体类型优雅回退,而非丢弃附件。(#51562)感谢 @bobbyt74。 - **Matrix/onboarding**:在 `openclaw channels add` 及 `openclaw configure --section channels` 中恢复引导设置,同时保持共享 `setupWizard` 接缝上的自定义插件向导。(#59462)感谢 @gumadeiras。 - **Matrix/streaming**:当启用 `channels.matrix.blockStreaming` 时,为当前助手块保留实时部分预览,同时将完成的块更新作为单独消息保留。(#59384)感谢 @gumadeiras。 - **Feishu/comment threads**:强化文档评论线程传递,使整文档评论回退至 `add_comment`,延迟回复查找更可靠重试,且用户可见回复避免推理/规划溢出。(#59129)感谢 @wittam-01。 - **MS Teams/streaming**:当回复超过 4000 字符流限制时,从回退块传递中剥离已流式文本,使长响应不再重复内容。(#59297)感谢 @bradgroux。 - **Slack/thread context**:按有效对话允许列表过滤线程发起者及历史,而不丢弃有效的开放房间、DM 或群组 DM 上下文。(#58380)感谢 @jacobtomlinson。 - **Mattermost/probes**:通过 SSRF 保护路由状态探测,并遵守 `allowPrivateNetwork`,使自托管 Mattermost 部署的连接检查保持安全。(#58529)感谢 @mappel-nv。 - **Zalo/webhook replay**:按聊天及发送者限定回退去重键,使不同聊天或发送者间重复消息 ID 不再冲突,并强化部分缺失负载的元数据读取。(#58444) - **QQBot/structured payloads**:将本地文件路径限制为 QQ Bot 拥有的媒体存储,阻止遍历该根目录外,减少日志中的路径泄露,并保持内联图像数据 URL 工作。(#58453)感谢 @jacobtomlinson。 - **Image generation/providers**:将 OpenAI、MiniMax 及 fal 图像请求路由至共享提供者 HTTP 传输路径,使自定义基础 URL、受保护的私有网络路由及提供者请求默认值与其余提供者 HTTP 对齐。感谢 @vincentkoc。 - **Image generation/providers**:停止从配置的 OpenAI、MiniMax 及 fal 图像基础 URL 推断私有网络访问,并限制共享 HTTP 错误体读取,使敌对或配置错误端点安全失败,而不放宽 SSRF 策略或缓冲无界错误负载。感谢 @vincentkoc。 - **Browser/host inspection**:使静态 Chrome 检查辅助程序不在激活的浏览器运行时中加载,使 `openclaw doctor browser` 及相关检查不急切加载捆绑浏览器插件。(#59471)感谢 @vincentkoc。 - **Browser/CDP**:在循环检查前规范化尾随点 localhost 绝对形式主机,使远程 CDP WebSocket URL(如 `ws://localhost.:...`)重写回配置的远程主机。(#59236)感谢 @mappel-nv。 - **Agents/output sanitization**:从用户可见文本中剥离命名空间 `antml:thinking` 块,使 Anthropic 风格内部独白标签不泄露到回复中。(#59550)感谢 @obviyus。 - **Kimi Coding/tools**:将 Anthropic 工具负载规范化为 OpenAI 兼容函数形状(Kimi Coding 预期),使工具调用不再丢失必需参数。(#59440)感谢 @obviyus。 - **Image tool/paths**:相对于代理 `workspaceDir` 而非 `process.cwd()` 解析相对本地媒体路径,使 `inbox/receipt.png` 等输入可靠通过本地路径允许列表。(#57222)感谢 Priyansh Gupta。 - **Podman/launch**:从 `scripts/run-openclaw-podman.sh` 移除嘈杂容器输出,并使 Podman 安装指南与更安静启动流对齐。(#59368)感谢 @sallyom。 - **Plugins/runtime**:即使禁用插件,也保持 LINE 回复指令及浏览器支持的清理/重置流工作,同时收紧捆绑插件激活守卫。(#59412)感谢 @vincentkoc。 - **ACP/gateway reconnects**:在瞬态 WebSocket 丢失期间保持 ACP 提示活跃,同时在重新连接恢复未完成时仍有界失败。(#59473)感谢 @obviyus。 - **ACP/gateway reconnects**:在重新连接宽限期后拒绝过时预确认 ACP 提示,使调用者干净失败而非网关永不确认运行时无限挂起。 - **Gateway/session kill**:对会话终止请求强制 HTTP 操作者作用域,并在会话查找前授权,使未认证调用者无法探测会话存在。(#59128)感谢 @jacobtomlinson。 - **MS Teams/logging**:使用共享未知错误辅助程序格式化非 `Error` 失败,使日志不再将捕获的 SDK 或 Axios 对象折叠为 `[object Object]`。(#59321)感谢 @bradgroux。 - **Channels/setup**:在设置解析期间忽略不受信任的工作区通道插件,使阴影工作区插件无法覆盖内置通道设置/登录流,除非在配置中明确信任。(#59158)感谢 @mappel-nv。 - **Exec/Windows**:在网关和节点执行中恢复带引号感知 `argPattern` 匹配的允许列表执行,并在执行工具描述中显示准确动态预批准可执行提示。(#56285)感谢 @kpngr。 - **Gateway**:在显式确认及自然过期后清理空的 `node-pending-work` 状态条目,使每节点状态映射不再无限增长。(#58179)感谢 @gavyngong。 - **Webhooks/secret comparison**:在 BlueBubbles、飞书、Mattermost、Telegram、Twilio 及 Zalo Webhook 处理程序中用共享 `safeEqualSecret` 辅助程序替换临时安全秘密比较,并拒绝 BlueBubbles 中的空认证令牌。(#58432)感谢 @eleqtrizit。 - **OpenShell/mirror**:将 `remoteWorkspaceDir` 及 `remoteAgentWorkspaceDir` 限制为管理的 `/sandbox` 及 `/agent` 根,并在配置同步期间防止镜像同步覆盖或移除用户添加的 shell 根。(#58515)感谢 @eleqtrizit。 - **Plugins/activation**:在 CLI、网关引导及状态表面中保留显式、自动启用及默认激活来源及原因元数据,使插件启用状态在自动启用解析后保持准确。(#59641)感谢 @vincentkoc。 - **Exec/env**:阻止包根、语言运行时、编译器包含路径及凭证/配置位置的额外主机环境覆盖转移,使请求范围执行无法重定向受信任工具链或配置查找。(#59233)感谢 @drobison00。 - **Dotenv/workspace overrides**:阻止工作区 `.env` 文件覆盖 `OPENCLAW_PINNED_PYTHON` 及 `OPENCLAW_PINNED_WRITE_PYTHON`,使受信任辅助解释器不被仓库本地环境注入重定向。(#58473)感谢 @eleqtrizit。 - **Plugins/install**:在 `openclaw.plugin.json` 中接受 JSON5 语法,并在安装/验证期间捆绑 `plugin.json` 清单,使带尾随逗号、注释或未加引号键的第三方插件不再安装失败。(#59084)感谢 @singleGanghood。 - **Telegram/exec approvals**:在 Telegram 按钮渲染前将共享 `/approve … allow-always` 回调负载重写为 `/approve … always`,使插件批准 ID 仍符合 Telegram `callback_data` 限制并保持 "Allow Always" 操作可见。(#59217)感谢 @jameslcowan。 - **Cron/exec timeouts**:在隔离 cron 运行中(包括自定义会话目标 cron 作业)即使 `verbose: off` 也显示超时 `exec` 及 `bash` 失败,使计划作业不再静默失败。(#58247)感谢 @skainguyen1412。 - **Telegram/exec approvals**:对异步批准后续操作回退到原始会话键,并保持恢复失败状态传递消毒,使 Telegram 后续操作仍能送达而不泄露原始执行元数据。(#59351)感谢 @seonang。 - **Node-host/exec approvals**:通过批准计划器的可变脚本路径绑定 `pnpm dlx` 调用,使有效运行时命令被解析用于批准而非未绑定。(#58374) - **Exec/node hosts**:当未明确请求工作目录时,停止将网关工作目录 cwd 转发到远程节点执行,使跨平台节点批准回退到节点默认 cwd 而非以 `SYSTEM_RUN_DENIED` 失败。(#58977)感谢 @Starhappysh。 - **Exec approvals/channels**:将发起表面批准可用性与原生传递启用解耦,使 Telegram、Slack 及 Discord 在存在批准者且原生目标路由单独配置时仍暴露批准。(#59776)感谢 @joelnishanth。