
OpenClaw 24h 更新快报(2026-03-30):Matrix 群组历史上下文、Gateway HTTP 安全强化、Tasks Flow 调度体系
过去 24 小时,OpenClaw 仓库共合并了 38 个 PR,安全类更新占主导地位。本次的最大亮点是为 Matrix 渠道引入了群组聊天历史上下文机制,让 AI 代理能够理解触发前的对话背景;同时 Gateway 在 bearer token 的 HTTP 操作员作用域处理上进行了重要安全修正,并新增了 Tasks Flow 调度体系的基础架构骨架。
模型与 AI 能力:Matrix 群组历史上下文
本次最显著的功能性更新来自 PR #57022——为 Matrix 群组聊天引入对话历史上下文机制。在此之前,代理被 @提及触发时只能看到触发消息本身,缺乏前置对话背景,导致群组中的回复缺乏连贯性。
新实现为每个聊天室配置了独立的消息队列,按 agentId 和 roomId 设置水位标记(watermark)。非触发消息在队列中累积;当代理被触发时,发送自上一水位标记以来的消息作为 InboundHistory(受 historyLimit 限制)。水位标记仅推进到分发时刻的快照索引,因此异步处理期间到达的消息仍可在下次触发时可见。多个代理同一聊天室运行时各自维护独立水位,互不干扰。
这一改进对在 Matrix 群组中依赖 AI 代理辅助的用户有直接影响——代理现在可以理解对话主题和上下文,回复质量将显著提升。
安全与稳定性:多维度加固
本时段的安全类 PR 数量最多、覆盖面广,涵盖权限控制、网络隔离和环境变量管理等多个层面。
Shell 执行权限收紧。 PR #57871 修复了 exec approval 白名单对 shell 携带形式(如 sh -lc '$0 "$@"')的错误匹配——此前允许的 carrier 形式可能绕过执行语义限制。修复后不再匹配 positional carrier 目标,并对 xargs 等已知和未知 carrier 增加了拒绝覆盖。
SSH 子进程环境隔离。 PR #57848 将 SSH 子进程的环境变量构造路由到共享沙箱消毒器,避免主机环境中的敏感变量被意外继承到 SSH 执行的命令中,同时通过 openclaw/plugin-sdk/sandbox 对捆绑插件暴露了 sanitizeEnvVars() 接口。
编译器环境变量屏蔽。 PR #57832 在共享主机执行策略中阻止了 CC、CXX、CARGO_BUILD_RUSTC、CMAKE_BUILD_TYPE 等编译器覆盖环境变量,防止构建环节被篡改。
Marketplace 和 Ollama 网络请求防护。 PR #57850 为 Marketplace 归档下载和 Ollama 的 discovery、auth、pull 请求加上了共享 fetch guard,确保这些外部网络请求被限定在配置的 host 范围内,防止 SSRF 类攻击。
workspace dotenv 凭证隔离。 PR #57767 阻止凭证和认证环境变量进入 workspace 的 .env 文件,同时保留了对状态目录 .env 的相同 key 支持。
ACP 附件根验证。 PR #57690 将 ACP 图片附件读取路由到共享附件缓存,并在转发本地文件前强制执行现有的入站附件根检查,堵住了 ACP 附件的路径遍历可能。
Sandbox 敏感外部绑定源阻止。 PR #56024 在允许外部 Sandbox 绑定源的情况下,仍然阻止用户状态目录和 OpenClaw 状态根等敏感路径,在保障正常项目挂载的同时封堵了潜在的数据泄露风险。
Shell 解释器持久化防护。 PR #57772 将 awk 族解释器(awk、gawk、mawk、nawk)视为解释器类条目,阻止 allow-always 决策对解释器路径的持久化存储。
OpenShell 镜像同步边界加固。 PR #57693 强化了 OpenShell 镜像同步,防止沙箱下载在主机上创建符号链接,并通过无符号链接的快照目录来隔离上传,同时保留受信任的主机独占目录不被覆盖。
Gateway HTTP 安全强化
Gateway 层面也进行了多项收紧操作。
PR #57783 修正了一个关键问题:此前 bearer 认证的 HTTP 请求可以通过 x-openclaw-scopes 自我声明操作员作用域,形成权限提升。新实现忽略 bearer 请求的该 header,改由信任的 admin scope 推导 senderIsOwner,并阻止 bearer 认证的 /tools/invoke 调用。
其他 Gateway 安全改进包括:PR #57777 要求节点命令在连接时必须经验证的节点配对记录;PR #57773 为 HTTP /tools/invoke 增加了写权限校验和高风险执行工具的默认拒绝名单;PR #57778 将 OpenResponses HTTP 入口绑定为非所有者代理执行,确保外部 API 调用者无法访问所有者专属工具;PR #57771 扩展了默认 HTTP POST 拒绝集以覆盖 nodes 及 ACP 类执行和变更工具。
在认证作用域层面,PR #57692 为设备级 trusted-proxy 连接清理由 bearer token 声明的非绑定作用域;PR #57691 则限制节点发起的代理运行只能使用安全工具子集,并将通知来源的系统事件标记为不受信任,在入队前进行文本净化。
Tasks Flow 调度体系
任务调度层面出现了两项重要更新。PR #57865 为 Tasks 模块引入了最小化的 SQLite 支撑流注册表骨架,在任务记录上增加了可选的 parentFlowId 关联字段和持久化支持,同时保持任务投递、路由和编排行为不变。PR #57874 则实现了流的运行时路由——为实际返回到所有者会话的 ACP 和子代理运行自动创建单一任务父流,并将其状态变化和最终出现事件通过流所有者上下文进行路由。这两项 PR 共同为未来多步骤任务编排奠定了基础设施。
渠道集成:Discord Group DM 修复
Discord 渠道在本时段完成了两项关键修复。PR #57763 修复了组件交互(按钮、选择菜单、模态框)的路由逻辑——此前所有无 guild_id 的上下文都被当作直接消息处理,导致 Group DM 组件进入了 DM 认证路径并路由到错误的会话。PR #57735 则堵住了原生斜杠命令和自动补全绕过 dm.groupChannels 允许名单的漏洞。两项修复共同确保 Discord Group DM 的启用/允许名单策略在所有交互类型上保持一致。
控制台与开发者体验:Diffs 渲染管道
PR #57902 是本时段内容量最大的 PR,包含多项 Diffs 渲染管道改进:将无效的 lang 提示降级为纯文本而非失败渲染;在水合预加载前过滤持久化查看器语言负载;并补充了相关测试和文档。PR #57904 确保 diffsPluginConfigSchema.safeParse() 返回符合插件配置形状的数据而非扁平化工具默认值,保持了插件配置 schema 的契约完整性。PR #57909 通过显式渲染目标跳过文件调用不必要的 SSR 工作和查看调用不必要的图像 SSR 工作,减少了服务端无用计算。PR #57912 修复了 diffs 查看器的本地only安全门,确保可信环回代理在缺少 client-origin header 时仍不能绕过 allowRemoteViewer=false,复用了共享的 gateway 客户端 IP 解析器替代了原本较弱的安全判断逻辑。
其他更新
Matrix E2EE 也在本次得到关注——PR #57936 修复了 CLI 单独发送时端到端加密失效的问题,在发送操作前初始化 Matrix 出站客户端以获取所需的实时加密状态。PR #57921 将 Gateway 配置文件打开切换为无 shell 插值的路径,避免配置路径被 shell 特殊处理,同时保留了平台特定的打开行为。PR #57828 在拒绝信任发现端点后将远程 onboarding URL 重置为环回默认值,防止用户卡在不可用的远程端点上。PR #55958 将内部 hooks 的 enabled 默认为 true,确保全新安装时也能正常加载捆绑 hooks。PR #57770 停止从回复或工具媒体源路径派生允许的本地媒体根目录,改由配置的默认值和代理范围根管理,减少了路径派生风险。PR #57899 修复了 CI 中关于计划器、QMD 内存管理器和 Discord Group DM 组件覆盖的过时回归测试断言。
本次更新以安全为主线,同时推进了 Matrix 对话体验和 Tasks 流程编排基础设施两大长期方向。


评论