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

WebGIS视角下基孔肯雅热流行风险地区分类实战解析

WebGIS视角下基孔肯雅热流行风险地区分类实战解析

目录 前言 一、关于基孔肯雅热 1、病原学特征 2、流行病学特征 3、疫情处置 4、预防措施 二、流行风险地区空间可视化 1、流行风险地区分类标准 2、空间查询基础 3、Leaflet空间可视化 三、流行风险地区WebGIS展示 1、Ⅰ类地区 2、Ⅱ类地区 3、Ⅲ类地区 4、Ⅳ类地区 四、总结 前言         在全球化与城市化进程不断加速的当下,传染病的传播范围与速度呈现出前所未有的态势,给公共卫生安全带来了严峻挑战。基孔肯雅热作为一种由基孔肯雅病毒引起的急性传染病,近年来在多个地区引发疫情,其传播速度快、感染范围广,且易与其他蚊媒传染病叠加流行,严重威胁着人类健康和社会稳定。准确划分基孔肯雅热流行风险地区,对于制定科学合理的防控策略、优化医疗资源配置以及提高公众防范意识具有至关重要的意义。         本研究旨在通过系统梳理 WebGIS 技术在传染病流行风险评估中的应用现状与优势,结合基孔肯雅热的流行特点和防控需求,构建一套基于

CVE-2026-21962漏洞利用工具:Oracle WebLogic代理插件未授权RCE检测与利用

CVE-2026-21962 - Oracle WebLogic Server Proxy Plug-In RCE 项目描述 该项目提供了一个针对Oracle WebLogic Server代理插件(Proxy Plug-In)中一个关键安全漏洞(CVE-2026-21962)的漏洞利用概念验证(PoC)脚本。该漏洞允许未经验证的远程攻击者通过HTTP协议在受影响的服务器上执行任意操作系统命令,风险等级极高(CVSS 10.0)。 影响组件: * Oracle HTTP Server(版本12.2.1.4.0、14.1.1.0.0、14.1.2.0.0) * Oracle WebLogic Server代理插件(用于Apache HTTP Server和Microsoft IIS)

Gemini 无损去水印神器:基于数学算法的纯前端解决方案

Gemini 无损去水印神器:基于数学算法的纯前端解决方案

🎯 Gemini 无损去水印神器:基于数学算法的纯前端解决方案 🔗 项目地址:gemini-watermark-remover 🌐 在线体验:banana.ovo.re ⭐ 如果觉得有用,请给项目点个 Star! 📖 引言 随着 Google Gemini AI 图像生成功能的普及,越来越多的用户开始使用它来创作各种精美的图片。然而,Gemini 生成的图片右下角都会带有一个半透明的水印 Logo,这在某些场景下可能会影响图片的使用效果。 今天给大家推荐一个开源项目 gemini-watermark-remover,它能够完美无损地移除 Gemini 图片上的可见水印,而且完全在浏览器端运行,无需上传图片到服务器,充分保护用户隐私! ✨ 核心特性 🔒 100% 客户端处理,隐私至上 * 无需后端服务器:所有图片处理都在浏览器本地完成 * 零数据上传:图片永远不会离开你的设备 * 即开即用:打开网页即可使用,无需注册登录 🎯 数学精确,非 AI 模型 * 基于反向 Alpha 混合算法(

WebAssembly (WASM) 运行时沙箱逃逸与内存安全实战研究

前言 1. 技术背景 在现代攻防体系中,WebAssembly (WASM) 正迅速成为一个新的攻击与防御焦点。它最初被设计为浏览器内的高性能代码执行引擎,但如今已广泛应用于服务端(如云原生、边缘计算)、物联网(IoT)和区块链等领域。WASM提供了一个接近原生速度、跨平台的沙箱环境,这使得它成为隔离不可信代码的理想选择。然而,任何沙箱技术都面临着“逃逸”的风险。一旦攻击者成功从WASM沙箱中逃逸,他们便可能在宿主环境(Host Environment)中执行任意代码,构成严重的安全威胁。因此,理解WASM的沙箱机制、攻击向量和防御策略,是现代网络安全攻防不可或缺的一环。 2. 学习价值 掌握WASM的沙箱逃逸与内存安全知识,能让您解决以下关键问题: * 对于攻击方:能够审计和利用WASM应用中的漏洞,发现新的攻击面,尤其是在云原生和边缘计算等前沿领域。 * 对于防御方:能够构建更安全的WASM应用,正确配置和加固WASM运行时,理解潜在威胁并设计有效的检测和缓解措施。 * 对于开发者:能够编写出健壮、安全的WASM模块,避免常见的内存安全陷阱,从源头上杜绝漏洞。 3