【技能开发】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

彻底解决 ComfyUI Mixlab 插件 Whisper.available False 的报错

彻底解决 ComfyUI Mixlab 插件 Whisper.available False 的报错

https://github.com/MixLabPro/comfyui-mixlab-nodes 彻底解决 ComfyUI Mixlab 插件 Whisper.available False 的报错 在 ComfyUI 中安装 Mixlab Nodes 插件后,控制台显示其他节点正常,便 Whisper.available False。即使环境里安装了 openai-whisper 和 faster-whisper,问题依然可能存在。 Whisper.available False 本文将分享如何通过修改 __init__.py 进行深度 Debug,并修复 Whisper.py 中的路径逻辑漏洞。 1. 深度排查:让报错“开口说话” Mixlab 的默认日志只提示 False,不显示原因。为了抓出真凶,

N46Whisper:让日语视频字幕制作变得如此简单

N46Whisper:让日语视频字幕制作变得如此简单 【免费下载链接】N46WhisperWhisper based Japanese subtitle generator 项目地址: https://gitcode.com/gh_mirrors/n4/N46Whisper 还在为日语视频制作字幕而头疼吗?N46Whisper正是你一直在寻找的智能解决方案!这款基于云端AI技术的日语语音识别工具,彻底改变了传统字幕制作的繁琐流程,让每个人都能轻松上手。 为什么你需要这款工具 想象一下,原本需要数小时手动打字的工作,现在只需要几分钟就能完成。这就是N46Whisper带来的效率革命: * 零门槛使用:无需安装任何软件,打开浏览器就能开始工作 * AI精准识别:采用先进的Whisper技术,日语语音识别准确率惊人 * 云端极速处理:借助Google Colab的强大计算能力,处理速度超乎想象 * 双格式支持:ass和srt两种主流格式任你选择 快速入门:三步搞定日语字幕 第一步:准备环境 打开Google Colab,上传N46Whisper.ipynb文件,系

AIGC大模型系统化学习路径:从理论到工业级实战指南

快速体验 在开始今天关于 AIGC大模型系统化学习路径:从理论到工业级实战指南 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 AIGC大模型系统化学习路径:从理论到工业级实战指南 背景痛点分析 当前开发者在AIGC应用落地过程中普遍面临三大核心挑战: 1. 模型选择困难症:开源模型如GPT-3、Claude、LLaMA等参数规模从7B到175B不等,不同架构的推理效果与计算成本差异显著。部分团队盲目追求大参数模型,导致推理延迟超标。

AMD显卡终极兼容指南:llama.cpp Vulkan后端快速解决方案

AMD显卡终极兼容指南:llama.cpp Vulkan后端快速解决方案 【免费下载链接】llama.cppPort of Facebook's LLaMA model in C/C++ 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp 你是否在AMD显卡上运行llama.cpp时遇到过Vulkan初始化失败或推理速度异常的问题?本文为你提供一套完整的AMD显卡兼容性解决方案,让你轻松解决llama.cpp在AMD设备上的各种疑难杂症。通过本指南,你将掌握从驱动优化到性能调优的全套技巧,让大语言模型在AMD显卡上流畅运行。 AMD显卡兼容性问题深度解析 AMD显卡用户在使用llama.cpp的Vulkan后端时,主要面临三大挑战: 驱动版本不匹配:不同世代的AMD显卡对Vulkan API的支持程度存在差异,特别是RDNA架构的RX 6000/7000系列。 内存管理冲突:AMD的显存分配策略与llama.cpp的预期存在偏差,导致模型加载失败。 着色器编译异常:特定驱动版本在编译SPIR-V着色器时会产生无效