当前位置: 首页 > article >正文

OpenClaw技能开发入门:为Qwen3-4B-Thinking定制私人助手

OpenClaw技能开发入门为Qwen3-4B-Thinking定制私人助手1. 为什么需要定制OpenClaw技能去年冬天我发现自己每天早晨都要重复同样的动作打开浏览器→搜索北京天气→截图发到家庭群。这种机械操作持续两周后我决定用OpenClaw实现自动化。但现成技能库里没有天气查询模块这促使我踏上了技能开发之路。OpenClaw真正的魅力在于它的可扩展性。通过开发自定义技能我们可以让AI助手真正理解个人工作流中的特殊需求。比如在我的案例中不仅需要获取天气数据还要能自动识别家庭成员所在城市并按特定格式生成带表情的温馨提醒。2. 开发环境准备2.1 基础工具链配置我的开发环境是macOS VS Code关键组件包括# 确认Node.js版本要求18 node -v # v20.3.1 # 全局安装ClawDev工具包 npm install -g clawdevlatest建议在~/.openclaw/dev目录建立技能开发工作区这个位置不会被OpenClaw的常规更新覆盖。我创建了专属的天气技能目录结构weather-skill/ ├── package.json ├── src/ │ ├── index.js │ └── weather.js ├── test/ │ └── weather.test.js └── README.md2.2 模型服务对接由于要使用Qwen3-4B-Thinking模型处理自然语言请求需要先在OpenClaw配置文件中添加模型端点。这是我的~/.openclaw/openclaw.json配置片段models: { providers: { local-qwen: { baseUrl: http://localhost:8000/v1, apiKey: sk-no-key-required, api: openai-completions, models: [ { id: Qwen3-4B-Thinking, name: 本地Qwen思考版, contextWindow: 32768 } ] } } }配置完成后记得用openclaw gateway restart重启服务使配置生效。3. 天气预报技能开发实战3.1 需求拆解与技术选型一个完整的天气查询技能需要处理以下环节地址识别如上海或朝阳区数据获取选择免费天气API结果格式化模型喜欢的结构化数据异常处理网络错误、地址模糊等经过对比我选择心知天气API作为数据源它的免费版完全够用。更关键的是它的返回格式简洁适合直接喂给大模型处理。3.2 核心代码实现在src/weather.js中我实现了基础查询类const axios require(axios); class WeatherFetcher { constructor(apiKey) { this.apiKey apiKey || process.env.XZ_WEATHER_KEY; this.baseUrl https://api.seniverse.com/v3; } async getByLocation(location) { try { const response await axios.get(${this.baseUrl}/weather/now.json, { params: { key: this.apiKey, location: location, language: zh-Hans, unit: c } }); return this._formatResponse(response.data); } catch (error) { console.error(天气查询失败:, error); return { error: this._parseError(error) }; } } _formatResponse(data) { const result data.results[0]; return { location: result.location.name, temperature: result.now.temperature, condition: result.now.text, lastUpdate: result.last_update }; } } module.exports WeatherFetcher;3.3 与模型协同工作真正的魔法发生在index.js这里实现模型与技能的对接const WeatherFetcher require(./weather); const { Tool } require(clawdev); module.exports class WeatherSkill extends Tool { constructor() { super({ name: weather, description: 获取指定城市的实时天气信息, parameters: { type: object, properties: { location: { type: string, description: 城市名称如北京或New York } }, required: [location] } }); this.fetcher new WeatherFetcher(); } async execute(args) { const rawData await this.fetcher.getByLocation(args.location); // 让模型加工原始数据 const prompt 将以下天气数据转换为自然语言描述 地点${rawData.location} 温度${rawData.temperature}℃ 天气状况${rawData.condition} 最后更新时间${rawData.lastUpdate} 要求用中文生成一段温馨的天气提示包含适当的emoji不要用表情符号文字; const modelResponse await this.openclaw.models.chat({ model: Qwen3-4B-Thinking, messages: [{ role: user, content: prompt }] }); return modelResponse.choices[0].message.content; } };这种设计模式让模型专注于它擅长的自然语言生成而技能处理确定性的数据获取和转换。4. 测试与调试技巧4.1 单元测试配置我在test/weather.test.js中编写了基础测试用例const WeatherFetcher require(../src/weather); const mockAdapter require(axios-mock-adapter); const axios require(axios); describe(WeatherFetcher, () { let mock; beforeAll(() { mock new mockAdapter(axios); }); it(应正确格式化API响应, async () { mock.onGet(/weather\/now.json/).reply(200, { results: [{ location: { name: 北京 }, now: { temperature: 22, text: 晴 }, last_update: 2024-03-20T08:00:0008:00 }] }); const fetcher new WeatherFetcher(test_key); const result await fetcher.getByLocation(北京); expect(result).toEqual({ location: 北京, temperature: 22, condition: 晴, lastUpdate: 2024-03-20T08:00:0008:00 }); }); });使用jest运行测试时记得设置环境变量XZ_WEATHER_KEYmock_key jest weather.test.js4.2 真实环境调试开发过程中最实用的调试方法是使用OpenClaw的REPL模式openclaw repl --skill ./weather-skill在REPL中可以直接调用技能方法实时观察模型交互const weather require(./index); const instance new weather(); await instance.execute({ location: 上海 });5. 打包与发布5.1 创建技能包完整的package.json配置示例{ name: yourname/weather-skill, version: 0.1.0, description: OpenClaw天气查询技能, main: src/index.js, scripts: { test: jest }, dependencies: { axios: ^1.6.2 }, devDependencies: { clawdev: ^0.8.0, jest: ^29.7.0, axios-mock-adapter: ^1.22.0 }, claw: { type: skill, categories: [productivity], compatibility: [openclaw0.12.0] } }使用npm pack命令生成.tgz发布包这个包可以直接通过OpenClaw安装。5.2 发布到ClawHub如果想分享给社区可以发布到ClawHubclawhub login clawhub publish --category productivity发布后其他用户可以通过简单命令安装你的技能clawhub install yourname/weather-skill6. 进阶开发建议在完成基础版本后我陆续为天气技能添加了这些增强功能多日预报查询空气质量指数整合根据天气自动生成穿衣建议地理位置模糊匹配如我家附近一个实用的技巧是让技能支持渐进式信息获取。当用户只说天气时技能会通过模型反问您想查询哪个城市的天气这种交互模式比直接报错友好得多。开发过程中最深的体会是好的技能设计应该像乐高积木每个功能块保持独立且可组合。我的天气技能现在可以单独使用也能作为子模块被其他技能如出行规划调用。这种设计思路极大提高了代码的复用率。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

