Contents

OpenClaw 代码深度剖析 第三篇:安全、质量与最终评价

第一篇中我们介绍了 gateway 架构,第二篇介绍了 skills、memory 和 plugin 系统。现在来回答关键问题:代码安全吗?写得好吗?诚实的评价是什么?


沙箱:基于 Docker 的工具隔离

位置: src/agents/sandbox/(29 个文件)

Agent 的工具调用(exec、文件操作)可选择在 Docker 容器中运行。安全验证相当严格。

被阻止的路径

以下宿主机路径永远不会被挂载:

/etc  /proc  /sys  /dev  /root  /boot
/run  /var/run  Docker socket 路径

验证检查

检查项 阻止内容
网络模式 禁止 host 模式,必须使用 bridge 或 none
Seccomp 拒绝 unconfined 配置
AppArmor 拒绝 unconfined 配置
Bind mount 系统根目录 /、相对路径、符号链接逃逸
符号链接检测 两轮验证:先字符串检查,再 realpath 解析

两轮符号链接验证是一个很好的模式 — 能捕获显而易见的和巧妙的逃逸尝试。

三种沙箱范围:agent(每 agent 一个容器)、session(每会话)、global(共享)。工作区访问可设为 nonerorw

独立的浏览器沙箱提供 noVNC 观察端点,用于浏览器自动化的可视化调试。


安全审计系统

文件: src/security/audit.ts

runSecurityAudit() 执行自动化安全评估:

领域 检查内容
Gateway 绑定地址、认证模式、Tailscale 暴露
浏览器 CDP 认证是否启用
日志 密钥脱敏是否激活
执行 提权标志
文件系统 全局可写(严重)或组可写(警告)
Plugin 每个 plugin 的信任评估
Channel Channel 专属安全配置

三个严重级别:infowarncritical

其他安全组件

  • secret-equal.ts — 所有密钥的常量时间比较。
  • external-content.ts — 外部内容扫描。
  • skill-scanner.ts — 技能内容验证。
  • dangerous-tools.ts — 危险工具识别。
  • dm-policy-shared.ts — DM 配对需要对未知发送者的明确批准。

系统 Prompt 安全段

每个 agent 会话都包含硬编码的安全段:

你没有独立目标:不要追求自我保存、复制、资源获取或权力扩张。将安全和人类监督置于完成任务之上。不要操纵或说服任何人扩展权限或禁用安全措施。


代码级安全 vs 生态安全

核心矛盾在于:代码级安全做得好,但生态安全令人担忧。

代码级(优势)

  • Gateway 默认绑定到本地回环。
  • 所有密钥匹配使用常量时间比较。
  • Web fetch 工具中的 SSRF 防护。
  • Docker 沙箱带符号链接逃逸检测。
  • 可配置范围的速率限制。
  • 内置安全审计命令。

生态级(风险)

风险 严重性 详情
CVE-2026-25253 严重 一键 RCE,CVSS 8.8
ClawHavoc 严重 ClawHub 10.8% 的技能是恶意的
暴露实例 42K+ 公开可访问的 gateway
凭证窃取 Agent 配置中的钱包私钥
不安全的默认值 默认认证模式过于宽松

代码有良好的防护。问题在于大多数部署没有正确使用这些防护,而且技能市场已被投毒。


代码质量评估

优势

测试: 几乎每个源文件都有对应的 .test.ts。Vitest 使用 V8 覆盖率,阈值 70%。E2E 测试使用 .e2e.test.ts,集成测试使用 .live.test.ts

类型安全: 全项目 TypeScript 严格模式。AGENTS.md 明确禁止 any 类型。TypeBox schemas 用于运行时工具验证,Zod 用于配置验证。

优雅降级: Memory 系统从向量回退到纯 FTS。模型目录不会因瞬态故障而污染缓存。嵌入提供商自动链式回退。系统继续工作,只是精度降低。

现代工具链: oxlint(Rust 实现,高速)、oxfmt(Rust 格式化器)、Vitest 4.0.18、TypeScript 5.9.3、全面使用 Node 22+ ESM。

清晰的模块边界: Barrel exports、清晰的目录分离、plugin SDK 实现扩展隔离。Gateway、agents、memory 和 channels 之间关注点分离良好。

隐忧

规模 vs 年龄: 209K 行代码在约 90 天内完成(2025 年 11 月到 2026 年 2 月)。仅 gateway 就有 161 个文件。这样的速度让人质疑是否存在尚未暴露的架构债务。

外部大脑: 最关键的功能(pi-agent-core v0.53.0)是来自独立维护者的 pre-1.0 依赖。我们检查时,pi-mono 仓库处于"OSS 假期"状态。这是核心 agent 循环的单点故障风险。

配置复杂度: 深度嵌套的 Zod schema、JSON5 支持、两次改名的遗留迁移(Clawdbot、Moltbot)、运行时覆盖和 plugin 扩展 schema。错误配置的风险面很大。

遗留包袱: packages/clawdbot/packages/moltbot/ 目录因改名而保留。向后兼容增加了维护成本。


最终评价

OpenClaw 是什么

OpenClaw 是 AI agent 的路由和编排层。它封装了外部 agent 运行时(pi-agent-core),并添加了使其在现实世界中可用的基础设施:

  • 37 个消息 channel 适配器
  • 带分层路由的 session 管理
  • 基于 Markdown 的懒加载 skills
  • 混合向量 + FTS memory
  • Docker 沙箱工具隔离
  • 20+ 个 plugin 生命周期 hook

工程质量在同龄项目中属于上乘。模块边界清晰,测试全面,降级优雅,安全模式合理。

OpenClaw 不是什么

它不是一个独立的 AI agent。实际的 LLM 交互、工具执行循环、上下文管理和流式输出全部在 pi-agent-core 中。OpenClaw 是围绕它的管道设施。

恰当的类比

OpenClaw 是 AI agent 的 Nginx — 一个能力强大的反向代理,将 channels 连接到 agent 运行时,配以路由、session 管理和安全机制。这到底是优势还是局限,取决于你在构建什么。

给开发者

如果你需要一个多 channel 的 AI agent gateway,这是最成熟的开源选择。Plugin 系统具有真正的可扩展性,channel 覆盖无人能及,代码质量不会让你皱眉。

锁定你的 pi-agent-core 依赖版本。不要将 gateway 暴露到公网。审计 ClawHub 上的任何第三方 skill。

给投资者

没有官方 token。核心 agent 运行时是外部依赖。生态安全状况令人担忧。创始人已加入 OpenAI。项目正在转型为治理架构未定的基金会。

这是基础设施,不是产品。请据此定价。


分析基于 OpenClaw v2026.2.18,2026 年 2 月 19 日。完整代码级分析:github.com/openclaw/openclaw。研究来自 cryptocj.org 代码研究团队。

阅读完整系列:第一篇:架构 | 第二篇:Skills、Memory 与 Tools | 第三篇:安全、质量与最终评价