Skills 技能系统
Skills 是 OpenClaw 的核心能力扩展机制,让 Agent 能够执行各种具体任务。本章介绍如何安装、使用和开发自定义技能。
什么是 Skill?
Skill 是 OpenClaw 的专业技能插件,告诉 Agent 怎么做某类任务。它不是"黑盒插件",而是遵循固定规范的 TypeScript/JavaScript 模块。
Skill 的定位
| 角色 | 说明 |
|---|---|
| 不参与意图解析 | 用户说的话由 OpenClaw 内核转成结构化指令,Skill 只负责"干活" |
| 不管理权限 | 所有文件访问、网络请求的权限,都由 OpenClaw 内核统一校验 |
| 专注单一能力 | 一个 Skill 只做一件事,简单、可复用、易维护 |
官方技能市场
ClawHub 是官方技能市场,已收录 3000+ 实用技能,覆盖 32 个分类:
| 分类 | 示例技能 |
|---|---|
| 信息检索 | Tavily Search、Multi Search、Brave Search |
| 文件处理 | PDF 处理、文件整理、格式转换 |
| 代码开发 | GitHub 集成、代码审查、调试器 |
| 浏览器自动化 | BrowserWing、网页监控 |
| 写作辅助 | Copywriting、内容生成 |
| 数据分析 | 图表生成、数据处理 |
安装技能
搜索技能
# 搜索关键词相关技能
openclaw skill search weather
# 搜索分类下的技能
openclaw skill search --category browser
安装技能
# 安装单个技能
openclaw skill install weather
# 安装多个技能
openclaw skill install weather file-organizer pdf
# 从 GitHub 安装
openclaw skill install github:user/repo
管理已安装技能
# 查看已安装技能
openclaw skill list
# 查看技能详情
openclaw skill info weather
# 更新技能
openclaw skill update weather
# 更新所有技能
openclaw skill update --all
# 卸载技能
openclaw skill uninstall weather
推荐技能
信息检索类
Tavily Search
实时搜索,今天发生的事今天就能查到。
openclaw skill install tavily-search
Multi Search
同时跑 17 个搜索引擎,适合做竞品调研。
openclaw skill install multi-search
浏览器自动化类
BrowserWing
OpenClaw 生态里最强大的浏览器自动化技能,能接管你的浏览器,替你完成网页登录、信息抓取、表单填写、定时监控等操作。
openclaw skill install browserwing
代码开发类
GitHub 集成
与 GitHub 深度集成,可以克隆仓库、提交 PR、创建 Issue、自动 review 代码。
openclaw skill install github
Boomerang Tasks
自动把大任务拆成带记忆的小块,每块跑完记录状态再继续,不会因为窗口太长失忆。
openclaw skill install boomerang-tasks
自我进化类
Self-Improving
记录你每次用 OpenClaw 的方式,把你的高频习惯变成默认行为。用了几周后,它会越来越像你的工作风格。
openclaw skill install self-improving
开发自定义技能
当官方技能无法满足个性化需求时,可以开发自定义技能。
使用脚手架创建
# 创建新技能
openclaw skills create daily-weather
这会自动创建以下结构:
daily-weather/
├── skill.md # 技能元数据和说明
├── index.js # 核心逻辑实现
├── package.json # 依赖声明
└── tests/
└── skill.test.js # 测试文件
编写 skill.md
skill.md 包含 YAML 元数据和 Markdown 说明两部分:
---
name: daily-weather
version: 1.0.0
description: 查询指定城市的实时天气信息。当用户询问天气、气温、降水、风力等情况时使用此技能。
author: your-name
license: MIT
capabilities:
- id: get-weather
description: 获取指定城市的天气数据
permissions:
network: true
filesystem: false
inputs:
- name: city
type: string
required: true
description: 城市名称
- name: date
type: string
required: false
default: today
description: 查询日期,默认为今天
tags:
- weather
- api
- real-time
---
## 技能说明
此技能用于查询全球主要城市的实时天气信息,包括温度、湿度、降水概率、风力等。
## 使用示例
用户可以这样询问:
- "北京今天天气怎么样?"
- "上海明天会下雨吗?"
- "广州现在的气温是多少?"
## 注意事项
- 需要网络连接
- 支持中文和英文城市名称
- 数据来源于 OpenWeather API
编写 index.js
// index.js
module.exports = {
name: 'daily-weather',
version: '1.0.0',
// 定义技能能力
capabilities: {
'get-weather': async (params) => {
const { city, date = 'today' } = params;
// 调用天气 API
const response = await fetch(
`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${process.env.WEATHER_API_KEY}`
);
const data = await response.json();
return {
city: data.name,
temperature: data.main.temp,
humidity: data.main.humidity,
description: data.weather[0].description,
wind: data.wind.speed
};
}
},
// 技能初始化
async init() {
// 检查必要的环境变量
if (!process.env.WEATHER_API_KEY) {
throw new Error('WEATHER_API_KEY is required');
}
},
// 技能销毁时的清理工作
async destroy() {
// 清理资源
}
};
编写 package.json
{
"name": "daily-weather",
"version": "1.0.0",
"description": "查询城市天气信息",
"main": "index.js",
"dependencies": {
"node-fetch": "^2.6.0"
},
"openclaw": {
"minVersion": "2026.1.0",
"permissions": ["network"]
}
}
安装自定义技能
将技能文件放到指定目录:
# 放到自定义技能目录
cp -r daily-weather ~/.openclaw/custom-skills/
# 重载技能
openclaw skill reload
或者直接从本地目录安装:
openclaw skill install ./daily-weather
技能安全
安全扫描
安装任何 Skill 之前,建议先进行安全扫描:
# 安装安全扫描工具
openclaw skill install clawsec
# 扫描技能
openclaw skill scan weather
权限控制
在 skill.md 中声明权限:
permissions:
network: true # 是否允许网络访问
filesystem: true # 是否允许文件系统访问
execute: false # 是否允许执行命令
env: # 需要的环境变量
- WEATHER_API_KEY
敏感数据处理
- 不要在代码中硬编码 API Key
- 使用环境变量存储敏感信息
- 技能不应将用户数据发送到第三方服务器
技能最佳实践
单一职责
一个 Skill 只做一件事,不要把多个不相关的功能塞进一个 Skill。
清晰的描述
skill.md 中的 description 非常重要,它决定了 OpenClaw 什么时候会调用这个技能。描述要清晰、准确、无歧义。
错误处理
capabilities: {
'get-weather': async (params) => {
try {
// 业务逻辑
} catch (error) {
// 返回友好的错误信息
return {
error: true,
message: `获取天气失败:${error.message}`
};
}
}
}
日志记录
const logger = require('openclaw-logger');
capabilities: {
'get-weather': async (params) => {
logger.info('Getting weather for', params.city);
// ...
logger.debug('Weather data retrieved', data);
}
}
发布技能
发布到 ClawHub
- 确保技能符合 ClawHub 的质量标准
- 创建 GitHub 仓库托管代码
- 提交到 ClawHub 注册表:
openclaw skill publish
质量标准
- 完整的 skill.md 文档
- 单元测试覆盖
- 错误处理完善
- 无安全漏洞
- 代码风格规范
常见问题
技能安装失败
原因:网络问题或权限不足。
解决:
# 使用代理
openclaw config set proxy http://127.0.0.1:7890
# 或手动下载安装
git clone https://github.com/user/skill-name.git
openclaw skill install ./skill-name
技能无法调用
原因:描述不匹配或权限不足。
解决:
# 查看技能详情
openclaw skill info skill-name
# 检查权限配置
openclaw config show permissions
技能冲突
原因:多个技能处理相同类型的请求。
解决:
# 设置技能优先级
openclaw skill priority skill-name 10
下一步
- Memory 记忆系统 - 配置 AI 的长期记忆
- 定时任务 - 设置自动化任务
- 多 Agent 协作 - 打造 AI 团队