02 | AI Agent 架构设计:工具系统设计 ——OpenClaw、Claude Code、Hermes Agent 对比声明:📝 作者:甜城瑞庄的核桃(ZMJ)原创学习笔记,欢迎分享,但请保留作者信息及原文链接哦~前言基本信息内容系列AI Agent 架构设计(二):工具系统设计核心目标工具系统是模型意图到真实操作的桥梁——三个框架如何在扩展能力与控制行为之间取舍适合读者想理解 Agent 工具调用机制和权限设计的开发者预计阅读20 分钟语言模型本身只能输出文字。你让它"帮我删掉这个目录里的临时文件",它能理解这个意图,能输出一段描述该怎么做的文字。但如果没有工具系统,它什么也做不了——它没有手,碰不到文件系统。工具系统是连接"模型意图"和"真实操作"的桥梁。每次模型决定要采取一个行动,工具系统拦截这个决定,检查它是否被允许,然后执行,把结果返回给模型。这个桥梁的设计,要同时回答两个方向的问题:向外扩展能力:Agent 能调用哪些工具,能做什么事,能力边界在哪里。向内控制行为:谁来决定工具调用是否被允许,危险操作如何拦截,人如何保持对 Agent 行为的控制。这两个方向的设计取舍,在 OpenClaw、Claude Code、Hermes Agent 三个框架里给出了三种根本不同的答案。一、工具调用的基本机制在拆解三个框架之前,先把共同的底层机制说清楚。所有框架的工具调用都遵循同一个流程:用户意图 │ ▼ ┌─────────────────┐ │ 模型决策层 │ ← 理解意图,生成工具调用指令 └────────┬────────┘ │ 工具调用请求 ▼ ┌─────────────────┐ │ 权限检查层 │ ← 检查是否被允许执行 └────────┬────────┘ │ 通过检查 ▼ ┌─────────────────┐ │ 工具执行层 │ ← 实际执行操作 └────────┬────────┘ │ 执行结果 ▼ ┌─────────────────┐ │ 结果回传层 │ ← 结果返回给模型 └─────────────────┘ │ ▼ 真实操作(文件、网络、系统…)这个流程里有一个关键的设计决策点:权限检查发生在哪里,由谁来做。是在模型层(靠提示词约束)?是在框架层(靠程序逻辑)?还是在系统层(靠沙箱隔离)?三个框架的根本差异,就在这里。二、三大框架工具系统架构全景┌────────────────────────────────────────────────────────────────────────┐ │ AI Agent 工具系统:三大框架的架构设计与安全哲学 │ ├──────────────────┬──────────────────────┬─────────────────────────────┤ │ OpenClaw │ Claude Code │ Hermes Agent │ │ │ │ │ │ Unix 哲学 │ 工具即权限单元 │ 工具执行 = 情景记忆输入 │ │ 最大能力 │ 三档自动分级 │ 40+ 内置工具 │ │ 六层权限模型 │ AI 辅助分类器 │ 六种执行后端 │ │ 安全靠配置 │ 安全内聚于工具本身 │ 基础设施级安全隔离 │ ├──────────────────┴──────────────────────┴─────────────────────────────┤ │ 共同底层:工具调用流程 │ │ 用户意图 → 模型决策 → 权限检查 → 工具执行 → 结果回传 │ │ │ │ 关键差异点:权限检查在哪一层?由谁负责? │ └────────────────────────────────────────────────────────────────────────┘三、OpenClaw:开放优先,安全靠配置3.1 核心设计哲学:最大能力,按需收紧OpenClaw 的工具系统设计哲学是:默认给 Agent 最大的能力,让用户自己决定怎么收紧。这和 Unix 的设计哲学很像——系统给你 root 权限,你自己决定要不要用。exec是整个工具系统里最关键的工具。它能执行任意 Shell 命令,意味着 Agent 可以做操作系统层面能做的一切——这既是 OpenClaw 强大的根源,也是它安全风险最集中的地方。rm -rf也是 Shell 命令。┌───────────────────────────────────────────────────┐ │ OpenClaw 设计哲学与核心能力 │ ├─────────────────────┬─────────────────────────────┤ │ 最大能力,按需收紧 │ exec 能力与风险核心 │ │ │ │ │ 类比 Linux root 权限 │ ┌──────────────────────┐ │ │ 默认给 Agent 最大 │ │ exec │ │ │ 操作空间 │ │ 执行任意 Shell 命令 │ │ │ │ │ │ │ │ 工具执行全景: │ │ ⚠️ 高风险 │ │ │ exec 是核心行行 │ └──────────────────────┘ │ │ 文件编辑 │ │ │ 浏览控制 │ 最大能力 = 最大风险 │ │ 设置更改等 │ rm -rf 也是 Shell 命令 │ └─────────────────────┴─────────────────────────────┘3.2 六层级联权限模型OpenClaw 的权限不是简单的"允许/禁止",而是一个六层的级联策略系统:┌────────────────────────────────────────────────────────┐ │ OpenClaw 六层级联权限模型 │ │ (超级过滤级别防护) │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ 第一层:企业策略 (Global Policy) │ │ │ │ ── 全局最高优先级,所有 Agent 共享 │ │ │ ├──────────────────────────────────────────────────┤ │ │ │ 第二层:供应商策略 (Provider Policy) │ │ │ │ ── 服务提供商级别约束 │ │ │ ├──────────────────────────────────────────────────┤ │ │ │ 第三层:Agent 策略 (Agent Policy) │ │ │ │ ── 每个 Agent 独立的行为约束方法 │ │ │ ├──────────────────────────────────────────────────┤ │ │ │ 第四层:组策略 (Group Policy) │ │ │ │ ── 跨 Agent 组的共享策略 │ │ │ ├──────────────────────────────────────────────────┤ │ │ │ 第五层:沙盒策略 (Sandbox Policy) │ │ │ │ ── 细粒度执行限制 │ │ │ ├──────────────────────────────────────────────────┤ │ │ │ 第六层:子 Agent 继承 (Inheritance) │ │ │ │ ── 继承父级权限,不能突破上层约束 │ │ │ └──────────────────────────────────────────────────┘ │ │ ↓ │ │ 工具调用执行(通过所有层检查) │ └────────────────────────────────────────────────────────┘工具调用必须通过每一层的检查才能执行。上层策略可以限制下层,下层不能突破上层的约束。这个设计的架构价值在于:不同的 Agent 可以有不同的权限配置,而不是所有 Agent 共享同一套规则。基于角色的权限(Role-based Authorization):Agent 类型权限范围邮件 Agent只有邮件相关工具权限开发 Agent更完整的文件系统访问权限