
OpenClaw 的工具系统是一个精心设计的双层架构:能力层负责扩展 Agent 的行动范围,策略层负责约束 Agent 的行动边界。两者的平衡,是构建安全可靠的 AI Agent 的核心挑战。
能力层:从 4 到 24+ 的扩展之路
Pi 内核提供 4 个基础工具(Read、Write、Edit、Bash),OpenClaw 在此基础上扩展到 24+ 个,覆盖了 AI Agent 需要的所有能力维度:
工具全景表
| 基础工具 | |||
| 消息工具 | |||
| 浏览器工具 | |||
| Web 工具 | |||
| 媒体工具 | |||
| 基础设施 | |||
| 通道工具 | |||
| 代码工具 |
工具注册机制
所有工具都通过 Pi 统一的 AgentTool 接口注册。这个接口定义了:
interface AgentTool {
name: string; // 工具名称
description: string; // 工具描述(LLM 用来决定何时调用)
parameters: JSONSchema; // 参数 schema
execute: (params) =>Promise<ToolResult>; // 执行函数
}
Agent 循环不关心有多少工具——它只执行 LLM 选择的工具。这种设计使得工具的添加和移除对核心循环完全透明。
Pi 工具的生产级包装
OpenClaw 对 Pi 的 4 个基础工具进行了生产级加固,代码位于 src/agents/pi-tools.ts:
| Read | |
| Write | |
| Edit | |
| Bash | 完全替换为 exec 工具 |

策略层:8 层工具策略系统
这是 OpenClaw 架构中最精密的安全机制。在任何工具执行之前,它必须通过 8 层允许/拒绝过滤器:
tools.profile | |||
tools.byProvider.profile | |||
tools.allow | |||
tools.byProvider.allow | |||
agents.{id}.tools.allow | |||
策略合并规则
最严格的组合胜出。 每一层都只能缩小可用工具范围,不能扩大。这意味着:
如果 Profile 策略允许 exec,但 Group 策略禁止,则exec不可用如果全局白名单允许 browser,但 Sandbox 策略禁止,则browser不可用子 Agent 的工具集永远是父 Agent 工具集的子集
实际场景
同一个 OpenClaw 实例,不同场景下的工具可用性:
Cedar 策略语言集成
BYU Pico Labs 团队还探索了将 Cedar 策略语言集成到 OpenClaw 的工具策略系统中。Cedar 允许用更声明式的方式定义策略:
permit(
principal == Agent::"main",
action == Action::"exec",
resource
) when {
resource.command.startsWith("git") ||
resource.command.startsWith("npm")
};
这种方式比 YAML 配置更灵活,支持基于命令内容的细粒度控制。
工具开发指南
OpenClaw 的工具系统是可扩展的。开发自定义工具需要:
实现 AgentTool接口在工具注册表中注册 在策略配置中添加权限
工具的 description 字段至关重要——它是 LLM 决定何时调用该工具的唯一依据。一个好的工具描述应该:
明确说明工具的功能和适用场景 列出参数的含义和约束 给出使用示例
总结
OpenClaw 的工具系统展示了一个优雅的架构模式:能力无限扩展,安全层层收紧。4 个基础工具通过统一接口扩展到 24+,8 层策略系统确保每个工具在每个场景下都有恰当的权限。这种设计既保证了 Agent 的强大能力,又维护了多租户环境下的安全边界。
参考链接
The Agent Stack - OpenClaw Security Boundaries, Tool Risk, and Authorization Penligent - Hardening the OpenClaw AI Frontier Pico Labs - A Policy-Aware Agent Loop with Cedar and OpenClaw Moely - OpenClaw Source Code Review Valletta Software - OpenClaw Architecture Diagram 2026
夜雨聆风