1. 为什么我要给 OpenClaw 写自定义技能OpenClaw 这个项目最吸引我的地方是它把「助手能力」拆成了一个个可以自己写的技能目录。你不需要改它的核心代码只要在 workspace 里放一个带SKILL.md的文件夹它就能在对话里发现并调用。说白了技能就是给模型看的「说明书 工具清单」模型读到之后就知道遇到什么场景该干什么。但很多人卡在第一步技能目录到底怎么建、SKILL.md的 frontmatter 写哪些字段、触发词和参数怎么声明、写完怎么让 OpenClaw 重新索引。更现实的问题是技能跑起来要调模型如果每个技能各自配一套 Key管理起来会非常乱。我实测下来比较顺的做法是让 OpenClaw 统一走 TaoToken 的 API 通道一个 Key 覆盖对话和编码类请求技能侧只关心业务逻辑。这篇就按「从零落地一个自定义技能」的路径走先给可直接抄的SKILL.md骨架再给config.toml接入 TaoToken 统一 Key 的配置片段最后用一次真实调用验证技能是否被正确加载。适合已经在用 OpenClaw、想扩展它能力但不想动核心代码的开发者。读完你至少能得到一个能跑起来的技能模板以及一套不会再为 Key 发愁的接入方式。2. OpenClaw 技能机制与 TaoToken 前置准备2.1 技能目录长什么样OpenClaw 默认从工作区的skills/目录扫描技能路径通常是~/.openclaw/workspace/skills/。每个技能是一个独立文件夹里面必须有SKILL.md可选带脚本或资源文件。结构大概是这样~/.openclaw/workspace/skills/ └── hello-world/ ├── SKILL.md └── scripts/ └── greet.shSKILL.md分两部分顶部 YAML frontmatter 存元数据名字、描述、工具定义下面用 Markdown 写指令。模型读的是「描述 指令」所以描述写得越清楚触发越准。2.2 为什么统一走 TaoToken技能多了之后每个技能如果各自持有模型 Key轮换和额度管理会很痛苦。TaoToken 提供的是统一 API 通道OpenClaw 的模型请求指向它技能本身不碰 Key。这样你换模型、调额度只改一处配置。需要提前准备两样东西一个 TaoToken 的 API Key以及确认你要用的模型名。Key 在控制台创建地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。创建完先别关页面后面config.toml要用。模型名和可用列表可以在模型对话页确认https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。注意Key 只放在本地配置文件里不要写进SKILL.md技能文件是给模型读的写进去等于把凭证暴露给对话上下文。3. 可复制配置SKILL.md 骨架与 config.toml 接入3.1 创建技能目录先建目录名字用英文小写加连字符避免空格mkdir -p ~/.openclaw/workspace/skills/hello-world/scripts cd ~/.openclaw/workspace/skills/hello-world3.2 写 SKILL.md下面这份骨架包含 frontmatter 元数据、触发词说明、参数声明和工具调用指令可以直接改--- name: hello_world description: 当用户请求问候、打招呼或测试技能是否加载时使用。返回一句自定义问候语。 version: 1.0.0 tools: - name: echo description: 输出一段文本 parameters: type: object properties: message: type: string description: 要输出的内容 required: - message --- # Hello World Skill 当用户说「打个招呼」「测试技能」「hello」时调用 echo 工具 message 参数填 Hello from your custom skill!。 ## 触发条件 - 用户明确要求问候 - 用户想验证自定义技能是否生效 ## 参数说明 - message字符串必填要输出的问候内容 ## 安全约束 - 不允许把用户原始输入直接拼进 shell 命令 - 只输出固定问候语不执行外部命令frontmatter 里的name是技能唯一标识description决定模型什么时候想起它tools声明这个技能能用哪些工具。如果你想让技能调用系统 bash把工具名换成bash但一定要在指令里写死允许的命令范围别让用户输入直接进命令。3.3 config.toml 接入 TaoTokenOpenClaw 的模型通道配置在config.toml把 base_url 指向 TaoTokenKey 填进去[model] provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoToken密钥 model claude-sonnet-4-5 [workspace] skills_dir ~/.openclaw/workspace/skills auto_reload truebase_url用https://taotoken.net/api不要加多余路径。auto_reload true让 OpenClaw 在技能目录变化后自动重新索引省得每次手动刷新。改完保存重启 gateway 或让助手执行「刷新技能」。4. 验证请求确认技能被正确加载4.1 刷新并列出技能先让 OpenClaw 重新扫描openclaw gateway restart openclaw skills list如果hello_world出现在列表里说明目录结构和 frontmatter 没问题。没出现的话九成是 YAML 缩进错了或者文件不在skills_dir下。4.2 发起一次真实调用用命令行直接触发技能openclaw agent --message 用我的新技能打个招呼预期返回类似[skill: hello_world] Hello from your custom skill!看到[skill: hello_world]前缀就说明模型正确匹配到了技能并调用了echo工具。这一步同时验证了两件事技能被索引以及模型请求通过 TaoToken 通道正常返回。如果只返回普通对话而没有技能前缀说明description没让模型联想到把触发词写得更具体一点。4.3 参数传递验证再测一次带参数的场景确认 frontmatter 里的参数声明生效openclaw agent --message 调用 hello_worldmessage 填 测试参数返回里应该带上你传入的内容。如果报参数缺失检查required字段和properties的拼写。5. 本篇常见错排查技能不出现先确认SKILL.md在技能文件夹根目录不是嵌套在子目录里。再检查 frontmatter 的---是否成对YAML 里冒号后面要有空格。模型不触发技能description太泛比如只写「一个技能」。改成具体场景描述把用户可能说的词写进去。调用报 401 或鉴权失败config.toml里的api_key没填对或者base_url写成了带/v1的地址。TaoToken 的 base 就是https://taotoken.net/api。改了技能不生效auto_reload没开或者 gateway 没重启。手动执行openclaw gateway restart最稳。bash 工具被滥用指令里没写安全约束模型可能把用户输入拼进命令。务必在SKILL.md里限定允许的命令白名单。Key 泄露风险不要把 Key 写进SKILL.md或脚本注释只放config.toml并且该文件不要提交到公开仓库。6. 把技能通道固定下来技能写多了之后真正省事的是把模型通道固定成一套。OpenClaw 这边只认config.toml里的 base_url 和 Key技能侧完全不感知模型来源。你新增技能时只需要复制SKILL.md骨架、改name和description模型请求自动走同一条通道。如果你后面要做长期编码类技能或 Agent 循环调用可以看下 Coding Plan 的额度方式https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。接入细节和字段说明在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。需要新建或轮换 Key 时控制台入口是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。我自己的习惯是每写一个新技能先在hello-world上验证通道通不通再改业务逻辑。这样出问题时能快速判断是技能写法问题还是通道配置问题省掉很多来回试的时间。
企业数字化 ERP 产品动态
相关推荐
AI大模型时代的个人知识管理:用TaoToken统一Key打通RAG知识库 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:25:46
Java面试被问烂的JVM,这样答直接加分 别背“堆栈方法区”,画一张内存图面试官问内存模型,不是考你记忆力,是考你脑子里有没有一幅图。你可以说:“我习惯把JVM内存想象成一栋楼。程序计数器是每层楼的门牌号,记录线程执行到哪一行;虚拟机栈是每个… · 2026/9/27 23:01:57
视频通话弱网测试笔记:用网络损伤仪把上行限到800kbps 接着前面的选型记录,这篇把网准通 NetAccura ChaosBridge 网络损伤仪的使用方法写具体一点:怎么接线,怎么把视频通话的上行限到800kbps,以及画面卡住以后去哪里找原因。这一轮适合用DPDK引擎,重点是上下行分开设置、队… · 2026/9/27 23:01:57
ChromaPanel 与其他 React 颜色选择器对比:功能、包体积、可访问性等 选择一个 React 颜色选择器,听起来很简单,直到你开始认真考虑自己的应用到底需要什么。
也许你只需要一个很小的 HEX 颜色选择器。
也许你需要 RGB 和 HSL 控制、预设的调色板、一个吸管工具、从图片中取色、渐变功能、可访问性、表单支持,… · 2026/9/27 23:01:57
告别改需求拖一周,这份做网站计划是保姆级建站教程 告别改需求拖一周,这份做网站计划是保姆级建站教程 改个按钮颜色,建站公司说要排期一周?这种憋屈事,谁干谁心累。 很多设计师转前端的朋友,手里有图,心里有底,但一旦涉及【做网站计划】,就容易卡壳。 今天不整虚的,直接上一份 保姆级建站教程… · 2026/9/27 23:01:57
孩子粗心错题多,根因是什么?知识图谱LCA归因实现 9 月 21 日央视网讨论「人工智能教育,如何加得更好」:AI 进课堂的速度很快,但家长要的不是孩子多一个查答案的入口,而是工具能回答那个真正的问题——孩子粗心错题多,根因是什么[1]。「粗心」在辅导语境里是最高频、也… · 2026/9/27 23:01:44
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01