【技能开发】OpenClaw 技能开发入门:让你的 AI 学会新本事

【技能开发】OpenClaw 技能开发入门:让你的 AI 学会新本事

目录

前言:从"会聊天"到"会做事"

一、什么是 OpenClaw 技能?

1.1 概念解析

1.2 技能的工作原理

1.3 内置技能 vs 自定义技能

二、技能开发前置知识

2.1 你需要会什么?

2.2 开发环境准备

三、第一个技能:Hello World

3.1 技能目录结构

3.2 编写 SKILL.md

3.3 编写 index.js

3.4 注册技能

3.5 测试技能

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

4.1 选择天气 API

4.2 创建技能目录

4.3 编写 SKILL.md

4.4 编写 index.js

4.5 测试效果

五、技能开发最佳实践

5.1 错误处理要完善

5.2 返回格式要统一

5.3 技能描述要清晰

5.4 敏感操作要谨慎

六、技能发布与分享

6.1 本地技能

6.2 全局技能

6.3 分享技能

七、进阶:调用外部 API

结语


前言:从"会聊天"到"会做事"

哈喽各位,我是攀哥!前两篇咱们搞定了部署安装和人格定制,有朋友问:"攀哥,我的 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`; https.get(url, (res) => { let; 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
  • OpenClaw 社区

让更多人使用你的技能!

七、进阶:调用外部 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. 错误处理和文档很重要

下一篇咱们聊聊《OpenClaw 高级玩法:多会话管理与子代理 orchestration》,敬请期待!🦞

Read more

如何有效解决 Trae 上下文丢失问题——让 AI 记住你的代码与需求

在日常使用 Trae(AI 编程助手或 IDE 插件)进行开发时,许多开发者会遇到一个典型困扰:上下文丢失。具体表现为:当我们切换到另一个文件、开启新对话,或者在一次长会话中讨论多个主题后,AI 似乎“忘了”之前提到的代码结构、变量定义、函数用途,甚至是项目的业务规则和约束。这会导致重复解释、生成不符合需求的代码,甚至需要反复澄清,影响工作效率。 一、为什么会出现上下文丢失? 1. 模型 token 长度限制 Trae 背后的 AI 模型在一次推理中能处理的上下文长度是有限的(即 token 上限)。一旦对话或代码量超出这个限制,较早的内容会被截断或丢弃,AI 就无法再引用它们。 2. 会话与文件的切换 在不同的文件、标签页或对话主题之间切换时,如果没有显式传递原有背景,Trae 并不会自动将这些历史信息带入新场景。 3. 缺乏显式的上下文注入

Claude Code安装与使用完全指南:2026 年最前沿的 AI 编程助手

Claude Code安装与使用完全指南:2026 年最前沿的 AI 编程助手

文章目录 * 前言 * 一、什么是 Claude Code? * 1.1 定义与定位 * 1.2 技术优势 * 二、安装前的环境准备 * 2.1 系统要求 * 2.2 前置依赖 * 三、Claude Code 全平台安装教程 * 3.1 安装方式对比 * 3.2 Windows 系统安装 * 3.3 macOS 系统安装 * 3.5 安装后初始化 * 四、配置与优化 * 4.1 配置文件位置 * 4.2 跳过新手引导 * 4.3 接入国产大模型(免翻墙方案)

【证书】2025上海市人工智能训练师—高级/三级考试介绍与复习(SJTU版)

【证书】2025上海市人工智能训练师—高级/三级考试介绍与复习(SJTU版) 文章目录 * 1、考试介绍 * 2、考试复习 * 2.1 理论知识 * 2.2 实践知识 1、考试介绍 职业定义1 * 标准名称:人工智能训练师 * 国家职业编号:4-04-05-05 * 职业内容:使用智能训练软件, 在人工智能产品实际使用过程中进行数据库管理、 算法参数设置、 人机交互设计、 性能测试跟踪及其他辅助作业的人员。 职业技能等级 * 本职业共设 5 个等级,分别为: 五级/初级工、四级/中级工、(约对标初级职称) 三级/高级工、(约对标中级职称) 二级/技师、一级/高级技师 (约对标高级职称) 人工智能训练师(上海市) * 项目鉴定单位为:

AI实践(7)工具函数调用

AI实践(7)工具函数调用

AI实践(8)工具函数调用 Author: Once Day Date: 2026年3月2日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: AI实践成长_Once-Day的博客-ZEEKLOG博客 参考文章:Prompt Engineering Guide提示词技巧 – Claude 中文 - Claude AI 开发技术社区Prompting strategies for financial analysis | ClaudeDocumentation - Claude API DocsOpenAI for developers在LLM中调用函数 | Prompt Engineering GuideAI大模型Function Call技术教程:从入门到精通-ZEEKLOG博客详解 OpenAI 函数调用(Function Calling):让模型具备数据获取与行动能力 - 大A就是我 -