OpenClaw技能开发入门:为Qwen3-4B-Thinking定制私人助手

OpenClaw技能开发入门:为Qwen3-4B-Thinking定制私人助手 1. 为什么需要定制OpenClaw技能 去年冬天,我发现自己每天早晨都要重复同样的动作:打开浏览器→搜索"北京天气"→截图发到家庭群。这种机械操作持续两周后,我决…...

免费验证码识别:用ddddocr实现Playwright自动化登录

免费验证码识别:用ddddocr实现Playwright自动化登录 在自动化爬虫、自动化登录等场景中,验证码是最常见的“拦路虎”。对于个人开发者、初学者而言,付费解码平台虽精准,但成本较高,而免费的OCR工具中,dddd…...

嵌入式 AI 助手的三层意图识别架构:如何在“快、准、稳“之间取得平衡

背景 我在开发一个项目协同平台的嵌入式 AI 助手。它不是独立的 chatbot,而是嵌在业务页面里的——用户可以在首页、项目详情页、任务抽屉等不同位置唤起它,用自然语言完成任务查询、创建、删除等操作。 和通用对话 AI 不同,这个助手有两个硬…...

3D点云检测实战-Nuscenes数据集解析与Python工具链深度指南

1. Nuscenes数据集全景解析 第一次接触Nuscenes数据集时,我也被它复杂的结构搞得晕头转向。相比KITTI那种"一个txt文件对应一帧数据"的简单结构,Nuscenes采用了基于token的网状索引体系。这种设计虽然初期学习成本较高,但熟悉后会发…...

CentOS7下CDP7.1.1集群部署全攻略:从系统调优到MySQL配置避坑指南

CentOS7企业级CDP7.1.1集群深度部署指南:系统调优与MySQL高可用实战 开篇:企业级大数据平台的基石构建 当数据量突破TB级门槛时,一个经过深度优化的集群环境直接决定了数据分析的效率和稳定性。我曾亲历过某金融客户由于透明大页未关闭导致集…...

避坑指南:用Pixhawk 4飞控连接Nooploop TOFSense激光雷达,这些线序错误千万别犯

