引言:Agent 时代的“USB 接口”
如果说大模型是 AI 的“大脑”,那么工具(Tools)就是它的“双手”。传统的 AI 赋能方式往往依赖于为特定模型编写私有接口,这导致了严重的碎片化。
OpenClaw 的行动层设计遵循一个核心原则:万物皆可工具化,且工具必须标准化。通过深度集成 Model Context Protocol (MCP),OpenClaw 为 Agent 打造了一套通用的技能中心。
1. MCP 协议:从动态发现到隔离执行
在 src/agents/pi-bundle-mcp-tools.ts 中,OpenClaw 实现了一个高度集成的 MCP 客户端。
核心流转过程
- 自动探索 (Discovery):启动外部 MCP Server,自动通过 JSON-RPC 获取其工具列表 (Name, Description, Input Schema)。
- 动态转换 (Translation):将 MCP 协议格式实时转换为 Agent 可理解的
tool_choice。 - 隔离运行:工具执行在独立进程或沙箱中,确保了核心引擎的安全。
2. 系统治理:安全分级与审计
让 Agent 拥有“手”是危险的。OpenClaw 在工具执行路径上设置了多重关卡。
静态策略与动态评估
- 静态策略检查(
audit-tool-policy.ts):根据配置文件中的allowlist检查当前模型是否有权调用该工具。 - 动态风险评估(
dangerous-tools.ts):标记高危动作(如rm -rf)。在高安全性模式下,系统会强制触发 Human-in-the-loop (HITL),要求架构师二次确认结果。
3. 程序员 Agent 的常用“工具箱”
默认情况下,一个针对代码开发优化的 Agent 具备以下标准化工具支持:
- 全文检索:
grep_search/find_by_name,用于快速定位代码逻辑。 - 文件 I/O:可以在隔离的 Workspace 范围内安全地进行文件读写。
- 执行环境:调用
execute_command运行npm test、git commit等工程指令。
4. 超越工具:Skills 与能力封装 (The Capability Packages)
如果说 MCP 工具是 Agent 的“手指”,那么 Skills 就是它的“专业技能说明书”。
什么是 Skills?
在 OpenClaw 中,一个 Skill 是一个自包含的模块化包。它不仅仅是一组 API 调用,而是一个包含以下要素的“知识包”:
SKILL.md:核心指令集。它告诉 Agent 在什么场景下使用该技能,以及具体的步骤指南。scripts/:确定性脚本。对于 LLM 难以稳定生成的复杂逻辑,Skill 预置了经过验证的脚本。references/:领域知识。如特定库的 API 文档、企业内部的编码规范等。assets/:静态资源。如代码模板、UI 素材等。
渐进式披露 (Progressive Disclosure)
为了节省昂贵的上下文窗口,OpenClaw 采用了三级加载机制:
- 元数据层:始终加载技能的
name和description,确保搜索触发。 - 指令层:仅在命中触发词时加载
SKILL.md的主体内容。 - 资源层:按需读取
scripts或references供 Agent 引用。
这种设计让 OpenClaw 能够挂载数百个技能,而不会因为上下文过长而导致推理性能下降。
多维应用场景:Skills 如何在不同环境下分发?
OpenClaw 并不是单一地加载所有技能,而是根据运行上下文(Context)通过一套严密的优先级协议进行分发:
- 本地开发环境 (Workspace Skills):位于当前项目
skills/目录下的技能拥有最高优先级。这允许开发者为特定项目定制专用的“数字助手”。 - 全局管理 (Managed Skills):通过
openclaw skills install统一安装到用户家目录。这些是通用的跨项目技能(如:翻译助手、PDF 处理)。 - 隔离同步 (Sandbox Syncing):当 Agent 需要在 Docker 或远程沙箱中运行时,OpenClaw 会通过
syncSkillsToWorkspace自动将必要的技能包映射到隔离环境中,确保 Agent 的“大脑”在不同环境下一致性运行。 - 提示词适配 (Prompt Adaptation):
- 完全体模式:如果 Token 充足,展示名称、描述和文件路径。
- 紧凑模式:如果 Token 告急,自动切换为“名称+路径”的列表形式,仅提示 Agent 有此类技能可用,触发时再读取详情。
这种灵活的加载机制,使得 OpenClaw 能够适应从“个人 TUI 工具”到“企业级 Agent 网关”的各种角色。
5. 并发与资源管理:多手并进
当一个 Agent 同时处理多个复杂任务时(例如:同时在三个仓库里重构代码并跑测试),OpenClaw 通过**工具并发控制(Tool Concurrency Control)**确保系统资源不被耗尽。
在 src/agents/pi-embedded-runner/run.ts 中,系统会根据资源负载动态调节工具执行的并行度,防止由于模型输出过猛(一秒钟同时要求并开 100 个进程)导致宿主机崩溃。
总结
通过 MCP 协议和插件化的安全治理,OpenClaw 为 Agent 提供了既强大又可控的行动能力。它不仅能动“口”,更能真正地动“手”解决问题。
在下一篇文章中,我们将讨论当这些复杂的思维和行动进入真实的生产环境时,OpenClaw 是如何通过工程化手段确保其稳定性和确定性的。
本文为 OpenClaw 技术系列文章第三篇。