跳到主要内容

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

  1. 确保技能符合 ClawHub 的质量标准
  2. 创建 GitHub 仓库托管代码
  3. 提交到 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

下一步