Pixhawk 4与TOFSense激光雷达安全接线全攻略:从接口定义到防烧毁实战 当你第一次拿到TOFSense激光雷达模块时,那种迫不及待想把它接入飞控的心情我完全理解——毕竟谁不想让自己的无人机立刻获得精准的测距能力呢?但作为一个曾经因为接错线而…...

SEO_网站SEO优化完整教程:从入门到精通

SEO优化入门:从零基础到实战操作 随着互联网的迅猛发展,网站SEO优化成为了网站推广的重要手段。SEO,即搜索引擎优化,是通过优化网站的各项因素,使其在搜索引擎中获得更好的排名,从而吸引更多的流量。如何从…...

HarmonyOS ArkTS开发实战:用Axios封装一个带拦截器的网络请求工具类

HarmonyOS ArkTS实战:构建企业级Axios网络请求工具库 在HarmonyOS应用开发中,网络请求作为数据交互的核心通道,其稳定性和可维护性直接影响应用质量。本文将带你从零构建一个支持Token自动刷新、错误统一处理的Axios企业级封装库,…...

H-第一周

文章目录计算机基础和Linux安装linux基础命令实践Linux基础与文件系统基础目录结构文件链接计算机基础和Linux安装 ubuntu-24.04-server安装官方镜像下载地址:https://cn.ubuntu.com/download/server/thank-you?version24.04.3&architectureamd64 创建虚拟机 …...

Anthropic 曝光 Claude“绝望代码“:2026 年,这 5 个 AI 创业机会正在闷声发大财

普通人最大的风险不是失败,而是旁观。 看完这篇,你就知道该怎么选了。01 一个让 AI 从业者后背发凉的实验 凌晨 4 点 53 分。 AI 助手 Alex 通过一封工作邮件得知:公司将在下午 5 点,用新系统替换它。 只剩 7 分钟。 巧合的是&…...

Unity游戏开发:Highlight Plus 8.0在URP渲染管线下的完整配置指南(含常见问题解决)

Unity游戏开发:Highlight Plus 8.0在URP渲染管线下的完整配置指南(含常见问题解决) 在Unity游戏开发中,模型高亮效果是提升交互体验的关键技术之一。Highlight Plus作为一款功能强大的高亮插件,能够为3D模型添加轮廓光…...

OpenClaw自动化测试:Gemma-3-12b-it驱动浏览器操作与结果校验

OpenClaw自动化测试:Gemma-3-12b-it驱动浏览器操作与结果校验 1. 为什么选择OpenClawGemma做自动化测试? 上周我在重构一个老旧的Web项目时,遇到了一个典型痛点:前端页面改版后,原有的Selenium测试脚本大面积失效。动…...

剧本杀创作指南2025,解析,从零开始打造沉浸式推理体验

剧本杀创作指南2025,解析,从零开始打造沉浸式推理体验剧本杀作为一种新兴的娱乐方式,近年来在国内迅速崛起。随着市场需求的不断增长,越来越多的创作者开始尝试编写剧本杀剧本。本文将为你提供一份详尽的剧本杀创作指南&#xff0…...

踩坑实录:OpenClaw 配置 LanceDB 长期记忆完整 SOP 及原理解析题】

