本文主要介绍SKills技能的存储、优先级、多 Agent 场景下的隔离机制以及自定义技能创建方法等内容。
一、技能存储位置(6 个来源)
OpenClaw 从以下 6 个位置加载技能,按优先级从高到低排列:
实际路径示例
优先级 1: ~/.openclaw/workspace/skills/ ← 工作空间技能
优先级 2: ~/.openclaw/workspace/.agents/skills/ ← 项目 Agent 技能
优先级 3: ~/.agents/skills/ ← 个人 Agent 技能
优先级 4: ~/.openclaw/skills/ ← 共享托管技能
优先级 5: ~/.npm-global/lib/node_modules/openclaw/skills/ ← 内置技能
优先级 6: skills.load.extraDirs 配置的路径 ← 额外目录二、Skills调用优先级规则
核心规则
同名技能按优先级覆盖:如果多个位置存在同名技能,高优先级的会覆盖低优先级的。
workspace/skills/ > .agents/skills/ > ~/.agents/skills/ > ~/.openclaw/skills/ > 内置 > extraDirs
覆盖示例
三、多 Agent 场景下的隔离
在多 Agent 架构中,每个 Agent 有独立工作空间,技能可见性如下:
设计思路:越靠近工作空间的技能越「私有」,越远离的越「共享」
四、技能安装方式与对应位置
安装命令示例
# 从 ClawHub 安装技能到工作空间
openclaw skills install weather
# 从 SkillHub 安装技能到工作空间(国内推荐)
skillhub install weather
# 更新所有已安装的技能
openclaw skills update --all
# 使用 skillhub 更新已安装技能
skillhub upgrade
# 使用 clawhub CLI 同步
clawhub sync --all五、查看当前技能状态
六、插件附带的技能
插件可以在 openclaw.plugin.json 中声明 skills 目录:
插件启用后自动加载其附带的技能
插件技能的优先级最低(等同 extraDirs)
任何同名的工作空间/共享/内置技能都会覆盖插件技能
可通过 metadata.openclaw.requires.config 对插件技能进行门控
七、自定义技能创建
基本结构
每个技能是一个包含 SKILL.md 的目录:
skills/
└── my-skill/
└── SKILL.mdSKILL.md 最小格式
---
name: my-skill
description: 我的自定义技能描述
---
# 我的技能
这里写技能的指令内容...可选 frontmatter 参数
门控条件(metadata.openclaw)
---
name: image-lab
description: 图片生成和编辑
metadata: {"openclaw": {"requires": {"bins": ["uv"], "env": ["API_KEY"]}, "primaryEnv": "API_KEY"}}
---八、安全注意事项
第三方技能视为不可信代码,启用前应先阅读其内容
对不可信输入和高风险工具优先使用沙箱运行
技能目录发现仅接受 realpath 在配置根目录内的 SKILL.md
Gateway 内置的技能安装会运行危险代码扫描器,critical 级别默认阻止
skills.entries.*.env 和 apiKey 注入到宿主进程(非沙箱),需保护密钥不泄露
总结
核心原则:越靠近你的工作空间,优先级越高
工作空间技能 > 项目 Agent 技能 > 个人 Agent 技能 > 共享技能 > 内置技能 > 额外目录
同名技能高优先级覆盖低优先级