跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScriptNode.jsAI

OpenClaw 技能开发入门指南

OpenClaw 技能开发教程。介绍技能概念、工作原理及内置与自定义区别。涵盖开发前置知识(Node.js 基础)、环境准备。提供 Hello World 示例及天气查询实战,包含目录结构、SKILL.md 编写、index.js 逻辑实现。讲解错误处理、返回格式统一、描述清晰等最佳实践。涉及本地与全局技能发布,以及调用外部 API 的进阶方法。旨在帮助开发者扩展 AI 助手功能。

微码行者发布于 2026/4/6更新于 2026/7/1739 浏览
OpenClaw 技能开发入门指南

前言:从会聊天到会做事

在部署安装和人格定制之后,有朋友问:AI 助手聊天挺溜了,但能不能让它干点实际的活儿?比如查天气、发邮件、操作数据库什么的?

这就涉及到 OpenClaw 的核心功能——技能开发(Skills)!

简单来说,技能就是让 AI 从会聊变成会干的关键。没有技能的 AI,就像个满腹经纶但手无缚鸡之力的书生;有了技能,它就能真正帮你干活儿了。

今天带你入门技能开发,让你的 AI 助手学会真本事!

一、什么是 OpenClaw 技能?

1.1 概念解析

技能(Skill),在 OpenClaw 中是指 AI 可以调用的功能模块。它可以是:

  • 查询类:查天气、查汇率、查股票
  • 操作类:发邮件、传文件、操作数据库
  • 集成类:调用第三方 API、连接外部服务
  • 自动化类:定时任务、批量处理、工作流
1.2 技能的工作原理

OpenClaw 的技能机制可以这样理解:

用户请求 → AI 理解意图 → 匹配对应技能 → 执行技能 → 返回结果 

举个例子:

用户:北京今天天气怎么样?

AI 分析:这是天气查询请求 → 调用 weather 技能 → 获取天气数据 → 回复用户

1.3 内置技能 vs 自定义技能

OpenClaw 自带一些内置技能,比如:

  • message:发送消息
  • sessions_list:查看会话列表
  • sessions_send:跨会话发消息
  • session_status:查看会话状态

但内置技能毕竟有限,自定义技能才是发挥创造力的地方!

二、技能开发前置知识

2.1 你需要会什么?

实际上,技能开发需要一定的技术基础:

  • JavaScript/Node.js:OpenClaw 的技能主要用 JS 编写
  • API 调用:知道怎么用 HTTP 请求调用第三方服务
  • JSON 处理:能读懂和编写 JSON 格式的数据
  • 基础调试:会看日志、排查错误

如果你是完全的新手,建议先学点 Node.js 基础再来。

2.2 开发环境准备

确保你已经:

  1. 安装好 Node.js(v20+)
  2. 有一个代码编辑器(VS Code 推荐)
  3. OpenClaw 工作区已初始化

三、第一个技能:Hello World

3.1 技能目录结构

OpenClaw 的技能通常放在这个位置:

workspace/
└── skills/
    └── my-first-skill/
        ├── SKILL.md # 技能描述文件
        ├── index.js # 技能主逻辑
        └── package.json # 依赖配置(可选)
3.2 编写 SKILL.md

SKILL.md 是技能的身份证,告诉 AI 这个技能是干嘛的。

# my-first-skill
## 描述
这是我的第一个 OpenClaw 技能,用于测试和学习。

当用户提到 hello、你好、打招呼时触发。

 name: 用户的名字(可选)

返回一句问候语。
## 触发条件
## 输入参数
-
## 输出
3.3 编写 index.js

这是技能的核心逻辑:

// skills/my-first-skill/index.js
module.exports = {
  name: 'my-first-skill',
  description: '我的第一个技能',
  // 执行函数
  async execute(context, params) {
    const name = params.name || '朋友';
    const greetings = [
      `你好呀,${name}!👋`,
      `嘿,${name},今天过得怎么样?`,
      `哈喽${name},有什么可以帮你的吗?`
    ];
    // 随机选一句问候
    const randomGreeting = greetings[Math.floor(Math.random() * greetings.length)];
    return { success: true, message: randomGreeting };
  }
};
3.4 注册技能

在工作区的配置文件中添加技能路径,或者在会话中加载:

# 在 OpenClaw 中加载技能
openclaw skill load ./skills/my-first-skill
3.5 测试技能

现在跟你的 AI 助手说你好,看看它会不会调用你的技能!

四、实战:开发一个天气查询技能

光说 Hello World 太没意思了,咱们来做个实用的天气查询技能!

4.1 选择天气 API

推荐使用 wttr.in,因为它:

  • 免费,不需要 API 密钥
  • 支持中文
  • 返回格式简单
4.2 创建技能目录
mkdir -p skills/weather-skill
cd skills/weather-skill
4.3 编写 SKILL.md
# weather-skill
## 描述
查询指定城市的天气信息。
## 触发条件
当用户询问天气、温度、预报时触发。
## 输入参数
- city: 城市名称(必填)
## 输出
返回当前天气状况、温度、湿度等信息。
## 示例
- 用户:北京天气怎么样?
- AI:调用 weather-skill,city=北京
4.4 编写 index.js
// skills/weather-skill/index.js
const https = require('https');

