1. OpenClaw Skills 系统架构解析
OpenClaw作为一款前沿的AI Agent框架,其Skills系统采用了三层加载机制的设计理念。这种分层架构不仅确保了系统的灵活性,也为开发者提供了清晰的扩展路径。
1.1 技能加载的三层优先级
内置技能(Bundled Skills)
这些是随OpenClaw核心包一起分发的默认技能,通常位于npm全局安装目录下的/openclaw/skills/文件夹中。例如coding-agent、peekaboo等核心功能都是以内置技能的形式提供。这些技能经过官方严格测试,具有最高的稳定性保障。
管理技能(Managed/Local Skills)
用户级覆盖目录~/.openclaw/skills/允许开发者在不修改原始包的情况下进行技能定制。这个层级特别适合:
- 对内置技能进行临时性修改(如修复特定环境下的bug)
- 调整提示词模板以适应个人使用习惯
- 测试新功能而不影响全局安装
工作区技能(Workspace Skills)
项目专属目录<workspace>/skills/提供了最灵活的隔离方案。当你在不同项目中使用OpenClaw时,可以为每个项目配置完全独立的技能集合。这种设计带来了几个关键优势:
- 项目间完全隔离,避免技能冲突
- 便于版本控制(可将skills目录纳入git管理)
- 团队成员可以共享项目特定的技能配置
重要提示:优先级规则是
workspace > managed > bundled。这意味着你可以在工作区安全地覆盖任何内置技能,而不会影响其他环境的使用。
1.2 技能与插件的关系
OpenClaw的插件系统与Skills系统形成了完美的互补。通过在插件的openclaw.plugin.json中声明技能路径,插件可以打包自己的技能集合:
json复制{
"skills": ["./skills"] // 相对插件根目录的路径
}
这种设计带来了几个显著优势:
- 功能模块化:例如飞书插件可以同时提供文档、网盘、权限管理等多个相关技能
- 分发便利性:第三方开发者可以发布包含完整工具链的技能包
- 依赖管理:插件可以声明其技能所需的环境依赖
1.3 多Agent环境下的技能管理
在多Agent协作场景中,技能管理需要特别注意以下几点:
- Agent专属技能:放置在
<workspace>/skills/目录下,仅对该Agent可见 - 共享技能:存放在
~/.openclaw/skills/中,可供同一机器上的所有Agent使用 - 额外技能目录:通过配置文件中的
skills.load.extraDirs指定,适合存放团队共享的技能库
javascript复制// 配置示例
{
skills: {
load: {
extraDirs: ["~/team-shared/skills"] // 团队共享技能库
}
}
}
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SKILL.md规范深度解析
2.1 Frontmatter元数据规范
每个技能的核心定义文件SKILL.md采用YAML frontmatter+Markdown body的混合格式。这种设计既保证了机器可读性,又提供了充分的文档说明空间。
必需字段详解
- name:技能的全局唯一标识符,建议使用小写字母和连字符的组合(如
stock-quote) - description:简洁的功能描述(15-25字最佳),会直接展示在Agent的提示词中
增强型元数据示例
yaml复制---
name: china-stock
description: '查询A股实时行情数据'
metadata:
{
"openclaw": {
"emoji": "📈",
"requires": {
"bins": ["python3"],
"env": ["STOCK_API_KEY"]
},
"primaryEnv": "STOCK_API_KEY",
"install": [
{
"id": "pip-install",
"kind": "pip",
"packages": ["akshare"],
"label": "安装AKShare库"
}
]
}
}
---
2.2 条件加载机制(Gating)
metadata.openclaw.requires定义了技能加载的前置条件,系统会在Agent启动时自动检查:
| 条件类型 | 检查逻辑 | 典型应用场景 |
|--
