1. 为什么我劝你先搞懂 skill-creator 再动手写技能Hermes Agent 里的 skill-creator 是一个「元技能」——它本身就是一个技能专门用来帮你造别的技能。你可以把它理解成一个技能脚手架生成器你负责用大白话描述需求它负责把需求翻译成符合规范的 SKILL.md、测试用例和可安装的技能包。适合谁适合那些想让 Agent 记住自己工作流、又不想手写一堆 YAML 前置元信息的人。我见过太多人卡在两个地方一是 SKILL.md 的元信息字段写错导致技能加载了但触发不了二是技能里调用模型时把 Key 硬编码进去换台机器就废。这篇就按「从 SKILL.md 到 TaoToken 接入」这条线走一遍给你能直接复制的模板、skill-creator 的命令清单以及一条 curl 验证技能加载与调用的具体动作。核心检索词先摆出来Hermes Agent 技能创建、SKILL.md 模板、skill-creator 用法、AI 技能接入统一 API 通道。先说清楚 skill-creator 到底能做什么。它不是一个独立运行的 CLI 工具而是挂在 Hermes/Claude 生态里的一个技能安装后你通过自然语言指令唤起它它会按 Anthropic 官方规范引导你走完需求定义、逻辑设计、文件生成、测试验证、导出安装五步。你不需要背 SKILL.md 的字段顺序但你需要知道每个字段是干嘛的否则它生成的东西你改不动。前置准备只有一条命令在终端里跑skills install skills-sh/anthropics/skills/skill-creator装完重启 Hermes 环境然后发一句「请使用 skill-creator 帮我创建一个新技能」如果 AI 能接上并开始问你技能名称、用途、输入输出说明装好了。这一步失败通常是环境没重启或者技能索引没刷新后面第五节会细说。为什么值得花时间学这个因为技能一旦建好你的 Agent 就从「每次都要重新解释一遍需求」变成「一句话触发固定流程」。比如你经常要把 Markdown 表格转成 SQL建一个技能之后以后只要说「用 markdown 表格转 SQL 处理下面这段」它自己就走完整流程。而 skill-creator 保证了这个技能的文件结构是对的不会因为元信息写错而静默失效。2. TaoToken 前置给技能一条统一的模型调用通道技能建好之后真正干活的那一步往往要调模型。如果你把 Anthropic 的 Key 直接写进 SKILL.md 或者技能脚本里会有三个麻烦换 Key 要改文件、多人协作要传 Key、不同技能各写各的调用逻辑。所以我建议在动手写技能之前先把模型调用通道统一掉用 TaoToken 作为统一入口。TaoToken 在这里的角色是「统一 Key/API 通道」你的技能只需要认一个 Base URL 和一个 Key模型 ID 在请求里指定。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 地址后面不加 UTM 参数直接用它拼请求路径。你需要准备三件套这三件套在后面的 SKILL.md 和验证请求里都会用到项目值说明Base URLhttps://taotoken.net/api所有请求的前缀不要带尾斜杠API Key在控制台创建形如sk-...只显示一次复制保存Model ID例如claude-sonnet-4-5按你实际要用的模型填拿 Key 的路径进控制台找到 API Keys 页面新建一个。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API Keys 页面是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。创建时给它起个能认出来的名字比如hermes-skill-dev方便以后按技能维度回收。这里有个容易踩的坑很多人以为技能里调模型必须用 Anthropic 原生 SDK其实不是。Hermes 技能里你完全可以用一个 shell 脚本或者 Python 脚本发 HTTP 请求只要 Base URL 和 Key 对模型 ID 对就能通。这样技能的可移植性最好——换环境只改环境变量不改技能文件。如果你打算长期跑编码类或 Agent 类技能可以顺带看一下 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 它更适合高频调用的场景。但这一节你只要记住Base URL、Key、Model ID 三件套先备好后面 SKILL.md 里会引用它们。另外如果你用的是 Claude Code 这类工具做技能调试接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有各语言的请求示例照着改 Base URL 就行。模型对话页面可以用来快速验证某个 Model ID 是否可用地址是 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。3. 可复制配置SKILL.md 模板与 skill-creator 命令清单这一节是全文最该收藏的部分。先给 SKILL.md 模板再给 skill-creator 的命令清单最后给一个把两者串起来的 settings 片段。SKILL.md 的结构分两块顶部是 YAML 前置元信息frontmatter下面正文是技能的执行说明。元信息里最关键的是name、description、version和触发条件。下面这个模板你可以直接复制把方括号里的内容替换掉--- name: markdown-table-to-sql description: 将 Markdown 表格文本解析为可执行的 SQL CREATE TABLE 语句自动推断列类型。当用户提供 Markdown 表格并要求转成 SQL 时触发。 version: 1.0.0 triggers: - markdown 表格转 SQL - 把表格转成建表语句 - table to sql inputs: - name: table_text type: string required: true description: Markdown 格式的表格文本含表头和至少一行示例数据 outputs: - name: sql type: string description: 标准 SQL CREATE TABLE 语句 env: - TAOTOKEN_BASE_URL - TAOTOKEN_API_KEY - TAOTOKEN_MODEL_ID --- # Markdown 表格转 SQL ## 执行步骤 1. 读取输入 table_text按行拆分识别表头行与分隔行。 2. 提取列名根据示例数据推断类型整数 - INTEGER小数 - REAL日期格式 - DATE其余 - TEXT。 3. 生成 CREATE TABLE 语句列名用反引号包裹末尾加分号。 4. 若表格为空或缺少分隔行返回错误说明而不是猜测。 ## 模型调用 当需要模型辅助推断复杂类型时向统一通道发请求 - Base URL: 读取环境变量 TAOTOKEN_BASE_URL - API Key: 读取环境变量 TAOTOKEN_API_KEY - Model ID: 读取环境变量 TAOTOKEN_MODEL_ID 请求路径为 ${TAOTOKEN_BASE_URL}/v1/messages请求体包含 model、max_tokens、messages 三个字段。 ## 错误处理 - 空输入返回「未检测到表格内容」。 - 缺少分隔行返回「表格格式不完整请检查 Markdown 语法」。 - 模型调用失败返回原始错误码不重试超过 2 次。注意env字段里我列了三个环境变量这是为了让技能不硬编码 Key。技能运行时从环境变量读换机器只改环境变量。接下来是 skill-creator 的命令清单。这些不是 shell 命令而是你在 Hermes 对话里发给 AI 的指令我按流程顺序列出来# 启动创建 请使用 skill-creator 帮我创建一个新技能 # 需求定义阶段按提示回答 技能名称markdown 表格转 SQL 用途自动解析 Markdown 表格生成 SQL 建表语句 输入Markdown 格式的表格文本 输出可执行的 SQL CREATE TABLE 语句 # 设计确认阶段如需调整 增加对日期类型的识别和处理 输出时添加主键和注释 # 生成文件后要求导出 请导出技能包并给出安装命令 # 中断后恢复 请继续使用 skill-creator 完成之前的技能创建流程 # 优化已有技能 请使用 skill-creator 优化当前已安装的 markdown 表格转 SQL补充边界场景处理导出后你会拿到两种安装形式命令分别是hermes skills install [生成的技能ID] hermes skills install ./你的技能目录名如果你用 Cline MCP 或者 Codex 的 auth.json 来管理模型凭证建议把三件套写进配置文件而不是散落在各个技能里。以 settings 片段为例路径按你实际环境放{ env: { TAOTOKEN_BASE_URL: https://taotoken.net/api, TAOTOKEN_API_KEY: sk-你的Key, TAOTOKEN_MODEL_ID: claude-sonnet-4-5 } }这个片段的作用是所有技能共享同一套模型调用凭证。SKILL.md 里只引用变量名不出现真实 Key。这样你以后换 Key 只改这一处。4. 验证请求一条 curl 确认技能加载与调用技能建好、环境变量配好之后别急着在对话里试。先用一条 curl 确认模型通道是通的再确认技能能被加载。顺序反了的话出问题你分不清是技能的问题还是通道的问题。先验证模型通道。这条 curl 直接打统一 API确认 Base URL、Key、Model ID 三件套有效curl -sS https://taotoken.net/api/v1/messages \ -H content-type: application/json \ -H x-api-key: $TAOTOKEN_API_KEY \ -H anthropic-version: 2023-06-01 \ -d { model: $TAOTOKEN_MODEL_ID, max_tokens: 128, messages: [ {role: user, content: 只回复两个字通了} ] }预期返回是一个 JSONcontent数组里有一段文本内容是「通了」。如果返回 401说明 Key 不对或者没带上如果返回local proxy failed之类的连接错误说明 Base URL 写错了或者网络出口有问题如果返回里choices字段读不到说明你用的请求格式和模型不匹配检查是不是把 OpenAI 格式和 Anthropic 格式混用了。通道通了之后验证技能加载。Hermes 里查看已安装技能hermes skills list你应该能在列表里看到markdown-table-to-sql状态是 enabled。如果没看到说明安装那一步没成功回到第三节重新导出安装。然后触发一次技能调用。在 Hermes 对话里发用 markdown 表格转 SQL 处理下面这段 | id | name | price | |----|------|-------| | 1 | 苹果 | 5.5 | | 2 | 香蕉 | 3.2 |预期输出是一段CREATE TABLE语句列类型推断为id INTEGER、name TEXT、price REAL。如果技能没触发而是模型直接回答了说明triggers里的关键词没匹配上回去改 SKILL.md 的触发条件重新安装。实测下来最容易出问题的是环境变量没被技能进程读到。你可以在技能里加一行调试输出把TAOTOKEN_BASE_URL打印出来确认。如果打印为空说明环境变量没注入到技能运行环境检查你的 settings 片段路径对不对。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一节按真实报错来对。你遇到哪个直接找对应条目。401 Unauthorized。最常见。原因有三个Key 没带、Key 带错、Key 被回收。先确认请求头里x-api-key的值是不是sk-开头再确认这个 Key 在控制台里状态是 active。如果你用的是环境变量先echo $TAOTOKEN_API_KEY看有没有值。注意别把 Key 写进 SKILL.md 然后提交到仓库这是泄露高发区。local proxy failed。这个报错通常出现在你本地配了某个转发层但转发层没起来或者端口不对。排查顺序先确认TAOTOKEN_BASE_URL是不是https://taotoken.net/api不要带多余路径再确认本机没有残留的代理环境变量干扰比如HTTP_PROXY、HTTPS_PROXY有的话先 unset 再试。如果你在容器里跑确认容器网络能出网。reading choices 相关报错。这个一般是你把请求格式搞混了。Anthropic 格式的返回是content数组OpenAI 格式的返回才是choices数组。如果你用 Anthropic 的请求体去打却按choices去解析返回就会读不到。检查你的技能脚本里解析返回的那段代码确认字段名和请求格式一致。统一通道两种格式都支持但请求和解析要配套。OAuth 相关报错。如果你在 Claude Code 或类似工具里配了 OAuth 登录又同时配了 API Key可能会冲突。排查方法先确认你走的是 Key 认证还是 OAuth 认证二选一别混用。如果技能里读的是环境变量 Key就把工具里的 OAuth 登录退掉避免它优先用 OAuth 凭证去请求。还有一个不报错但很烦的问题技能装了但触发不了。这通常是triggers关键词写得太窄。比如你只写了「markdown 表格转 SQL」用户说「把这个表格变成建表语句」就匹配不上。解决办法是把常见说法都列进triggers或者把description写得更宽泛让模型自己判断。排查完记得重新安装技能因为 SKILL.md 改了之后不重装不生效hermes skills install ./你的技能目录名6. 把技能接到你的工作流里技能建好只是第一步真正省时间的是把它接到日常流程里。我的做法是每个高频重复的任务建一个技能技能里只写流程和约束模型调用统一走 TaoToken 通道。这样你的技能库会越来越厚但凭证管理始终只有一套。如果你要验证某个 Model ID 在技能里表现如何可以去模型对话页面快速试地址是 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。试好了再把 Model ID 写进环境变量。长期跑编码类或 Agent 类技能的话Coding Plan 比按次调用更划算地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有各语言的完整示例。Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 建议按技能维度建 Key方便排查和回收。最后一个实用技巧SKILL.md 里的version字段别偷懒。每次改技能逻辑就升一个版本号这样你回滚的时候知道回到哪个版本。技能目录建议用 git 管起来但记得把真实 Key 排除在版本控制之外用环境变量或者本地 settings 文件承载。