module.exports = {
  name: 'weather-skill',
  description: '查询城市天气',
  async execute(context, params) {
    const city = params.city;
    if (!city) {
      return { success: false, message: '请告诉我你想查询哪个城市的天气~' };
    }

    // 调用 wttr.in API
    return new Promise((resolve, reject) => {
      const url = `https://wttr.in/${encodeURIComponent(city)}?format=j1`;
      let data = '';
      https.get(url, (res) => {
        res.on('data', chunk => data += chunk);
        res.on('end', () => {
          try {
            const weather = JSON.parse(data);
            const current = weather.current_condition[0];
            const result = {
              success: true,
              data: {
                city: city,
                temp: current.temp_C + '°C',
                weather: current.weatherDesc[0].value,
                humidity: current.humidity + '%',
                windSpeed: current.windspeedKmph + 'km/h'
              }
            };
            resolve(result);
          } catch (e) {
            resolve({ success: false, message: '天气查询失败,请稍后再试~' });
          }
        });
      }).on('error', reject);
    });
  }
};
4.5 测试效果

用户:北京天气怎么样?

AI:北京今天晴,气温 25°C,湿度 45%,风速 12km/h。适合出门哦!☀️

五、技能开发最佳实践

5.1 错误处理要完善

技能执行可能会失败,一定要处理异常情况:

try {
  // 执行逻辑
} catch (error) {
  return { success: false, message: '出错了:' + error.message };
}
5.2 返回格式要统一

建议统一返回格式,方便 AI 处理:

{
  "success": true/false,
  "data": { ... },
  "message": "..."
}
5.3 技能描述要清晰

SKILL.md 写得越清楚,AI 越知道什么时候调用这个技能。包括:

  • 触发条件
  • 输入参数
  • 输出格式
  • 使用示例
5.4 敏感操作要谨慎

涉及以下操作时要特别注意:

  • 删除文件/数据
  • 发送外部消息
  • 访问私密信息

建议加一层确认机制,或者需要用户明确授权。

六、技能发布与分享

6.1 本地技能

放在工作区的 skills/ 目录下,仅当前工作区可用。

6.2 全局技能

安装到全局,所有工作区都能用:

npm install -g openclaw-skill-xxx
6.3 分享技能

可以把技能发布到 GitHub、npm 等平台,供他人使用。

七、进阶:调用外部 API

很多技能需要调用第三方 API,提供一个通用模板:

const axios = require('axios');

async function callExternalAPI(endpoint, params, apiKey) {
  try {
    const response = await axios.get(endpoint, {
      params: params,
      headers: { 'Authorization': `Bearer ${apiKey}` }
    });
    return response.data;
  } catch (error) {
    throw new Error('API 调用失败:' + error.message);
  }
}

常用 API 推荐:

  • 天气:wttr.in、OpenWeatherMap
  • 汇率:exchangerate-api.com
  • 新闻:newsapi.org
  • 翻译:Google Translate API

结语

总结一下:

  1. 技能让 AI 从会聊变会干
  2. 开发技能需要 JS 基础
  3. 从简单开始,逐步迭代
  4. 错误处理和文档很重要

目录

  1. 前言:从会聊天到会做事
  2. 一、什么是 OpenClaw 技能?
  3. 1.1 概念解析
  4. 1.2 技能的工作原理
  5. 1.3 内置技能 vs 自定义技能
  6. 二、技能开发前置知识
  7. 2.1 你需要会什么?
  8. 2.2 开发环境准备
  9. 三、第一个技能:Hello World
  10. 3.1 技能目录结构
  11. 3.2 编写 SKILL.md
  12. my-first-skill
  13. 描述
  14. 触发条件
  15. 输入参数
  16. 输出
  17. 3.3 编写 index.js
  18. 3.4 注册技能
  19. 在 OpenClaw 中加载技能
  20. 3.5 测试技能
  21. 四、实战:开发一个天气查询技能
  22. 4.1 选择天气 API
  23. 4.2 创建技能目录
  24. 4.3 编写 SKILL.md
  25. weather-skill
  26. 描述
  27. 触发条件
  28. 输入参数
  29. 输出
  30. 示例
  31. 4.4 编写 index.js
  32. 4.5 测试效果
  33. 五、技能开发最佳实践
  34. 5.1 错误处理要完善
  35. 5.2 返回格式要统一
  36. 5.3 技能描述要清晰
  37. 5.4 敏感操作要谨慎
  38. 六、技能发布与分享
  39. 6.1 本地技能
  40. 6.2 全局技能
  41. 6.3 分享技能
  42. 七、进阶:调用外部 API
  43. 结语
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 基于 PyQt 的人员信息管理系统实战
  • 前端高频面试题:TypeScript 核心考点与实战
  • 数字图像处理与 FPGA 实现:建立算法与硬件的思维桥梁
  • 前端流式输出实现详解:从原理到实践
  • 基于 Leaflet 与百度天气接口的空气质量 WebGIS 可视化实战
  • Java 项目实战:AI 辅助开发电商系统核心功能模块
  • Spring Data 实体属性命名避坑:MySQL 保留关键字处理
  • 基于 Python 与 OpenCV 的自动扫雷程序实现
  • RAG 评估指南:解析评估指标与代码示例
  • 基于 Leaflet 和天地图的免费运动场所 WebGIS 可视化
  • AI 辅助编程工具:GitHub Copilot 安装与使用指南
  • Python 兼职方向与接单指南:从入门到实战
  • RISC-V 智能家居中控开发实战:硬件、固件与通信全链路
  • 人工智能大模型在医疗领域的应用进展与前景
  • 近两年 PbRL 及相关强化学习论文阅读总结
  • WebPShop 插件:Photoshop 实现 WebP 格式全功能支持
  • MiniOneRec 技术解读:基于 LLM 的生成式推荐框架
  • Stable Diffusion 数据集标签编辑工具使用指南
  • Java volatile 关键字深度解析:机制、场景与避坑指南
  • 选择排序详解:直接、树形与堆排序实战

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online