OpenClaw/Clawdbot Skills 完全指南:让你的 AI 助手学会新技能
本文面向刚接触 OpenClaw 的新手,试图将用通俗易懂的语言介绍 Skills(技能)功能,帮助你理解、使用和创建自己的技能。本指南基于 OpenClaw 2026.2 版本及 AgentSkills 开放标准 编写。
⚠️ 名称变更说明:OpenClaw 原名 Clawdbot,后因 Anthropic 的商标请求更名为 Moltbot,最终于 2026 年初正式更名为 OpenClaw。本文中的命令和目录已更新为最新名称。
🤔 什么是 Skills?一个形象的比喻
想象一下,OpenClaw 是一个刚入职的超级聪明的助手。他天生就懂得思考、分析和表达,但他不知道公司的具体业务——比如怎么查邮件、怎么搜网页、怎么操作日历。
Skills(技能)就像是给这个助手的"培训手册"。
每一个 Skill 都是一份说明书,告诉 OpenClaw:
| 图标 | 说明内容 | 举例 |
|---|---|---|
| 📖 | 这个工具是干什么的 | "这是搜索网页的工具" |
| 🔧 | 怎么使用这个工具 | "用这个命令来搜索" |
| ⚠️ | 使用时需要注意什么 | "需要先配置 API 密钥" |
| 💡 | 什么时候该用这个工具 | "当用户问'帮我搜一下...'时" |
有了这些"培训手册",OpenClaw 就能学会各种技能,变成一个无所不能的超级助手。
这个类比的深层含义是: Skill 本质上是一种提示工程(Prompt Engineering) 的高级应用。它通过结构化的文本指令,让大语言模型(LLM)理解如何在特定场景下调用外部工具完成任务。与传统的硬编码 API 调用不同,Skills 是"软性"的——Agent 会阅读、理解并灵活执行这些指令,而不是机械地按固定流程运行。
🌐 Skills 的技术背景与开放标准
这是理解 Skills 架构的重要背景知识。
什么是 Agent Skills 开放标准?
2025 年底,Anthropic 将 Agent Skills 技术作为开放标准发布,规范定义在 agentskills.io。这一标准的核心理念是:"写一次,处处可用"(Write Once, Use Everywhere)。
Agent Skills 的设计原则:
| 原则 | 说明 |
|---|---|
| 📄 纯文本驱动 | Skills 是简单的 Markdown 文件,无需编译或复杂配置 |
| 🔄 按需加载 | 只有在需要时才会被 Agent 读取,保持 AI 快速响应 |
| 🔓 跨平台兼容 | 同一个 Skill 可在多个支持该标准的 AI 工具中使用 |
| 🛠️ 易于创建 | 任何人都可以用自然语言编写 Skill,无需编程背景 |
哪些工具支持 Agent Skills 标准?
截至 2026 年 2 月,已有 15+ 款 AI 编程助手支持 Agent Skills 标准:
| 工具 | 开发者 | 支持状态 |
|---|---|---|
| OpenClaw | OpenClaw 社区(原 Clawdbot) | ✅ 完整支持 |
| Claude Code | Anthropic | ✅ 完整支持 |
| GitHub Copilot | GitHub/Microsoft | ✅ 稳定版已支持 |
| Codex CLI / ChatGPT | OpenAI | ✅ 完整支持 |
| Cursor | Cursor Inc. | ✅ 完整支持 |
| OpenCode | 开源社区 | ✅ 内置支持 |
| Gemini CLI | ✅ 完整支持 | |
| Windsurf | Codeium | ✅ 支持中 |
| Amp、Letta、Goose | 各开源项目 | ✅ 支持中 |
这意味着什么? 你为 OpenClaw 创建的 Skill,可以直接在 Claude Code、GitHub Copilot、ChatGPT 等工具中使用,无需任何修改!
企业级生态
Anthropic 还发布了来自知名企业的官方技能包,包括:Atlassian、Figma、Canva、Stripe、Notion、Zapier 等。这些官方技能可通过 SkillsMP 市场 或 ClawHub 获取,目前市场上已有超过 71,000+ 个可用技能。
🎯 Skills 能做什么?
通过不同的 Skills,OpenClaw 可以:
🔍 信息搜索类
| 技能 | 功能 | API/服务提供商 |
|---|---|---|
| web-search | 使用 Brave 搜索网页 | Brave Search API |
| exa | 使用 Exa AI 进行神经语义搜索 | Exa AI |
| kagi-search | 使用 Kagi 搜索引擎 | Kagi API |
| perplexity | 使用 Perplexity AI 进行深度搜索 | Perplexity API |
| zeno | 通过递归阅读实现无界上下文 | 本地代码分析 |
📧 邮件和日历类
| 技能 | 功能 | 适用场景 |
|---|---|---|
| gog | Google Workspace(Gmail、日历、云盘) | 个人/企业 Google 账户 |
| clippy | Microsoft 365(Outlook、日历) | Microsoft 365 用户 |
| caldav-calendar | 通用日历同步(iCloud、Nextcloud 等) | 需要跨平台日历同步 |
🌐 浏览器和自动化类
| 技能 | 功能 | 技术特点 |
|---|---|---|
| browser | 打开网页、填写表单、提取数据 | 轻量级,适合简单任务 |
| playwright | 高级浏览器自动化 | 支持复杂交互和截图 |
🎨 AI 生成类
| 技能 | 功能 | 模型说明 |
|---|---|---|
| nano-banana-pro | 使用 Gemini 生成/编辑图片 | Google Gemini 图像模型 |
| dall-e | 使用 DALL-E 生成图片 | OpenAI DALL-E 3 |
| midjourney | 通过 API 调用 Midjourney 生成图片 | 需要 Midjourney 订阅 |
| stable-diffusion | 本地或云端 Stable Diffusion 图像生成 | 支持 ComfyUI / A1111 |
🛠️ 开发工具类
| 技能 | 功能 | 使用场景 |
|---|---|---|
| gemini | 调用 Gemini CLI 辅助编程 | 代码生成与分析 |
| github | 操作 GitHub 仓库 | PR、Issue、Actions 管理 |
| docker | 管理 Docker 容器和镜像 | DevOps 自动化 |
| k8s | Kubernetes 集群操作 | 云原生运维 |
📱 通讯与协作类
OpenClaw 2026 版本支持多渠道消息收发:
| 技能 | 功能 |
|---|---|
| telegram | 通过 Telegram Bot 发送/接收消息 |
| slack | Slack 工作区消息与通知 |
| discord | Discord 服务器交互 |
| teams | Microsoft Teams 集成 |
| WhatsApp Business API 消息 |
这只是冰山一角!通过 ClawHub,你可以发现更多社区创建的技能。截至 2026 年 2 月,ClawHub 已收录 3,000+ 个经过审核的技能,涵盖开发、办公、创意、数据分析等多个领域。
🚀 如何使用 Skills
使用 Skills 有两种方式:
方式一:直接命令(推荐新手)⌨️
在聊天中输入斜杠命令:
/web-search 今天的科技新闻/gmail 查看我的未读邮件/calendar 明天有什么安排就像在微信中发送指令一样简单!
💡 技巧提示:
- 输入
/后,OpenClaw 会自动显示可用技能列表 - 按
Tab键可以自动补全技能名称 - 技能名称不区分大小写
方式二:自然语言(更智能)🗣️
你也可以用自然的方式说话,OpenClaw 会自动判断是否需要使用某个技能:
用户:帮我搜一下最近有什么好看的电影
OpenClaw:(内部思考:用户想搜索信息,我应该使用 web-search 技能)
(自动调用搜索)
根据搜索结果,最近热门的电影有...OpenClaw 会"读懂"你的意图,自动选择合适的技能。
⚙️ 工作原理解析:
当你发送消息时,OpenClaw 的处理流程如下:
用户输入 → 意图识别 → 技能匹配 → 执行任务 → 返回结果
↓
系统提示中包含所有
可用技能的简要描述
↓
Agent 判断是否需要
调用某个技能
↓
如果需要,读取完整的
SKILL.md 内容并执行这种"按需加载"的设计确保了:
- 低延迟:只有需要时才读取完整技能说明
- 低成本:减少了 API Token 消耗
- 高准确:Agent 获得完整上下文后再执行
📦 Skills 从哪里来?
Skills 可以从四个地方获得:
1️⃣ 内置技能(开箱即用)
OpenClaw 自带一些常用技能,安装后直接可用(可能需要配置 API 密钥)。
内置技能包括但不限于:
- 基础搜索:web-search、context7
- 文件操作:summarize、pdf-reader
- 开发辅助:github、git
2️⃣ ClawHub 社区(一键安装)🌟
ClawHub 是 OpenClaw 的"技能商店",你可以:
- 🔍 浏览各种社区创建的技能
- ⬇️ 一键安装到本地
- ⭐ 给技能评分和反馈
- 🔄 同步和更新已安装的技能
- 📤 发布自己创建的技能
ClawHub 特性:
| 功能 | 说明 |
|---|---|
| 向量搜索 | 使用语义搜索找到最相关的技能 |
| 版本管理 | 每个技能支持多版本,可回滚 |
| 自动审核 | 基础安全检查确保技能质量 |
| CLI 友好 | 所有操作都可通过命令行完成 |
安装方法:
# 方式一:使用 openclaw 命令(推荐)
openclaw skills install <技能名称>
# 方式二:使用 clawhub 命令
clawhub install <技能名称>
# 例如安装 Exa 搜索技能
openclaw skills install exa
# 安装到指定目录
clawhub install exa --dir ~/.openclaw/skills批量操作命令:
# 更新所有已安装的技能
clawhub update --all
# 同步所有技能(备份 + 更新)
clawhub sync --all
# 列出已安装的技能
openclaw skills list
# 搜索可用技能
openclaw skills search "搜索关键词"⚠️ 安全提示:ClawHub 上曾发现恶意技能(如 ClawHavoc 系列),请注意查看技能的评分、评论和发布者信息。对于超过 3 个用户举报的技能,ClawHub 会自动隐藏。
3️⃣ Git 仓库克隆(开发者常用)
# 从 GitHub 克隆技能
git clone https://github.com/username/skill-name.git ~/.openclaw/skills/skill-name
# 例如安装 Zeno 技能(递归阅读,无界上下文)
git clone https://github.com/anth0nylawrence/zeno.git ~/.openclaw/skills/zeno4️⃣ 自己创建(高级玩法)✨
你也可以创建自己的技能!这就是本文重点要讲的内容。
📂 技能存放在哪里?
OpenClaw 会从以下位置加载技能,优先级从高到低:
| 位置 | 说明 | 优先级 | 用途 |
|---|---|---|---|
<工作区>/skills/ | 当前项目专用的技能 | ⭐⭐⭐ 最高 | 项目特定的技能覆盖 |
~/.openclaw/skills/ | 你安装的共享技能 | ⭐⭐ 中等 | 个人定制和本地安装 |
| 内置技能目录 | OpenClaw 自带的技能 | ⭐ 最低 | 开箱即用的基础能力 |
skills.load.extraDirs | 配置文件中指定的额外目录 | ⭐ 最低 | 团队共享技能库 |
优先级的实际意义:
场景:你想修改内置的 web-search 技能
做法:在 ~/.openclaw/skills/web-search/ 创建自定义版本
结果:你的版本会覆盖内置版本,而原版保持不变
好处:可以随时删除自定义版本恢复默认行为⚠️ 重要提示:
- 工作区技能 是项目级别的,只在该项目目录下生效
- 用户技能 是全局的,在所有项目中都可用
- 技能名称冲突时,高优先级的版本会"遮蔽"低优先级版本
📄 SKILL.md 文件详解
每个技能就是一个文件夹,里面有一个 SKILL.md 文件。这个文件分为两部分:
第一部分:YAML 元数据(技能的"身份证")📋
---
name: my-skill
description: 这个技能能做什么的简短描述
metadata: { "openclaw": { "emoji": "⚙️", "requires": { "bins": ["curl"], "env": ["MY_API_KEY"], "config": ["some.setting"] } } }
---⚠️ 格式注意:
metadata必须是单行 JSON 对象,不能换行!
字段说明:
| 字段 | 含义 | 示例 | 必填 |
|---|---|---|---|
| name | 技能的名称,用于 /name 命令 | "web-search" | ✅ 是 |
| description | 简短描述(建议不超过 100 字符) | "搜索网页内容" | ✅ 是 |
| homepage | 技能官网或文档链接 | "https://example.com" | ❌ 否 |
| emoji | 在 UI 中显示的图标 | "🔍" | ❌ 否 |
| requires.bins | 需要的命令行工具(全部必须存在) | ["curl", "jq"] | ❌ 否 |
| requires.anyBins | 需要的命令行工具(至少一个存在即可) | ["node", "bun"] | ❌ 否 |
| requires.env | 需要的环境变量(通常是 API 密钥) | ["OPENAI_API_KEY"] | ❌ 否 |
| requires.config | 需要的配置项(openclaw.json 中的路径) | ["browser.enabled"] | ❌ 否 |
| primaryEnv | 主要的环境变量名,可通过 apiKey 配置 | "BRAVE_API_KEY" | ❌ 否 |
| os | 支持的操作系统列表 | ["darwin", "linux"] | ❌ 否 |
| install | 自动安装配置(macOS Skills UI 使用) | [{"brew": "curl"}] | ❌ 否 |
完整的元数据示例:
---
name: advanced-search
description: 高级网络搜索与内容提取
homepage: https://github.com/example/advanced-search
metadata: { "openclaw": { "emoji": "🔬", "os": ["darwin", "linux", "win32"], "requires": { "bins": ["curl", "jq"], "anyBins": ["node", "bun"], "env": ["SEARCH_API_KEY"], "config": ["search.enabled"] }, "primaryEnv": "SEARCH_API_KEY", "install": [{ "brew": "jq" }, { "node": "search-cli" }] } }
---第二部分:Markdown 说明(技能的"使用手册")📖
这部分是普通的 Markdown 文本,告诉 OpenClaw 如何使用这个技能:
# 网页搜索技能
这个技能可以帮你搜索网页信息。
## 什么时候使用
当用户说"搜一下"、"查一查"、"帮我找"等词语时,考虑使用此技能。
## 如何使用
使用以下命令搜索网页:
\`\`\`bash
curl "https://api.search.brave.com/res/v1/web/search?q=${关键词}" \
-H "X-Subscription-Token: ${BRAVE_API_KEY}"
\`\`\`
## 返回结果处理
API 返回 JSON 格式数据,主要字段包括:
- `web.results[]`: 搜索结果数组
- `title`: 页面标题
- `url`: 页面链接
- `description`: 页面描述
## 注意事项
- 搜索结果可能包含过时信息
- 注意验证信息来源的可靠性
- 每分钟最多 100 次请求📝 编写技能说明的最佳实践:
| 原则 | 说明 | 示例 |
|---|---|---|
| 明确触发条件 | 告诉 Agent 什么时候该用这个技能 | "当用户说'帮我搜...'时" |
| 提供完整命令 | 给出可直接执行的代码示例 | 包含环境变量占位符的 curl 命令 |
| 解释返回结果 | 帮助 Agent 理解输出并正确呈现 | "API 返回的 JSON 包含..." |
| 列出限制和错误 | 说明可能的失败情况和处理方式 | "如果返回 401,提示用户检查 API 密钥" |
| 保持简洁 | 不要写成百科全书,突出关键信息 | 控制在 500 字以内为佳 |
关键点: 这部分内容会被 OpenClaw "阅读",所以要写得清晰、具体、有示例。Agent 会将这些文字作为操作指南,因此表述的准确性直接影响执行效果。
🛠️ 创建你的第一个 Skill
让我们动手创建一个简单的技能:天气查询技能。
步骤 1:创建技能目录 📁
mkdir -p ~/.openclaw/skills/weather步骤 2:创建 SKILL.md 文件 📝
# 使用你喜欢的编辑器
nano ~/.openclaw/skills/weather/SKILL.md
# 或 code ~/.openclaw/skills/weather/SKILL.md
# 或 vim ~/.openclaw/skills/weather/SKILL.md步骤 3:编写技能内容 ✍️
---
name: weather
description: 查询指定城市的天气信息
homepage: https://openweathermap.org/api
metadata: { "openclaw": { "emoji": "🌤️", "requires": { "bins": ["curl"], "env": ["OPENWEATHER_API_KEY"] }, "primaryEnv": "OPENWEATHER_API_KEY" } }
---
# 天气查询技能
查询全球任意城市的实时天气信息,数据来源于 OpenWeatherMap One Call API 3.0。
## 什么时候使用这个技能
当用户询问以下类似问题时,使用此技能:
- "今天天气怎么样?"
- "北京现在多少度?"
- "明天会下雨吗?"
- "上海的天气预报"
- "需要带伞吗?"
## 如何查询天气
使用 OpenWeatherMap One Call API 3.0 查询天气:
> ⚠️ **注意**:API V2.5 已弃用,请使用 V3.0
\`\`\`bash
# 查询当前天气和未来 8 天预报(使用 One Call API 3.0)
# 需要先通过城市名获取经纬度
curl -s "https://api.openweathermap.org/geo/1.0/direct?q=${城市名}&limit=1&appid=${OPENWEATHER_API_KEY}" | jq '.'
# 使用经纬度查询天气
curl -s "https://api.openweathermap.org/data/3.0/onecall?lat=${纬度}&lon=${经度}&appid=${OPENWEATHER_API_KEY}&units=metric&lang=zh_cn" | jq '.'
\`\`\`
## 返回结果说明
API 返回的 JSON 包含:
- `current.temp`: 当前温度(摄氏度)
- `current.feels_like`: 体感温度
- `current.humidity`: 湿度百分比
- `current.weather[0].description`: 天气描述(如"多云"、"小雨")
- `current.wind_speed`: 风速(米/秒)
- `daily[]`: 未来 8 天的每日预报
- `hourly[]`: 未来 48 小时的逐时预报
- `alerts[]`: 天气预警(如有)
## 使用示例
用户说:"北京今天天气怎么样?"
你应该:
1. 先调用地理编码 API 获取北京的经纬度
2. 再调用 One Call API 查询天气
3. 解析返回的 JSON
4. 用自然语言告诉用户:
- 当前温度和体感温度
- 天气状况描述
- 湿度和风速
- 如果有降水可能,提醒用户带伞
- 如果有天气预警,优先提醒用户
## 城市名称对照
常用中国城市的英文名:
- 北京: Beijing
- 上海: Shanghai
- 广州: Guangzhou
- 深圳: Shenzhen
- 杭州: Hangzhou
- 成都: Chengdu
- 香港: Hong Kong
- 台北: Taipei
## 错误处理
- **401 错误**:API Key 无效,提示用户检查配置
- **404 错误**:城市不存在,提示用户检查城市名拼写
- **429 错误**:请求过于频繁,稍后重试
- **网络错误**:提示用户检查网络连接
## 注意事项
- 城市名使用英文(如 Beijing, Shanghai, Tokyo)
- 如果查询失败,告诉用户可能是城市名拼写错误
- One Call API 3.0 免费版每天限制 1000 次请求
- 预报数据最多提供未来 8 天步骤 4:配置 API 密钥 🔑
方式一:编辑 OpenClaw 配置文件
nano ~/.openclaw/openclaw.json添加:
{
"skills": {
"entries": {
"weather": {
"enabled": true,
"apiKey": "你的OpenWeatherMap API密钥"
}
}
}
}方式二:使用环境变量(推荐用于开发)
# 在 ~/.bashrc 或 ~/.zshrc 中添加
export OPENWEATHER_API_KEY="你的API密钥"方式三:使用 .env 文件
# 在项目根目录创建 .env 文件
echo "OPENWEATHER_API_KEY=你的API密钥" >> .env步骤 5:验证技能加载 ✅
# 查看已加载的技能列表
openclaw skills list
# 查看特定技能的详细信息
openclaw skills show weather步骤 6:开始新会话测试 🧪
/new⚠️ 重要:技能只在新会话开始时加载。修改 SKILL.md 后必须开始新会话才能生效!
然后尝试:
/weather 北京今天天气怎么样或者自然语言:
北京现在多少度?🎉 恭喜!你创建了第一个自定义技能!
⚙️ Skills 配置进阶
在配置文件中管理技能
所有技能配置都在 ~/.openclaw/openclaw.json 的 skills 部分:
{
"skills": {
"load": {
"extraDirs": ["/path/to/team/skills", "/path/to/my/skills"],
"watch": true,
"watchDebounceMs": 250
},
"entries": {
"web-search": {
"enabled": true,
"apiKey": "xxx"
},
"some-skill-i-dont-want": {
"enabled": false
},
"custom-skill": {
"enabled": true,
"env": {
"CUSTOM_API_KEY": "xxx",
"CUSTOM_ENDPOINT": "https://api.example.com"
}
}
}
}
}配置项详解
| 配置路径 | 说明 | 默认值 |
|---|---|---|
load.extraDirs | 额外的技能目录列表 | [] |
load.watch | 是否监听技能文件变化 | true |
load.watchDebounceMs | 文件变化防抖时间(毫秒) | 250 |
entries.<skill>.enabled | 启用或禁用技能 | true |
entries.<skill>.apiKey | 便捷 API 密钥配置(需技能声明 primaryEnv) | - |
entries.<skill>.env | 环境变量键值对 | {} |
技能加载的时机
OpenClaw 启动 / 新会话开始
↓
扫描所有技能目录
↓
读取每个 SKILL.md 的元数据
↓
根据 requires 检查依赖
↓
过滤不满足条件的技能
↓
将合格技能注入系统提示⚠️ 重要提示:
| 场景 | 生效方式 |
|---|---|
| 修改了 SKILL.md 文件 | 使用 /new 开始新会话,或等待 watch 自动刷新 |
| 修改了 openclaw.json | 重启 OpenClaw Gateway |
| 安装了新技能 | 使用 /new 开始新会话 |
启用了 watch: true | 技能变化会在下一个 Agent 回合自动生效 |
🔧 高级功能
1. 技能的模型调用控制
metadata: { "openclaw": { "disable-model-invocation": true } }设置为 true 后,技能只能通过 /命令 调用,OpenClaw 不会自动使用它。
适用场景:
- ⚠️ 敏感操作(如删除文件、发送邮件)需要用户明确触发
- 💰 高成本 API 调用,避免意外消耗额度
- 🔐 涉及权限操作的功能
2. 技能的直接工具派发
metadata: { "openclaw": { "command-dispatch": "tool", "command-tool": "bash" } }这样设置后,/技能名 参数 会直接调用底层工具,跳过模型思考。
适用场景:
- ⚡ 简单的命令转发,不需要 AI 理解
- 🚀 追求极致的响应速度
- 🔄 固定格式的任务执行
3. 平台限制
metadata: { "openclaw": { "os": ["darwin", "linux"] } }只在指定操作系统上启用技能。
| 标识 | 操作系统 |
|---|---|
| darwin | macOS |
| linux | Linux(所有发行版) |
| win32 | Windows |
4. 自动安装配置
对于 macOS 用户,技能可以声明自动安装方式:
metadata: { "openclaw": { "install": [{ "brew": "jq" }, { "node": "my-cli-tool" }, { "go": "github.com/user/tool@latest" }] } }| 类型 | 说明 | 示例 |
|---|---|---|
| brew | Homebrew 包 | { "brew": "jq" } |
| node | npm 全局包 | { "node": "typescript" } |
| go | Go 模块 | { "go": "github.com/user/tool@latest" } |
| uv | Python uv 包 | { "uv": "requests" } |
| download | 直接下载 | { "download": { "url": "...", "archive": "tar.gz" } } |
5. 技能密钥 (skillKey)
当技能名称与配置键不一致时使用:
metadata: { "openclaw": { "skillKey": "my-special-key" } }配置文件中使用:
{
"skills": {
"entries": {
"my-special-key": {
"enabled": true,
"apiKey": "xxx"
}
}
}
}❓ 常见问题解答
Q1: 技能没有生效怎么办?
检查清单:
- ✅ 文件位置正确吗?(
~/.openclaw/skills/技能名/SKILL.md) - ✅ YAML 格式正确吗?(用 YAML Lint 验证)
- ✅ metadata 是单行 JSON 吗?(不能换行!)
- ✅ 开始了新会话吗?(运行
/new) - ✅ 依赖满足了吗?(检查
requires.bins和requires.env) - ✅ 操作系统匹配吗?(检查
os字段)
调试命令:
# 查看已加载的技能
openclaw skills list
# 查看技能详情(包括为什么没有加载)
openclaw skills show 技能名
# 验证 SKILL.md 格式
openclaw skills validate ~/.openclaw/skills/技能名/SKILL.mdQ2: 如何查看有哪些可用技能?
# 列出所有已安装的技能
openclaw skills list
# 在 ClawHub 搜索
openclaw skills search 关键词
# 或直接访问 ClawHub 网站
open https://clawhub.aiQ3: 技能太多会影响性能吗?
不会明显影响。 OpenClaw 的技能加载机制经过优化:
| 阶段 | 处理方式 |
|---|---|
| 系统提示 | 只注入简洁的技能列表(名称 + 简短描述) |
| 技能调用 | 只有需要时才读取完整的 SKILL.md |
| Token 消耗 | 技能列表的 Token 开销是确定性的,可预测 |
💡 优化建议:
- 禁用不常用的技能:
"enabled": false - 保持技能描述简洁(100 字符以内)
- 使用
disable-model-invocation避免不必要的自动调用
Q4: 如何分享我创建的技能?
方式一:发布到 ClawHub(推荐)
- 在 ClawHub 注册账号(GitHub 账号需满一周)
- 运行
clawhub publish 技能名 - 填写技能信息和版本说明
- 发布!
方式二:GitHub 仓库
- 创建 GitHub 仓库
- 将技能目录推送到仓库
- 分享仓库链接,用户可以
git clone安装
方式三:PR 到 awesome-openclaw-skills
将你的技能提交到 VoltAgent/awesome-openclaw-skills 仓库。
Q5: Skills 和 Plugins 有什么区别?
| 特性 | Skills | Plugins |
|---|---|---|
| 复杂度 | 简单(一个 Markdown 文件) | 复杂(JavaScript/TypeScript 代码) |
| 功能 | 教 Agent 使用现有工具 | 添加全新的功能和工具 |
| 创建难度 | 低,无需编程 | 高,需要开发经验 |
| 运行方式 | Agent 根据说明执行命令 | 直接运行代码 |
| 调试难度 | 容易,修改文本即可 | 需要调试代码 |
| 跨平台性 | ✅ 天然跨平台(遵循 AgentSkills 标准) | ❌ 可能需要适配 |
简单理解:
- Skill = 说明书(告诉 Agent 怎么做)
- Plugin = 新功能(给 Agent 新的能力)
如何选择?
| 需求 | 推荐 |
|---|---|
| 调用现有 API 或命令行工具 | ✅ Skill |
| 需要复杂的业务逻辑处理 | ✅ Plugin |
| 希望快速实现,不想写代码 | ✅ Skill |
| 需要访问数据库或内部系统 | ✅ Plugin |
| 希望在多个 AI 工具中使用 | ✅ Skill |
Q6: 技能的依赖检查是在什么时候进行的?
依赖检查发生在技能加载时(新会话开始或 watch 刷新时):
| 检查项 | 检查时机 | 检查位置 |
|---|---|---|
| requires.bins | 加载时 | 主机 PATH |
| requires.env | 加载时 | 环境变量或 openclaw.json |
| requires.config | 加载时 | openclaw.json 配置项 |
| os | 加载时 | 当前操作系统 |
注意: 如果使用 sandbox 模式,
requires.bins检查的是主机上的二进制文件,而不是 sandbox 内的。
📚 实战案例:创建一个 TriliumNext 笔记技能
如果你使用 TriliumNext Notes,可以创建一个技能让 OpenClaw 直接搜索和获取笔记。
💡 提示:TriliumNext(原 Trilium Notes)现已提供多个 MCP Server 集成,包括 TriliumNext MCP Server,可以更方便地与 AI 助手集成。
以下是基于 ETAPI 的 Skill 实现:
---
name: trilium
description: 搜索和获取 TriliumNext Notes 笔记
homepage: https://github.com/TriliumNext/Trilium
metadata: { "openclaw": { "emoji": "📚", "requires": { "bins": ["curl", "jq"], "env": ["TRILIUM_URL", "TRILIUM_TOKEN"] }, "primaryEnv": "TRILIUM_TOKEN" } }
---
# TriliumNext Notes 技能
连接到 TriliumNext Notes 知识库,搜索和获取笔记内容。TriliumNext 是一款开源的个人知识管理系统,支持层级化笔记组织和强大的搜索功能。
> 📖 官方 ETAPI 文档已迁移至 [docs.triliumnotes.org](https://docs.triliumnotes.org/)
## 使用场景
- 用户说"查一下我之前记的关于 XXX 的笔记"
- 用户说"从笔记库找一下 XXX"
- 用户提到需要参考之前的笔记
- 用户想要创建或更新笔记
## 前置要求
1. TriliumNext Notes 服务正在运行
2. 已配置 ETAPI Token(在 Trilium 设置 → ETAPI 中获取)
3. 环境变量已设置:
- `TRILIUM_URL`: Trilium 服务地址(如 http://localhost:8080)
- `TRILIUM_TOKEN`: ETAPI Token
## 搜索笔记
\`\`\`bash
curl -s -H "Authorization: ${TRILIUM_TOKEN}" \
"${TRILIUM_URL}/etapi/notes?search=关键词&limit=10" | jq '.results[] | {noteId, title}'
\`\`\`
## 获取笔记内容
\`\`\`bash
# 获取笔记元数据
curl -s -H "Authorization: ${TRILIUM_TOKEN}" \
"${TRILIUM_URL}/etapi/notes/{noteId}"
# 获取笔记内容
curl -s -H "Authorization: ${TRILIUM_TOKEN}" \
"${TRILIUM_URL}/etapi/notes/{noteId}/content"
\`\`\`
## 创建新笔记
\`\`\`bash
curl -s -X POST -H "Authorization: ${TRILIUM_TOKEN}" \
-H "Content-Type: application/json" \
"${TRILIUM_URL}/etapi/create-note" \
-d '{"parentNoteId": "root", "title": "笔记标题", "type": "text", "content": "笔记内容"}'
\`\`\`
## 响应处理
1. 搜索结果会返回 noteId 和 title 列表
2. 根据相关性选择最匹配的笔记
3. 获取内容后,用 Markdown 格式展示给用户
4. 如果内容是 HTML,先转换为 Markdown
## 错误处理
| 错误码 | 原因 | 处理方式 |
|--------|------|----------|
| 401 | Token 无效 | 提示用户检查 TRILIUM_TOKEN 配置 |
| 404 | 笔记不存在 | 告知用户笔记已被删除或 ID 错误 |
| 连接失败 | 服务未运行 | 提示用户启动 TriliumNext 服务 |
## 使用示例
用户:"帮我找一下关于 Python 异步编程的笔记"
你应该:
1. 使用搜索 API 查找相关笔记
2. 列出找到的笔记标题供用户选择
3. 用户确认后获取完整内容
4. 以格式化的方式展示笔记内容🎓 总结
Skills 的核心概念
| 概念 | 说明 |
|---|---|
| Skills 是"培训手册" | 教 OpenClaw 如何使用工具,本质是提示工程 |
| SKILL.md 是唯一需要的文件 | 包含元数据(YAML)和使用说明(Markdown) |
| 两种调用方式 | 斜杠命令 /skill 或自然语言 |
| 四个来源 | 内置、ClawHub、Git 克隆、自己创建 |
| 优先级规则 | 工作区 > 用户目录 > extraDirs > 内置 |
| 开放标准 | 遵循 AgentSkills.io 规范,跨 15+ 工具兼容 |
创建 Skill 的最佳实践
| 原则 | 做法 |
|---|---|
| ✅ 写清楚什么时候用 | 明确的触发场景和关键词 |
| ✅ 给出具体命令 | 可复制粘贴的示例代码 |
| ✅ 说明返回结果 | 帮助 Agent 理解和格式化输出 |
| ✅ 列出注意事项 | 错误处理、限制条件、边界情况 |
| ✅ 保持简洁 | 控制在 500 字以内,突出关键信息 |
| ✅ 单行 JSON 元数据 | metadata 字段必须是单行 |
📖 资源链接
| 资源 | 链接 | 说明 |
|---|---|---|
| 官方文档 | docs.openclaw.ai/tools/skills | 完整技术文档 |
| 技能配置 | docs.openclaw.ai/tools/skills-config | 配置参考 |
| ClawHub | clawhub.ai | 技能注册表 |
| GitHub 仓库 | github.com/openclaw/openclaw | 源代码 |
| 社区技能集合 | github.com/VoltAgent/awesome-openclaw-skills | 精选技能 |
| AgentSkills 标准 | agentskills.io | 开放标准规范 |
| SkillsMP 市场 | skillsmp.com | 跨平台技能市场 |
✨ 写在最后
Skills 是 OpenClaw 最强大的扩展机制之一。通过简单的 Markdown 文件,你就能让 AI 助手学会任何技能——从查天气到管理邮件,从搜索笔记到自动化办公。
最棒的是,你不需要懂编程! 只需要能够清晰地描述一个任务怎么做,OpenClaw 就能学会并帮你执行。
更重要的是,你创建的技能可以在 Claude Code、GitHub Copilot、ChatGPT、Gemini CLI 等 15+ 款 AI 工具中使用——真正实现"写一次,处处可用"!
现在,动手创建你的第一个 Skill 吧!🚀