OpenClaw Skill 技能开发教程:从零写一个 Code Review 技能,2026 实战版

发布时间:2026/7/4 20:35:40

OpenClaw Skill 技能开发教程:从零写一个 Code Review 技能,2026 实战版 上周热榜有老哥写了个 code-review 的 Agent Skill 火了我手痒也去折腾了一下 OpenClaw 的 Skill 开发。说实话一开始文档看得我一脸懵搞了两天才把整个流程跑通。踩完坑回头看核心逻辑其实不复杂但确实有几个细节没人讲清楚。今天把完整开发过程写出来包括怎么注册 Skill、怎么接大模型 API、怎么调试上线。整个流程是定义技能描述文件skill.yaml→ 编写技能处理函数 → 接入大模型 API 做实际推理 → 本地调试 → 发布到 OpenClaw 技能市场。你只需要会写 Python/TypeScript不用额外学什么新框架。先说结论步骤耗时难度关键注意点环境搭建10 分钟⭐Node.js 18 或 Python 3.10skill.yaml 编写15 分钟⭐⭐参数 schema 定义容易漏字段处理函数开发30-60 分钟⭐⭐⭐大模型 API 调用 prompt 调优本地调试20 分钟⭐⭐openclaw dev热加载有 bug发布上线5 分钟⭐审核大概 1-2 小时通过我的 code-review 技能从开始写到发布上线总共花了大概半天。下面一步步来。环境准备先确保你装了 OpenClaw CLI这是 2026 新版本的安装方式# npm 全局安装 openclaw clinpminstall-gopenclaw/clilatest# 验证版本我写这篇文章时是 v2.3.1openclaw--version# 登录你的 OpenClaw 账号openclaw login然后初始化一个 Skill 项目# 创建技能项目骨架openclaw skill init my-code-review# 目录结构长这样# my-code-review/# ├── skill.yaml # 技能描述文件核心# ├── src/# │ └── handler.ts # 技能处理函数# ├── tests/# │ └── handler.test.ts # 测试文件# └── package.json方案一用 TypeScript 写 Skill推荐第一步定义 skill.yaml这个文件是 OpenClaw 识别你技能的「身份证」写错了后面全白搭。# skill.yamlname:code-review-assistantversion:1.0.0description:自动审查代码给出改进建议、潜在 bug 提示和最佳实践推荐author:your-username# 技能触发方式trigger:type:commandcommand:/review# 输入参数定义input:schema:type:objectproperties:code:type:stringdescription:需要审查的代码片段language:type:stringdescription:编程语言enum:[javascript,typescript,python,go,java,rust]level:type:stringdescription:审查严格程度enum:[casual,standard,strict]default:standardrequired:[code,language]# 输出格式output:type:markdown# 运行时配置runtime:engine:nodetimeout:30000memory:256input.schema.properties里每个字段的description别偷懒不写OpenClaw 的 Agent 调度器靠这个理解你的 Skill 接受什么参数。我第一次没写 description结果 Agent 死活不知道怎么调用我的技能。第二步编写处理函数核心逻辑就这一条线拿到用户提交的代码 → 构造 prompt → 调大模型 API → 返回结构化审查结果。// src/handler.tsimportOpenAIfromopenai;interfaceSkillInput{code:string;language:string;level?:casual|standard|strict;}interfaceSkillContext{env:Recordstring,string;}// OpenClaw 要求导出一个 handler 函数exportasyncfunctionhandler(input:SkillInput,context:SkillContext){const{code,language,levelstandard}input;// 初始化 OpenAI 兼容客户端constclientnewOpenAI({apiKey:context.env.LLM_API_KEY,baseURL:https://api.ofox.ai/v1,// 聚合接口一个 Key 调用多种模型});conststrictnessPrompt{casual:只指出明显的 bug 和安全问题风格问题忽略,standard:检查 bug、性能、可读性、最佳实践给出改进建议,strict:严格审查所有方面包括命名规范、边界情况、类型安全、错误处理、性能优化,};constresponseawaitclient.chat.completions.create({model:claude-sonnet-4.6,// 代码审查用 Claude 效果最好messages:[{role:system,content:你是一个资深代码审查专家精通${language}。 审查标准${strictnessPrompt[level]}输出格式要求 ## 严重问题 ## 改进建议 ## 做得好的地方 ## 重构示例如有必要 每个问题标注行号给出修改前后对比。,},{role:user,content:请审查以下${language}代码\n\n\\\${language}\n${code}\n\\\,},],temperature:0.3,max_tokens:2000,});return{type:markdown,content:response.choices[0].message.content,};}第三步配置环境变量在项目根目录创建.env文件# .env本地开发用不要提交到 gitLLM_API_KEYyour-ofox-api-key发布后在 OpenClaw 控制台的「Skill Settings → Environment Variables」里配置线上环境变量。方案二用 Python 写 Skill如果你更熟悉 PythonOpenClaw 同样支持openclaw skill init my-code-review--runtimepython# src/handler.pyfromopenaiimportOpenAIdefhandler(input_data:dict,context:dict)-dict:codeinput_data[code]languageinput_data[language]levelinput_data.get(level,standard)clientOpenAI(api_keycontext[env][LLM_API_KEY],base_urlhttps://api.ofox.ai/v1)responseclient.chat.completions.create(modelclaude-sonnet-4.6,messages[{role:system,content:f你是资深{language}代码审查专家...},{role:user,content:f审查代码\n{language}\n{code}\n}],temperature0.3)return{type:markdown,content:response.choices[0].message.content}Python 版逻辑一模一样选哪个纯看个人偏好。整体架构技能调用链路长这样大模型 API你的 SkillOpenClaw Agent用户大模型 API你的 SkillOpenClaw Agent用户发送 /review 命令 代码解析 skill.yaml匹配参数调用 handler(input, context)发送 prompt 代码返回审查结果返回 markdown 格式结果展示代码审查报告本地调试 → 发布# 本地启动调试服务器openclaw dev# 会在 localhost:7891 启动一个测试界面# 你可以直接输入参数测试 Skill# 跑单元测试openclawtest# 一切没问题发布到技能市场openclaw skill publish踩坑记录坑 1openclaw dev热加载偶尔不生效。改了 handler.ts 保存后没反应得手动 CtrlC 重启。翻了 GitHub Issues 发现是已知 bug暂时没修。临时解法是加--no-cache参数openclaw dev --no-cache。坑 2skill.yaml 里enum字段的值必须是字符串数组。我一开始写成enum: [casual, standard, strict]没加引号YAML 解析没报错但 OpenClaw 运行时校验直接 500。查了半小时才发现是这个。坑 3timeout设太短会被掐。默认 10 秒调大模型 API 如果代码片段长一点很容易超时。我直接改成 3000030 秒基本够用。用的模型推理慢的话可以加到 60000。坑 4context.env本地和线上取值方式一样但配置位置不同。本地读.env文件线上在控制台配。别把 API Key 硬编码在代码里提交上去我看到好几个人在技能市场的开源 Skill 里这么干……小结OpenClaw Skill 的开发体验比我预期顺滑本质上就是写一个函数接收结构化输入返回结构化输出。重点两个skill.yaml 的参数定义要精确Agent 靠这个理解怎么调用你的技能prompt 要花时间调优直接决定输出质量。模型选择上代码审查场景我测下来 Claude Sonnet 4.6 效果最好GPT-5 也不错但对某些语言的边界 case 判断不如 Claude。我用的是 ofox.ai 的聚合接口换模型只改一个 model 参数不用折腾不同的 SDK 和鉴权方式。ofox.ai 是一个 AI 模型聚合平台一个 API Key 可以调用 Claude 4.6、GPT-5、Gemini 3 等 50 多种模型兼容 OpenAI 协议按量计费调试阶段挺方便。想写自己的 Skill 的话建议从小功能开始比如代码格式化、commit message 生成这种先把流程跑通再做复杂的。有问题评论区聊。

相关新闻