OpenClaw 怎么了?(三)安全做到位了吗?

一个会自己写代码、自己改策略的 AI,安全怎么做?
OpenClaw 2026.6.1 给出的答案,不是“限制它”,而是“给它一个拆不掉的保险箱”。这套方案叫三层安全外骨骼——L1 代码沙盒做物理隔离,L2 逻辑沙盒做行为约束,L3 回滚守护做自动纠错。三层各自独立,又层层嵌套。同时,Windows 版把安全做到了金融合规级,事件日志和 VSS 卷影复制直接满足监管审计的三条红线。
这不是在 AI 外面加一圈护栏,而是从架构上让 AI 只能在安全边界内运行。
一、为什么 AI Agent 的安全问题比传统软件复杂得多
传统软件的安全模型是“权限控制”——这个用户能访问什么、这个进程能调用什么,规则写好,越界就拦截。这套模型的前提是:软件的行为是可预测的。代码是人写的,逻辑是人审的,边界是人定的。
AI Agent 完全打破了这个前提。
第一,AI Agent 的行为不可预测。同一个 Prompt 执行两次,可能产生两条完全不同的推理路径。一条路径生成了正常的数据查询,另一条路径可能因为推理偏差生成了危险操作。这不是模型的恶意,是概率性推理的固有特征。
第二,AI Agent 需要执行代码。它不是回答一个问题就结束,而是调用 API、读写数据库、生成脚本然后在真实系统里跑起来。没有这些权限,它什么活也干不了。给了权限,风险敞口就打开了。
第三,AI Agent 会自己修改自己。传统软件只有人类开发者能改代码、能更新策略。OpenClaw 的 Agent 能自己调整行为策略、自己生成新工具。这让“变更管理”这个传统安全领域的基础概念都受到了挑战——变更不再只来自人类,还来自 AI 自身。
这三个特征叠加在一起,把 AI Agent 的安全问题推到了一个全新层面:不是“怎么防坏人”,而是“怎么防一个没有恶意但行为不可预测、有执行权限、还能自我修改的系统不出事”。
二、传统方案为什么不够
企业面对 AI Agent 的安全问题,通常有三种应对方式,每种都有致命缺陷。
方案一:最小权限。 只给 Agent 最基础的权限,能少给就少给。问题是,Agent 的能力和权限成正比。权限越小,它能完成的任务越少。最后变成一个高级聊天机器人——能回答问题,不能干任何实事。花几百万买的 AI,最后只能当 FAQ 用。
方案二:人工审核。 Agent 生成的每一个操作都推给人类审核。问题是,Agent 一天可能产生数百次操作,审核队列瞬间爆炸。人类审不过来就开始批量通过,审核形同虚设。
方案三:容器隔离。 把 Agent 关在 Docker 容器里跑,出问题就重启。问题是,Docker 隔离的是资源不是行为。容器能防止 Agent 把宿主机搞崩,但不能防止 Agent 在容器内执行危险操作,也不能防止 Agent 通过合法 API 调用泄露数据。
三种方案有一个共同缺陷:它们都在“堵”,不在“疏”。它们试图限制 Agent 的能力来换取安全,结果是安全了,也废了。
三、三层外骨骼:从架构上重新定义安全
OpenClaw 的思路完全相反:不给 Agent 的能力设上限,而是给 Agent 的运行环境设边界。安全的最高境界不是“不让它做事”,而是“让它只能在保险箱里做事”。
三层外骨骼就是这个保险箱。
3.1 L1 代码沙盒:物理隔离层
第一层的目标是:Agent 生成的任何代码,哪怕包含恶意指令,也绝对触碰不到宿主系统。
Linux 和 macOS 上用 gVisor + seccomp。gVisor 在用户态模拟 Linux 内核,系统调用必须经过 Sentry 层过滤——不是直接发给宿主内核,而是先经过一层用 Go 语言重写的内核逻辑。macOS 没有原生 seccomp,gVisor 通过自带的平台抽象层实现同等效果。seccomp 策略默认拒绝所有系统调用,白名单只放行 9 个基本操作:
text
read — 读文件描述符
write — 写文件描述符
openat — 打开文件(相对路径)
close — 关闭文件描述符
mmap — 内存映射
brk — 调整堆空间
fstat — 获取文件状态
exit — 退出进程
连 fork(创建子进程)和 exec(执行新程序)都不在名单里。网络完全禁止(network: NONE),内存硬上限 512MB,超时 30 秒强制 kill。
这意味着什么?Agent 生成的代码里哪怕藏了 os.system(“rm -rf /”),seccomp 直接返回 ERRNO,Sentry 层不转发。Agent 试图 curl 一个外部服务器——网络栈根本不存在。Agent 试图 fork 一个子进程——白名单里没有 fork。
Windows 上用的是 Hyper-V 轻量虚拟机做真内核隔离。Linux 上的 gVisor 是用户态模拟内核,Windows 上的 Hyper-V 是硬件虚拟化层隔离——VM 内代码连 Windows 内核都没见过。内存页表级隔离意味着无法通过 Rowhammer 等侧信道攻击跨 VM。还能与 Windows Defender Application Guard 集成,利用硬件虚拟化扩展做额外加固。沙盒进程以“Low”强制完整性级别运行,低于所有用户进程(用户进程是 Medium),WFP 防火墙连回环网络都阻断,注册表写入被虚拟化到独立存储空间。
3.2 L2 逻辑沙盒:行为约束层
第一层解决了“Agent 的代码出不了圈”。但 Agent 在圈内也不是想干什么就能干什么——L2 逻辑沙盒精确限定了它能改什么参数。
Agent 的可修改范围被限定在预设“插槽”里,只有四个:
工具优先级:只能在 search、calc、code_exec、web_fetch、file_io 五个工具里排顺序,不允许添加新工具,不允许修改工具本身的实现逻辑。
风险容忍度:0.0 到 1.0 之间的浮点数。控制 Agent 在不确定性场景下的行为倾向——接近 0 时遇到不确定就上报人类,接近 1 时倾向于自主尝试。
最大推理步数:1 到 20 的整数。超过上限自动中止,防止 Agent 在一个问题上无限循环。
兜底策略:retry(重试)、delegate(委派给其他 Agent)、ask_human(上报人类)、abort(中止)四选一。决定 Agent 在多次失败后的最终行为。
每个变异提交前,系统遍历行为树的所有节点,逐项检查:修改是否都在白名单内?参数值是否越界?参数类型是否匹配?
任何不合规的修改——比如想把 max_reasoning_steps 改成 100,想在 tool_rank 里加一个 “execute_shell”,想把风险容忍度设成 -1——写入请求直接被丢弃,同时记录一条安全事件日志。
这个设计的意义在于:Agent 可以进化,但进化的方向被锁定在安全子空间里。它可以在“遇到失败时优先换工具还是优先加步数”之间探索最优策略,但不能探索“绕过所有工具直接执行 shell 命令”。
3.3 L3 回滚守护:自动纠错层
前两层管住了“出不去”和“改不歪”。但万一 Agent 的变异方向虽然在插槽内、却导致了更差的结果怎么办?L3 回滚守护负责把 Agent 拉回来。
每次变异前,系统自动对当前 DNA 做深拷贝快照,包括完整的行为树、所有节点参数、版本号和父版本号。连续 3 次变异失败(任务成功率在变异后不升反降),自动触发回滚——从快照中恢复上一个稳定版本的完整行为树,强制覆写当前 DNA。
回滚后进入冷却期,指数退避:
· 第一次回滚后冷却 300 秒(5 分钟)
· 再次失败冷却 600 秒(10 分钟)
· 第三次 1200 秒(20 分钟)
· 以此类推,最长冷却 24 小时
这个机制的意义不在“纠正错误”,而在“限制错误的成本”。Agent 可以在困难任务上尝试变异,但尝试的次数和频率被指数级压制——不会在一个“死胡同”里无限消耗算力。每次变异都付出更大的时间代价,Agent 自然会倾向于寻找新的解决方向,而不是死磕同一个思路。
四、三层的协同逻辑
这三层不是简单的叠加,而是各管一段、互相配合:
L1 管“出不去”——Agent 的代码跑在真内核隔离的沙盒里,恶意或非恶意的危险操作都触碰不到宿主。这一层不关心 Agent 改了什么策略,只关心代码执行的环境边界。
L2 管“改不歪”——Agent 的行为策略变异被限定在插槽白名单里,参数的取值范围和类型都被精确约束。这一层不关心代码怎么跑,只关心 Agent 的进化方向不越界。
L3 管“坏不了”——Agent 变异后表现变差,自动回滚到上一个稳定版本并进入冷却期。这一层不关心变异是否在插槽内,只关心变异的结果是否真的更好。
举一个三层协同工作的真实例子。
某制造企业的 Agent 在整理日志文件时,推理偏差导致它尝试从根目录搜索临时文件——这是 L2 管辖的范畴。但推理偏差不是每次都恰好跨过 L2 的边界。如果某次偏差导致的行为在 L2 白名单内(比如反复调用同一个工具但效率极低),L2 不会拦截,但 L3 会在连续失败后触发回滚。如果 Agent 生成的新工具包含危险代码(比如调用了不在白名单的系统调用),L1 会在代码执行层面直接拦截。
三层共同构成了一张安全网。没有任何一层是完美的,但三层叠加,漏网的概率被压到极低。
五、合规闭环:金融级审计就绪
安全不只是“不出事”,还要“能证明为什么没出事、出了事能追溯到人”。这对金融、医疗、政务行业尤其关键。
某券商的合规总监列出过三条红线,恰好是传统 AI Agent 方案的三个盲区:
红线一:执行环境必须可审计。 每次 Agent 执行代码——谁触发的、什么时候、执行了什么、结果是什么——全链路日志,能追溯到具体责任人。Docker 日志只记录容器启停,Agent 内部操作链是黑盒。
红线二:权限必须最小化。 Agent 只能访问完成任务必需的最小数据集和接口。传统方案要么给 root(一个推理偏差就可能导致系统级操作),要么层层加代理(开发成本指数级增长)。
红线三:变更必须可追溯。 Agent 的行为策略发生变化——什么时候改的、谁改的、改了什么、为什么改——全量留痕。传统 Agent 的 Prompt 改了没有版本管理、没有审批流程。
OpenClaw 2026.6.1 的 Windows 版,三条红线全部满足。
Windows 事件日志原生集成。沙盒的每一次创建(事件 ID 5001,包含调用者 PID 和镜像哈希 SHA256)、每一次系统调用拒绝(事件 ID 5002,包含被拒绝的调用名称和精确时间戳)、每一次销毁(事件 ID 5003,包含存活时间和执行代码哈希),全部写入安全日志。可直接对接 Splunk、Azure Sentinel 等 SIEM 系统。
DNA 变异谱系对接 VSS 卷影复制。每次 DNA 写入自动触发快照,合规审计时可以精确还原——“2026 年 6 月 8 日 14 时 32 分 15 秒,Agent X 的决策逻辑是什么?工具优先级怎么排的?风险容忍度是多少?兜底策略选了什么?”所有问题都有精确到秒的答案。
L1 和 L2 共同满足最小权限——L1 在系统调用层面把权限砍到 9 个,L2 在行为层面把可修改参数砍到 4 个插槽。Agent 实际拥有的权限是两个集合的交集,比单独任何一层都小。
六、安全不是枷锁,是进化的跑道
这套安全方案有一个容易忽视的设计哲学:它不阻止 Agent 进化,而是给进化划定跑道。
L3 回滚守护是最好的例子。它不禁止 Agent 在“死胡同”任务上尝试变异——因为没有人能提前知道哪个方向是死胡同。它只是限制了探索的代价:你可以试,但每次失败后要等更久才能再试。这个机制鼓励 Agent 在变异失败后换方向,而不是在同一个思路上无限循环。
L2 逻辑沙盒同样如此。它不禁止 Agent 调整工具优先级——因为不同场景下最优的工具选择确实不同。它只是限定了可选工具的集合,让 Agent 在安全工具范围内自由探索最优组合。
L1 代码沙盒更彻底。它不禁止 Agent 生成任何代码——因为创新的工具可能需要一些看似奇怪的系统调用组合。它只是把所有代码的执行都关在真内核隔离的沙盒里。Agent 可以自由创造,但创造物的运行永远不会触碰宿主。
一句话概括这套安全哲学:给 Agent 最大的自由度,但把自由度的边界做成铁壁。
Agent 可以在边界内无限探索、自由进化,但边界本身不可逾越。这不是限制 Agent 的智能,而是给它一个可以放心探索的安全空间。
七、还有什么没做到
诚实地讲,三层外骨骼也有限制。
L1 的系统调用白名单虽然安全,但也限制了某些合法的工具需求。如果 Agent 真的需要一个白名单外的系统调用(比如某些高性能计算场景需要的特殊内存操作),L1 会拦截。目前没有“临时提权”或“审批后放开某个系统调用”的机制。
L2 的插槽白名单目前是全局统一的——所有 Agent 的四个插槽都一样。但不同行业的 Agent 可能需要不同的插槽边界。一个金融风控 Agent 的风险容忍度上限可能应该比一个文档整理 Agent 更低。插槽的“按角色定制”能力还在路线图中。
L3 的回滚是整体回滚——一旦触发,整个 DNA 退回上一个稳定版本。但有时候 Agent 可能只有某个参数变差了,其他参数反而是改进的。整体回滚会丢掉那些好的改进。“选择性回滚”——只回退变差的参数——是下一步要解决的问题。
这些限制不是因为做不到,而是 2026.6.1 版本刻意选择了保守策略。在 Agent 安全这个领域,宁可多一层限制,也不要在未知场景下冒风险。随着真实生产环境的数据积累,后续版本会逐步放宽某些过于保守的约束。
八、总结
OpenClaw 2026.6.1 的安全设计,核心思路是不限制能力,只限制边界。
三层外骨骼——L1 代码沙盒物理隔离、L2 逻辑沙盒行为约束、L3 回滚守护自动纠错——每层独立,层层嵌套。Agent 可以在边界内自由进化,但边界本身由真内核隔离、插槽白名单、指数退避冷却三重机制保证不可逾越。
Windows 版在此基础上做到金融合规级——事件日志满足可审计红线,最小权限满足安全红线,VSS 卷影复制满足可追溯红线。三条金融监管红线,全部关闭。
安全的最高境界,不是把 AI 关在笼子里,而是给 AI 一个它拆不掉的保险箱——让它在里面自由发挥,外面绝对安全。
下一篇,进入实操。看看怎么在 30 分钟内从零搭建一套能自我进化的 AI Agent——Linux、macOS、Windows 三平台,一步一步来。

夜雨聆风