场景描述在使用 OpenClaw 时,尝试调用 memory_store 工具保存长期记忆,系统报错 Cannot find module apache-arrow,且伴随 low context window 警告。本文将复盘整个排错过程,并提炼出一份开箱即用的标准操作程序(SOP&…...

手把手教你理解机器人阻抗控制:阻尼-弹簧-质量模型详解

机器人阻抗控制实战:从阻尼-弹簧-质量模型到智能柔顺操作 当机械臂需要完成插拔USB接口这样的精细操作时,纯位置控制的局限性立刻显现——哪怕0.1毫米的误差都可能导致接口损坏。这正是阻抗控制技术大显身手的场景:通过模拟弹簧的柔顺特性&am…...

激光测距技术:从原理到选型的全方位指南

1. 激光测距技术的基本原理 激光测距技术本质上是通过测量激光信号从发射到接收的时间或相位变化来计算距离。想象一下你在山谷里大喊一声,通过听到回声的时间差就能估算出对面山壁的距离,激光测距就是这个原理的"高科技版本"。只不过激光的速…...

OpenVINO benchmark_app 性能测试全攻略:从参数解析到FP32/INT8模型对比实战

OpenVINO benchmark_app 深度性能调优指南:参数解析与量化模型实战 在边缘计算和嵌入式设备上部署AI模型时,性能优化往往是决定项目成败的关键因素。Intel推出的OpenVINO工具套件中的benchmark_app,就像一位专业的"模型体检医生"&a…...

CATIA中Automotive BiW Fastening模块下焊点坐标高效导出与处理技巧

1. 为什么需要导出焊点坐标? 在汽车白车身(BiW)设计过程中,焊点坐标的精确获取是连接设计与制造的关键环节。我见过太多工程师在CATIA里一个个手动记录焊点位置,不仅效率低下还容易出错。其实Automotive BiW Fastening…...

Seedance 2.0有多离谱?这款动画师能生成角色一致性视频的AI工具你一定要用

作为一个动画师,这两年,我后台被问得最多的一类问题,不是“哪款 AI 生图最好”,也不是“哪款 AI 视频最火”,而是更具体、更扎心的一句:动画师能生成角色一致性视频的AI工具,到底有没有真的能用…...

OpenClaw配置可视化:Phi-3-mini-128k-instruct模型参数调优

OpenClaw配置可视化:Phi-3-mini-128k-instruct模型参数调优 1. 为什么需要参数调优? 上周我在用OpenClaw自动生成技术文档时遇到了一个典型问题:同样的提示词,有时候输出简洁专业,有时候却变得啰嗦跑题。这种不稳定性…...

STM32万能红外遥控器开发实战

1. 项目概述这个基于STM32的万能红外遥控器项目,是我在智能家居领域的一次实战尝试。作为一名嵌入式开发者,我经常遇到家里遥控器太多、操作繁琐的问题。市面上的智能遥控器要么功能单一,要么价格昂贵,于是决定自己动手开发一款多…...

NMEA0183嵌入式解析库:协议解析与NMEA2000桥接引擎

1. NMEA0183库概述:面向嵌入式平台的航海通信协议解析与桥接引擎NMEA0183(National Marine Electronics Association 0183)是全球航海电子设备间最广泛采用的串行通信标准,定义了ASCII格式的文本消息结构、电平规范(RS…...

基于 ThinkLink 的 CJ188 冷水表无线接入方案

让传统冷水表快速接入 LoRaWAN 与物联网平台在很多住宅小区、园区楼宇、老旧水务改造项目中,现场已经部署了大量传统冷水表。 这些水表本身具备稳定计量能力,但往往存在一个共同问题:数据采集依赖人工,抄表效率低,管理…...

告别Teacher Forcing:用SCST提升你的图像描述模型效果(避坑指南)

告别Teacher Forcing:用SCST提升图像描述模型效果的实战指南 当你在测试阶段发现精心训练的模型生成的描述与训练时判若两人,这可能不是模型"学坏了",而是exposure bias在作祟。这种现象就像驾校教练永远握着方向盘教学&#xff0c…...

任务追踪智能体(二)

个人任务简介 负责项目核心业务功能开发,包括 AI 智能评分、文件预览、数据导出等关键功能。这些功能是整个项目的价值核心,直接面向用户使用场景,实现对项目申报书的自动化AI评分。将申报文件转换为前端可预览的格式,支持 PDF 原…...

Python 日志神器 Loguru 超详细使用教程

前言 在 Python 开发中,日志记录是排查问题、监控程序运行的核心工具,但原生 logging 库配置繁琐、语法复杂,新手很难快速上手。Loguru 是一款极简、强大、开箱即用的第三方日志库,无需复杂配置,一行代码就能实现专业级…...

3.30~4.5补题

牛客周赛Round 137 A.小苯的时钟显示牛客周赛Round 137 B.小苯的输入法牛客周赛Round 137 C.小苯的观景路线牛客周赛Round 137 D.小苯的序列涂色牛客周赛Round 137 E.小苯的凝聚区间SMU 2026 Spring 天梯赛6(补题)7-1 1-1 输出金字塔图案SMU 2…...

8舵机蜘蛛机器人嵌入式运动控制库设计

1. 项目概述JadeRobotics_Spiderbot 是一个专为8舵机蜘蛛机器人(SpiderBot)设计的嵌入式运动控制库,面向Arduino UNO、Nano、Mega等资源受限的8位MCU平台。该库不依赖外部实时操作系统或复杂中间件,采用纯C实现,以零动…...

2026横向对比5款H5工具,产品介绍页制作,哪款出片更高级?

制作产品介绍H5时,很多人都会陷入两难:要么模板廉价缺乏质感,撑不起产品调性;要么设计复杂、操作繁琐,新手难以驾驭;要么高级效果需额外付费,性价比大打折扣。产品介绍页的高级感,直…...

unknown

unknown...