一、重新理解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字段。触发,靠的是:

  1. description - AI根据描述判断是否适用
  2. 正文Prompt - 描述触发场景
  3. 用户输入 - 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热点解读
  • 实战项目复盘
  • 技术成长心得
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