技术深度解析
ClawMoat的架构是对传统代理安全方法的彻底背离。现有的大多数解决方案——如LangChain的内置回调或OpenAI的函数调用模式验证——都将安全视为事后过滤器:代理先做决策,然后由另一个系统检查该操作。ClawMoat则反其道而行之,将安全作为执行的前置条件。其核心是一个位于LLM输出解析器与实际API或系统调用之间的运行时隔离层。
该隔离层基于三个原则运作:
1. 动态权限范围:权限并非静态的文件或角色。它们是根据代理当前上下文、请求的操作以及所涉及的数据在运行时计算得出的。例如,一个被指派总结财务报告的代理,可以被授予对 `/reports/finance/` 目录的读取权限,但仅限于某个日期之后创建的文件,并且仅当摘要不包含特定的PII模式时。
2. 基于模板的操作验证:ClawMoat并非允许任意的API调用,而是强制每个调用必须匹配一个预定义的模板。模板指定了允许的端点、必需和可选参数、参数类型以及值约束。如果代理“幻觉”出一个参数,比如在只读端点上使用 `delete=true`,该层会在调用到达API之前将其拒绝。
3. 资源消耗防护:对于代码执行代理,ClawMoat对CPU时间、内存分配、网络出口和文件系统写入设置了硬性限制。这可以防止失控循环或资源耗尽攻击,即使代理的推理能力已被攻破。
从工程角度来看,ClawMoat实现为一个Python中间件库,可以包装任何LLM代理框架(LangChain、AutoGPT、BabyAGI等)。它拦截代理的操作流,根据策略文件(YAML或JSON)验证每个操作,并允许、修改或阻止该操作。策略文件支持分层命名空间、条件规则和基于时间的过期机制。
一个关键的技术创新是上下文权限继承。如果代理生成了一个子代理,该子代理会自动继承父代理权限的一个受限子集。这可以防止通过代理链进行权限提升——这是多代理系统中一个已知的漏洞。
相关GitHub仓库:ClawMoat项目托管在GitHub上,仓库名为 `clawmoat/clawmoat`。截至2026年6月,它已获得超过4200颗星和340个分支。该仓库包含一个全面的策略模式、针对LangChain和AutoGPT的集成示例,以及一个用于衡量隔离层开销的基准测试套件。
性能开销数据:
| 代理框架 | 无ClawMoat(每次操作平均延迟) | 有ClawMoat(每次操作平均延迟) | 开销百分比 |
|---|---|---|---|
| LangChain (GPT-4) | 1.2秒 | 1.35秒 | 12.5% |
| AutoGPT (GPT-4) | 2.8秒 | 3.1秒 | 10.7% |
| BabyAGI (GPT-3.5) | 0.9秒 | 1.05秒 | 16.7% |
| 自定义代理 (Claude 3.5) | 1.5秒 | 1.7秒 | 13.3% |
数据要点:开销是适度的(10-17%),对于大多数企业用例来说是可以接受的,尤其是考虑到安全性的提升。对于较小的模型,开销更高,因为隔离层的验证逻辑在总延迟中占据了更大的比例。
关键参与者与案例研究
ClawMoat由一群来自主要云提供商的前安全工程师创建,他们更愿意保持匿名,以避免企业影响项目方向。主要维护者仅以化名 "@safety_first" 为人所知,他拥有Kubernetes安全策略引擎(如OPA/Gatekeeper)的背景,并将相同的声明式策略概念应用于LLM代理。
该项目已经吸引了来自几个知名组织的贡献:
- Hugging Face:提供了用于基准测试的计算积分,并帮助将ClawMoat与其 `smolagents` 库集成。
- LangChain:宣布在LangChain v0.3.5中正式支持ClawMoat策略,允许用户将 `ClawMoatPolicy` 对象直接附加到代理链上。
- AutoGPT:核心团队正在尝试将ClawMoat作为其企业产品的默认安全层。
与替代方案的比较:
| 工具/方法 | 隔离机制 | 粒度 | 开源 | 开销 |
|---|---|---|---|---|
| ClawMoat | 运行时策略层 | 每次操作、每个参数 | 是 (MIT) | 10-17% |
| OpenAI的函数模式 | 仅输入验证 | 函数级别 | 否 | <5% |
| LangChain回调 | 事后过滤器 | 步骤级别 | 是 (BSD) | 5-10% |
| Anthropic的宪法AI | 训练时 | 行为层面 | 否 | 不适用(训练时) |
| 微软的PyRIT | 红队测试框架 | 测试时 | 是 (MIT) | 不适用 |
数据要点:ClawMoat是唯一一个在开源包中结合了运行时强制与每个参数粒度的解决方案。其开销略高于更简单的验证方法,但安全性收益显著。