技能(Skills)扩展与 MCP 集成
Skills 与 Plugins:代理的手和脚的差异
在前面的文章设置好大脑和身份后,此时的 Agent 还只是个除了聊天什么干不了的空壳。我们需要为其装备与世界交互的“工具”。在 OpenClaw 体系里有两类基础模块概念:
- Skills(技能):相当于给手机安装 APP 应用。它是为模型暴露的功能模块(比如收发特定邮件、控制某个网页填写表格、读取系统的 CPU 占用等),重点是让 AI 执行某项业务动作。
- Plugins(插件):相当于手机硬件扩容。它属于对 OpenClaw 底层网关本身能力的增强(比如增加支持 Telegram 对话的收容能力、新增性能监控面板等)。
我们的核心放在:怎么装备并自定义业务层的 Skills。
安装现有海量技能:ClawHub 与 MCP
在自己动手写代码之前,先去社区寻找现成的轮子。
1. 从官方生态 ClawHub 安装
类似 Apple 的 App Store,OpenClaw 提供了统一的包管理器来方便共享技能配置。 如果你需要特定的技能,你可以运用命令行来搜索并按需获取:
# 安装 ClawHub 客户端
npm i -g clawhub
# 搜索社区技能
clawhub search "Weather"
# 获取并将其存放于工作区中
防坑机制:由于技能加载采用优先级概念,工作区 Skills (您项目夹下) > 全局系统级 Skills > 底层内置原生 Skills。
2. 当作“插排”去接入:完美支持 MCP 原则
如果你不想用 ClawHub 找东西,OpenClaw 由于高度拥抱了 Model Context Protocol (MCP) 标准,它能够直接“秒接入”整个广域 AI 社区的大量基础工具(比如 Fast.io 扩展、Composio、甚至是 Github 官方的 MCP 服务器)。
接入方式:
如果要在系统中注册第三方的 MCP 服务器,我们利用它的专用 Plugin mcp 来登记终端地址。只需将特定的执行命令写到网关配置文件里的 plugins.entries.mcp.config 中,此后,所有的底层节点将如魔法般自动识别:
“帮我创建一个 Fast.io 项目”——请求将自动路由给该 MCP 服务商。
自定义技能开发教程:把复杂的事情简单化
如果全网都没有满足你独家业务的方法,你需要开发专有的私域 Skill。开发过程异常简单。
我们以编写一个【让 AI 根据系统剩余空间情况回答】的假想技能为例。
1. 结构骨架
建立你的工作区 skills/ 目录中,并设定一个子目录名字作为该领域的唯一 ID。它包含了:
- SKILL.md:这是最重要的宪法说明,用来对大模型说话的指导方针。
- manifest.json:向系统暴露参数和安全信息。
- 脚本文件:真正要跑的 Node.js/Python 逻辑(可选)。
2. 深入理解「驱动引擎」SKILL.md
如果传统开发是写接口 Swagger,开发 Skill 就是在用自然语言向模型提供一份详尽“岗位职责描述”。在 SKILL.md 中,你需要回答大模型下面三个关键疑问:
- When (触发时机):在用户下达什么类型命令时选用本组技能。
- What (所需数据/输入输出):为了成功执行该工作,您强制作要求模型组织哪些特定参数发送出去。
- How (执行步骤):如果其中有依赖关联的先序条件。
简单的示例片段:
# Server Monitor 技能职责
**触发条件**:当用户查询 "系统状态" 或 "排查卡顿" 时候调用。
**必须的工具入参格式**:无需参数,直接执行探针模块获取数据。
**重要限制**:无论数据反馈如何,务必以友好的百分比图谱在文本界面上渲染出来。
3. 数据契约与标准化响应
为了保证系统的稳定性以及在跨多 Agent 任务派发中不出大错,不论底层挂靠什么语言写的动作脚本(如 index.js),务必抛出固定的 JSON 结构体:
{
"success": true, // 让调度器知道下一步走阳关道还是独木桥
"message": "执行详情摘要",
"data": { ... } // 核心的数据投递反馈给模型
}
调试建议
由于这赋予了模型极高的自治权去运行你编写的代码,一定要遵循 SRP(单一责任原则),一个技能不该做两种截然不同的事情包包。
先在终端里执行(比如 node ./skills/monitor/test.js)确保脚本没有致命异常,再跑进 openclaw gateway restart 来把该能力赋予给智能体体系。