OpenClaw进阶篇:手把手开发一个自定义Skill
AI会根据Skill中的Prompt来选择调用哪个Tool。上篇我们讲到Skill是"让AI学会新技能"。AI会根据用户意图和Skill描述自动匹配。
·
一、重新理解Skill
上篇我们讲到Skill是"让AI学会新技能"。但有个重大误解需要澄清:
❌ 之前的误解
很多人以为Skill是这样工作的:
Skill = 配置文件 + 执行代码(index.js)
↓
像函数调用一样直接执行
✅ 正确的理解
Skill = Prompt模板
↓
告诉AI"什么时候触发" + "触发后怎么做"
↓
AI自己决定调用什么Tool、如何处理结果
Skill是给LLM的指令卡片,不是可执行代码。AI会根据Skill中的Prompt来选择调用哪个Tool。
二、Skill的核心机制
2.1 SKILL.md的正确写法
---
name: stock_query
description: 查询股票实时行情
---
# Stock Query Skill
当用户询问股票信息时,使用此Skill。
## 触发条件
用户说"股票"、"股价"、"查询XXX"等
## 执行步骤
1. 识别股票名称或代码(支持中文名称或6位代码)
2. 使用 browser 工具访问金融网站获取数据
3. 解析返回的HTML,提取:当前价格、涨跌额、涨跌幅、成交量
4. 格式化输出为中文结果
## 输出格式
【股票名称】
- 当前价格:¥XXX
- 涨跌:▲/▼ XXX
- 涨跌幅:▲/▼ XX%
- 成交量:XX万手
2.2 关键组成
| 字段 | 作用 |
|---|---|
| name | Skill唯一标识 |
| description | 一句话描述,供AI判断是否调用 |
| 正文(Prompt) | 核心指令,告诉AI如何执行 |
2.3 触发机制
没有显式的trigger字段。触发,靠的是:
- description - AI根据描述判断是否适用
- 正文Prompt - 描述触发场景
- 用户输入 - AI判断当前请求是否符合Skill场景
三、实战:开发股票查询Skill
3.1 创建目录
mkdir -p ~/.openclaw/workspace/skills/stock-query
3.2 编写SKILL.md
---
name: stock_query
description: 查询股票价格、涨跌幅、市值等实时行情
---
# 股票查询 Skill
## 什么时候触发
当用户询问以下内容时:
- "查询XXX股票"
- "XXX股价多少"
- "XXX今天涨跌"
- "股票代码XXX怎么样"
- "推荐一支股票"
## 如何执行
### 第1步:识别股票
- 如果用户输入6位数字(如600519),直接作为股票代码
- 如果用户输入中文名称(如"茅台"),映射到代码:
- 茅台/贵州茅台 → 600519
- 腾讯 → 00700
- 宁德时代 → 300750
- 比亚迪 → 002594
- 平安 → 601318
### 第2步:获取数据
使用 `browser` 工具访问:
- A股:`https://finance.sina.com.cn/quote/{股票代码}.html`
示例代码:
// 使用 browser.navigate 访问页面
await browser.navigate('https://finance.sina.com.cn/quote/600519.html')
// 使用 browser.evaluate 提取数据
const data = await browser.evaluate(() => {
const price = document.querySelector('.price').innerText;
const change = document.querySelector('.change').innerText;
return { price, change };
})
### 第3步:解析数据
从页面提取以下信息:
- 当前价格
- 涨跌额(与开盘价对比)
- 涨跌幅(百分比)
- 最高价、最低价
- 成交量、成交额
- 更新时间
### 第4步:格式化输出
【贵州茅台】(600519)
┌─────────────┬──────────┐
│ 当前价格 │ ¥1689.00 │
│ 涨跌 │ ▲ +45.50 │
│ 涨跌幅 │ +2.77% │
│ 成交量 │ 12.5万手 │
└─────────────┴──────────┘
## 注意事项
- 如果找不到股票,回复:"抱歉,未找到该股票信息,请检查名称或代码是否正确"
- 如果获取数据失败,回复:"获取数据失败,请稍后重试"
- 保持输出简洁美观,使用表格和emoji
3.3 安装Skill
# 复制到工作区
cp -r ~/.openclaw/workspace/skills/stock-query ~/.openclaw/workspace/agents/zebra-fish-workspace/skills/
# 重启OpenClaw让Skill生效
openclaw gateway restart
3.4 测试
# 测试1:查询茅台
openclaw agent --message "查询贵州茅台股票今天怎么样"
# 测试2:查询代码
openclaw agent --message "600519现在多少钱"
# 测试3:问涨跌
openclaw agent --message "平安银行今天跌了多少"
四、进阶:带工具配置的Skill
如果你的Skill需要特定的API Key,可以通过metadata配置:
---
name: stock_pro
description: 高级股票查询,支持更多功能
metadata:
{
"openclaw": {
"requires": { "env": ["TIING_API_KEY"] },
"primaryEnv": "TIING_API_KEY",
},
}
---
# Stock Pro Skill
需要使用付费金融API进行查询。
五、多Skill协同
当有多个相关Skill时,AI会自动选择最合适的:
# Skill 1: stock_query
---
name: stock_query
description: 查询股票实时行情
---
# 股票查询
当用户问股票价格、涨跌时触发...
# Skill 2: stock_analysis
---
name: stock_analysis
description: 分析股票走势和技术指标
---
# 股票分析
当用户问股票走势、技术分析、K线时触发...
AI会根据用户意图和Skill描述自动匹配。
六、常见问题
Q1: Skill不触发?
- 检查description是否清晰描述了触发场景
- 用户输入要包含Skill描述中的关键词
- 重启Gateway让新Skill生效
Q2: AI调用了错误的Tool?
- 在Prompt中明确指定使用哪个Tool
- 添加Few-shot示例
Q3: 如何调试?
- 使用
openclaw agent --debug查看AI的决策过程 - 查看日志:
openclaw logs
更多内容
如果你对AI开发、Agent实战感兴趣,欢迎关注我的公众号【码头码农】:
- 每日AI热点解读
- 实战项目复盘
- 技术成长心得
更多推荐




所有评论(0)