← 返回更新日志

OpenClaw v2026.3.31

2026-03-31 · GitHub 原文
### 破坏性变更 - **节点/执行**:从 CLI 和代理 `nodes` 工具中移除重复的 `nodes.run` shell 包装器,使节点 shell 执行始终通过 `exec host=node` 进行,从而在 `nodes invoke` 和专用媒体/位置/通知操作上保持节点特定功能。 - **插件 SDK**:弃用传统的提供程序兼容子路径以及较旧的捆绑提供程序设置和通道运行时兼容性填充程序,发出迁移警告,并保留当前文档化的 `openclaw/plugin-sdk/*` 入口点以及本地的 `api.ts` / `runtime-api.ts` barrel 文件作为未来主版本移除前的前进路径。 - **技能/安装 与 插件/安装**:内置的危险代码 `critical` 发现结果和安装时扫描失败现在默认以“失败闭合”方式处理,因此之前成功的插件安装和网关支持技能依赖安装现在可能需要显式的危险覆盖(例如 `--dangerously-force-unsafe-install`)才能继续。 - **网关/认证**:`trusted-proxy` 现在拒绝混合的共享令牌配置,本地直连回退需要配置的令牌,而不是隐式认证同一主机调用者。感谢 @zhangning-agent, @jacobtomlinson, 和 @vincentkoc。 - **网关/节点命令**:节点命令现在在节点配对获批前保持禁用状态,因此仅设备配对已不足以暴露已声明的节点命令。(#57777) 感谢 @jacobtomlinson。 - **网关/节点事件**:节点发起的运行现在保持在缩减的受信表面上,因此之前依赖更广泛主机/会话工具访问权限的通知驱动或节点触发流程可能需要调整。(#57691) 感谢 @jacobtomlinson。 ### 变更 - **ACP/插件**:添加一个显式的默认关闭的 ACPX 插件工具 MCP 桥接配置,记录信任边界,并加固内置桥接打包/日志路径,使全局安装和 stdio MCP 会话能够可靠工作。(#56867) 感谢 @joe2643。 - **代理/LLM**:为嵌入式运行器请求添加可配置的空闲流超时,以便停滞的模型流干净中止,而不是挂起直到更广泛的运行超时触发。(#55072) 感谢 @liuy。 - **代理/MCP**:使用提供程序安全名称(`serverName__toolName`)具体化捆绑 MCP 工具,支持可选的 `streamable-http` 传输选择以及每服务器连接超时,并在显式截断丢弃它们之前保留来自中止/错误回合的真实工具结果。(#49505) 感谢 @ziomancer。 - **Android/通知**:添加带有包过滤、安静时段、速率限制以及转发通知事件更安全选择器行为的通知转发控件。(#40175) 感谢 @nimbleenigma。 - **后台任务**:将任务转变为真正的共享后台运行控制平面,而不仅仅是 ACP 簿记,通过统一 ACP、子代理、cron 和后台 CLI 执行到一个 SQLite 支持的账本下,通过执行器接缝路由分离的生命周期更新,添加审计/维护/状态可见性,收紧自动清理和丢失运行恢复,改进内部状态/工具表面的任务感知,并澄清心跳/主会话自动化与分离计划运行之间的区别。感谢 @mbelinky 和 @vincentkoc。 - **后台任务**:添加第一个线性任务流控制平面,包含 `openclaw flows list|show|cancel`,将手动多任务流与单任务自动同步流分开,并为明显孤立或损坏的流/任务链接显示医生恢复提示。感谢 @mbelinky 和 @vincentkoc。 - **通道/QQ 机器人**:添加 QQ 机器人作为捆绑通道插件,支持多账户设置、SecretRef 感知的凭据、斜杠命令、提醒以及媒体发送/接收支持。(#52986) 感谢 @sliverp。 - **差异**:跳过未使用的查看器与文件 SSR 预加载工作,以便 `diffs` 仅查看和仅文件运行减少渲染工作,同时保持模式输出对齐。(#57909) 感谢 @gumadeiras。 - **任务**:添加一个最小的 SQLite 支持的任务流注册表以及任务到流链接脚手架,因此编排工作可以开始获得一个一级父记录,而无需更改当前的任务传递行为。感谢 @mbelinky 和 @vincentkoc。 - **任务**:在单任务流上持久化阻塞状态,并让同一流在重试时干净地重新打开,因此阻塞的分离工作可以携带父级原因并继续,而不会碎片化为新作业。感谢 @mbelinky 和 @vincentkoc。 - **任务**:将单任务 ACP 和子代理更新通过父任务流所有者上下文路由,因此分离工作可以经由预期的父线程/会话重新出现,而不是仅作为原始子任务发言。感谢 @mbelinky 和 @vincentkoc。 - **LINE/出站媒体**:在 LINE 特定传递路径上添加 LINE 图像、视频和音频出站发送,包括视频的显式预览/跟踪处理,同时将通用媒体发送保留在现有仅图像路径上。(#45826) 感谢 @masatohoshino。 - **Matrix/历史**:通过 `channels.matrix.historyLimit` 为 Matrix 组触发器添加可选房间历史上下文,具有每代理水印和重试安全快照,因此失败触发器重试不会漂移到更新的房间消息中。(#57022) 感谢 @chain710。 - **Matrix/网络**:添加显式的 `channels.matrix.proxy` 配置以通过 HTTP(S) 代理路由 Matrix 流量,包括账户级覆盖和匹配探测/运行时行为。(#56931) 感谢 @patrick-yingxi-pan。 - **Matrix/流式**:添加草稿流式处理,因此部分 Matrix 回复就位更新同一消息,而不是为每个块发送新消息。(#56387) 感谢 @jrusz。 - **Matrix/线程**:添加每 DM `threadReplies` 覆盖,并保持线程会话隔离与从触发消息开始的生效房间或 DM 线程策略对齐。(#57995) 感谢 @teconomix。 - **MCP**:为 `mcp.servers` URL 配置添加远程 HTTP/SSE 服务器支持,包括认证头以及 MCP 凭据更安全的配置编辑。(#50396) 感谢 @dhananjai1729。 - **内存/QMD**:添加每代理 `memorySearch.qmd.extraCollections`,因此代理可以选择加入跨代理会话搜索,而无需将每个转录集合扁平化为一个共享 QMD 命名空间。感谢 @vincentkoc。 - **Microsoft Teams/成员信息**:添加 Graph 支持的成员信息操作,因此 Teams 自动化和工具可以直接从 Microsoft Graph 解析频道成员详细信息。(#57528) 感谢 @sudie-codes。 - **Nostr/入站私信**:在配对或发送者授权副作用之前验证入站事件签名,因此伪造的 DM 事件不再创建配对请求或触发回复尝试。感谢 @smaeljaish771 和 @vincentkoc。 - **OpenAI/响应**:在响应 HTTP 和 WebSocket 传输上转发配置的 `text.verbosity`,在 `/status` 中显示它,并保持每代理详细级别优先级与运行时行为对齐。(#47106) 感谢 @merc1305 和 @vincentkoc。 - **Pi/Codex**:为嵌入式 Pi 运行添加原生 Codex 网络搜索支持,包括配置/文档/向导覆盖以及原生 Codex 搜索激活时托管工具抑制。(#46579) 感谢 @Evizero。 - **Slack/执行审批**:添加原生 Slack 审批路由和审批者授权,因此执行审批提示可以保留在 Slack 中,而不是回退到 Web UI 或终端。感谢 @vincentkoc。 - **TTS**:添加结构化提供程序诊断和回退尝试分析。(#57954) 感谢 @joshavant。 - **WhatsApp/反应**:代理现在可以对传入的 WhatsApp 消息做出表情反应,从而实现更自然的对话交互,例如用 ❤️ 确认照片而不是输入回复。感谢 @mcaxtr。 - **代理/BTW**:强制 `/btw` 侧问题禁用提供程序推理,因此 Anthropic 自适应思考会话停止失败并出现 `No BTW response generated`。修复 #55376。感谢 @Catteres 和 @vincentkoc。 - **CLI/引导**:在拒绝发现的端点后将远程网关 URL 提示重置为安全回环默认值,因此引导不会保留先前拒绝的远程 URL。(#57828) - **代理/执行默认值**:当没有内联指令或会话覆盖时,尊重每代理 `tools.exec` 默认值,因此配置的执行主机、安全、询问和节点设置实际应用。(#57689) - **沙盒/网络**:通过共享沙盒策略清理 SSH 子进程环境变量,并将市场存档下载以及 Ollama 发现、认证和拉取请求通过受保护的获取路径路由,因此沙盒化执行和远程获取遵循仓库的信任边界。(#57848, #57850) ### 修复 - **Slack**:当草稿最终化编辑模糊失败时停止重试驱动的重复回复,并按可读名称而不是原始 ID 记录配置的允许用户/频道。 - **代理/OpenAI 响应**:在 WebSocket/响应路径上规范化原始捆绑 MCP 工具架构,因此裸对象、类对象和顶级联合 MCP 工具不再在工具注册期间被 OpenAI 拒绝。(#58299) 感谢 @yelog。 - **ACP/安全**:用语义审批类替换 ACP 的危险工具名称覆盖,因此只有狭窄的只读读取/搜索可以自动批准,而间接执行能力和控制平面工具始终需要显式提示批准。感谢 @vincentkoc。 - **ACP/sessions_spawn**:注册 ACP 子运行以进行完成跟踪和生命周期清理,并使注册失败清理明确为尽力而为,因此调用者不假设已启动的 ACP 回合已完全中止。(#40885) 感谢 @xaeon2026 和 @vincentkoc。 - **ACP/任务**:当 ACP 运行在确定性写入或授权阻止程序上干净退出时将其标记为阻塞,并唤醒父会话以进行后续操作,而不是错误报告成功。 - **ACPX/运行时**:从扩展包元数据推导捆绑 ACPX 的预期版本,而不是硬编码单独的文本,因此插件本地 ACPX 安装在版本提升后停止漂移出健康检查对等。(#49089) 感谢 @jiejiesks 和 @vincentkoc。 - **代理/Anthropic 故障转移**:将带有 `An unexpected error occurred while processing the response` 的 Anthropic `api_error` 负载视为暂时性,因此重试/故障转移可以介入而不是显示终端失败。(#57441) 感谢 @zijiess 和 @vincentkoc。 - **代理/压缩**:防止后期压缩重试完成双重解析已完成的压缩未来,因此中断或超时的压缩停止显示虚假的第二完成竞争。(#57796) 感谢 @joshavant。 - **代理/禁用的提供程序**:使禁用的提供程序从默认模型选择和嵌入式提供程序故障转移中消失,同时让显式固定的禁用提供程序以清晰的配置错误失败,而不是静默接收流量。(#57735) 感谢 @rileybrown-dev 和 @vincentkoc。 - **代理/OAuth 输出**:通过网关 fs 策略强制执行主机 OAuth 输出读取器,因此嵌入式网关运行在提供程序认证写入落在当前沙盒工作区外时停止崩溃。(#58249) 感谢 @joshavant。 - **代理/系统提示**:修复嵌入式运行时系统提示中的 `agent.name` 插值,并使提供程序/模型故障转移文本反映启动后的有效运行时选择。(#57625) 感谢 @StllrSvr 和 @vincentkoc。 - **Android/设备信息**:从包管理器而不是隐藏 API 读取应用的版本元数据,因此 Android 15+ 引导和设备信息不再编译失败或报告占位符值。(#58126) 感谢 @L3ER0Y。 - **Android/配对**:在重复 QR 配对时停止向 `gateway-service.conf` 追加重复的推送接收器条目,并将推送注册限制在当前成功的配对,因此 Android 推送传递在重新配对和令牌轮换期间保持健康。(#58256) 感谢 @surrealroad。 - **应用安装冒烟**:将最新版本查找固定到 `latest`,在重运行中缓存第一个稳定安装版本,并放宽预发布包断言,因此 Parallels 冒烟通道可以验证稳定到主升级,即使 `beta` 提前或来宾从较旧稳定开始。(#58177) 感谢 @vincentkoc。 - **认证/配置文件**:在运行进程中保留最后一个成功的配置加载在内存中,并在成功写入/重新加载时刷新该快照,因此热路径停止在监视器驱动的交换之间重新解析 `openclaw.json`。 - **配置/SecretRef + 控制 UI**:加固 SecretRef 编辑往返还原,阻止不安全的原始回退(原始不可用时强制表单模式),并在配置写入 RPC 持久化之前预检提交的配置 SecretRef。(#58044) 感谢 @joshavant。 - **配置/Telegram**:在加载时将移除的 `channels.telegram.groupMentionsOnly` 迁移到 `channels.telegram.groups[\"*\"].requireMention`,因此遗留配置在启动时不再崩溃。(#55336) 感谢 @jameslcowan。 - **配置/更新**:停止 `openclaw doctor` 写回持久化插件注入的通道默认值,因此 `openclaw update` 不再播种稍后破坏服务刷新验证的配置键。(#56834) 感谢 @openperf。 - **控制 UI/代理**:在初始文件面板打开时自动加载代理工作区文件,并从有效运行时代理元数据填充概述模型/工作区/故障转移,因此默认模型不再显示为 `Not set`。(#56637) 感谢 @dxsx84。 - **控制 UI/斜杠命令**:使 `/steer` 和 `/redirect` 从聊天命令面板工作,对活动运行 `/steer` 具有可见的挂起状态,正确的重定向运行跟踪,以及命令菜单中的单个规范 `/steer` 条目。(#54625) 感谢 @fuller-stack-dev。 - **Cron/公告**:为公告模式保留所有可交付文本负载而不是折叠到最后一块,因此多行 cron 报告完整传递到 Telegram 论坛主题。 - **Cron/隔离会话**:跨重试重启携带完整的实时会话提供程序、模型和认证配置文件选择,因此具有模型覆盖的 cron 作业不再在运行时模型切换请求期间失败或循环。(#57972) 感谢 @issaba1。 - **差异/配置**:从 `diffsPluginConfigSchema.safeParse()` 保留架构形状的插件配置解析,因此直接调用者保留 `defaults` 和 `security` 部分而不是接收扁平化的工具默认值。(#57904) 感谢 @gumadeiras。 - **差异**:当 `lang` 提示在差异渲染和查看器水合期间无效时回退到纯文本,因此错误或过时的语言值不再破坏差异查看器。(#57902) 感谢 @gumadeiras。 - **Discord/语音**:在转录前对语音入口强制执行相同的公会频道和成员允许列表检查,因此加入的语音频道不再接受来自配置的 Discord 访问策略之外用户的语音。感谢 @cyjhhh 和 @vincentkoc。 - **Docker/设置**:为本地镜像构建(包括沙盒镜像构建)强制 BuildKit,因此 `./docker-setup.sh` 在主机默认为 Docker 传统构建器时不再在 `RUN --mount=...` 上失败。(#56681) 感谢 @zhanghui-china。 - **文档/锚点**:修复损坏的英文文档链接并使 Mint 锚点审计针对英文源文档树运行。(#57039) 感谢 @velvet-shark。 - **医生/插件**:当没有迁移计划时跳过错误的 Matrix 遗留助手警告,并保持捆绑的 `enabledByDefault` 插件在网关启动集中。(#57931) 感谢 @dinakars777。 - **执行审批/macOS**:在推导 shell 负载和始终允许模式之前展开 `arch` 和 `xcrun`,因此包装器审批保持绑定到携带的命令而不是外部载体。感谢 @tdjackey 和 @vincentkoc。 - **执行审批**:在持久化始终允许信任之前展开 `caffeinate` 和 `sandbox-exec`,因此稍后 shell 负载更改仍需要新鲜审批。感谢 @tdjackey 和 @vincentkoc。 - **执行/审批**:当 `execApprovals.approvers` 未设置时从现有所有者配置推断 Discord 和 Telegram 执行审批者,将默认审批窗口延长到 30 分钟,并澄清审批不可用指南,因此审批不会显得静默消失。 - **Pi/TUI**:在 `message_end` 刷新消息边界回复,因此当最终回复已就绪时回合停止看起来卡住直到下一次推动。感谢 @vincentkoc。 - **执行/审批**:将 `awk` 和 `sed` 系列二进制文件保留在低风险 `safeBins` 快速路径之外,并停止医生配置文件脚手架将它们视为普通自定义过滤器。感谢 @vincentkoc。 - **执行/环境**:在主机执行中阻止代理、TLS 和 Docker 端点环境覆盖,因此请求范围的命令无法静默重定向出站流量或信任攻击者提供的证书设置。感谢 @AntAISecurityLab。 - **执行/环境**:在请求范围的主机执行环境清理中阻止 Python 包索引覆盖变量,因此包获取无法通过调用者提供的索引重定向。感谢 @nexrin 和 @vincentkoc。 - **执行/节点**:停止网关端工作目录回退重写显式 `host=node` cwd 值到网关文件系统,因此远程节点执行审批和运行保持使用预期的节点本地目录。(#50961) 感谢 @openperf。 - **执行/运行时**:默认隐式执行到 `host=auto`,仅当存在沙盒运行时将该目标解析为沙盒,保持显式 `host=sandbox` 在无沙盒时失败闭合,并在运行时状态/文档中显示 `/exec` 有效主机状态。 - **执行**:当隐式沙盒主机没有沙盒运行时失败闭合,并阻止已拒绝的异步审批后续操作在同一会话中重复使用先前命令输出。(#56800) 感谢 @scoootscooob。 - **飞书/群组**:保持引用回复和主题引导上下文与组发送者允许列表对齐,因此仅允许列表的线程消息为代理上下文播种。感谢 @AntAISecurityLab 和 @vincentkoc。 - **网关/附件**:卸载大型入站图像而不泄漏 `media://` 标记到仅文本运行,为模型输入/转录保留混合附件顺序,并在无法解析模型图像能力时失败闭合。(#55513) 感谢 @Syysean。 - **网关/认证**:在 WebSocket 握手尝试期间保持共享认证速率限制活动,即使调用者也发送设备令牌候选,因此虚假设备令牌字段不再抑制共享秘密暴力跟踪。感谢 @kexinoh 和 @vincentkoc。 - **网关/认证**:在受信代理 HTTP 操作请求上拒绝不匹配的浏览器 `Origin` 头,同时保持无来源的无头代理客户端工作。感谢 @AntAISecurityLab 和 @vincentkoc。 - **网关/设备令牌**:令牌轮换后断开活跃设备会话,因此新轮换的凭据立即撤销现有实时连接,而不是等待这些套接字自然关闭。感谢 @zsxsoft 和 @vincentkoc。 - **网关/健康**:从通道描述符携带网络钩子与轮询账户模式到运行时快照,因此像 LINE 和 BlueBubbles 这样的被动通道跳过错误的陈旧套接字健康失败。(#47488) 感谢 @karesansui-u。 - **网关/配对**:恢复 QR 引导引导交接,因此新鲜 `/pair qr` iPhone 设置可以自动批准初始节点配对,接收可重用节点设备令牌,并停止重试已用引导认证。(#58382) 感谢 @ngutman。 - **网关/OpenAI 兼容性**:在 `/v1/responses` 上接受扁平响应 API 函数工具定义,并在将托管工具规范化为嵌入式运行器时保留 `strict`,因此像 Codex 这样的规范符合客户端不再验证失败或静默丢失严格工具强制。(#49089) 感谢 @malaiwah 和 @vincentkoc。 - **网关/OpenAI HTTP**:恢复省略 `x-openclaw-scopes` 的承载认证请求的默认操作范围,因此无头 `/v1/chat/completions` 和会话历史调用者在最近的方法范围强化后再次工作。(#57596) 感谢 @openperf。 - **网关/插件**:将插件认证 HTTP 路由运行时客户端范围限定为只读访问,并将网关认证的插件路由保持在写入范围,因此插件拥有的网络钩子处理程序默认不继承具有写入能力的运行时访问。感谢 @davidluzsilva 和 @vincentkoc。 - **网关/SecretRef**:通过合并服务/运行时环境源解决重启令牌漂移检查,并对不支持的可变 SecretRef 加 OAuth 配置文件组合硬失败,因此重启警告和政策执行与运行时行为匹配。(#58141) 感谢 @joshavant。 - **网关/工具 HTTP**:收紧 HTTP 工具调用授权,因此仅所有者工具保持在 HTTP 调用路径之外。(#57773) 感谢 @jacobtomlinson。 - **加强仅网络聊天会话中的异步审批后续传递** (#57359) 感谢 @joshavant。 - **心跳/认证**:防止执行事件心跳运行从会话传递目标继承仅所有者工具访问,因此节点执行输出保持在非所有者工具表面上,即使目标会话属于所有者。感谢 @AntAISecurityLab 和 @vincentkoc。 - **钩子/配置**:在 `hooks.mappings[].channel` 中接受运行时通道插件 ID(例如 `feishu`),而不是在配置验证期间拒绝非核心通道。(#56226) 感谢 @AiKrai001。 - **钩子/会话路由**:在隔离调度之前将钩子触发的 `agent:` 会话键重新绑定到实际目标代理,因此专用钩子代理保持自己的会话范围工具和插件身份。感谢 @kexinoh 和 @vincentkoc。 - **主机执行/环境**:阻止在批准的主机运行期间可以重定向 Docker 端点、信任根、编译器包含路径、包解析或 Python 环境根的附加请求范围环境覆盖。感谢 @tdjackey 和 @vincentkoc。 - **图像生成/构建**:将稳定的运行时别名文件写入 `dist/` 并通过这些别名路由提供程序认证运行时查找,因此图像生成提供程序在重建后继续解析认证/运行时模块而不是在丢失的哈希块文件上崩溃。 - **iOS/Live Activities**:将 `LiveActivityManager.swift` 中的 `ActivityKit` 导入标记为 `@preconcurrency`,因此 Xcode 26.4 / Swift 6 构建在严格并发检查上停止失败。(#57180) 感谢 @ngutman。 - **LINE/ACP**:添加当前会话绑定和入站绑定路由对等,因此 `/acp spawn ... --thread here`、配置的 ACP 绑定和活跃会话绑定的 ACP 会话在 LINE 上像其他会话通道一样工作。 - **LINE/Markdown**:在剥离 markdown 时保留拉丁、西里尔和 CJK 单词内的下划线,同时仍在 LINE 和 TTS 使用的共享文本运行时路径上移除独立的 `_italic_` 标记。(#47465) 感谢 @jackjin1997。 - **代理/故障转移**:通过 `auth.cooldowns` 使过载的相同提供程序重试计数和重试延迟可配置,默认一次重试无延迟,并记录模型故障转移行为。