1. 为什么你需要一个 Skill 系统从“每次重讲”到“一次教会”如果你用 Agent 做过稍微复杂一点的事大概率经历过这种循环打开对话框把背景、约束、步骤、验收标准重新讲一遍Agent 干完这一单下次换个项目你又得从头讲。这不是 Agent 笨而是它缺少一种叫“程序性记忆”的东西——知道事实是一回事知道“这类活该怎么干”是另一回事。Skill 系统解决的就是这件事。一个 Skill 本质上是一份 Markdown 格式的方法论文档它把“某类任务的标准做法”写下来让 Agent 在遇到匹配任务时自动加载并照着执行。你可以把它理解成给 Agent 装的一份“作业指导书”平时它只是一段文本触发时它变成一套可复用的工作流。这套思路里有两个关键词值得先记住。一个是 Hermes 提出的 Skill 分层理念另一个是渐进式披露Progressive Disclosure。前者告诉你 Skill 该写什么后者告诉你 Skill 该怎么被加载才不浪费上下文。很多开发者第一次接触 Skill 系统会误以为它是“更长的提示词”其实差别很大提示词是一次性的Skill 是可安装、可导出、可版本管理、可自动触发的。这篇文章面向的是想让 Agent 按自己习惯执行任务的开发者。我会从零交付一套可复制的 Skill 目录结构和 Markdown 模板然后把它接到 TaoToken 的统一 Key / API 通道上完成一次真实的 Agent 调用验证。目标很明确跑通一个自定义 Skill而不是停留在概念层。适合谁读如果你已经在用 Claude Code、Cline、Codex 这类编码 Agent或者正在搭自己的 Agent 工作流并且被“每次都要重新交代一遍”折磨过那这篇就是写给你的。全程小白友好命令和配置都能直接抄。2. TaoToken 前置准备统一 Key 与 API 通道怎么配在写 Skill 之前先把调用通道打通。Skill 是“方法论”但方法论要被执行得有一个能稳定调用的模型入口。TaoToken 在这里扮演的角色是统一 Key / API 通道你不用为每个模型、每个工具分别维护一套密钥和 Base URL而是用一套凭证走同一个入口。先明确三个必须对齐的东西我把它叫做“三件套”Base URL、API Key、Model ID。任何 Agent 工具接入时只要这三样对上了基本就能跑。TaoToken 的 API 入口是https://taotoken.net/api注意这个地址不带任何查询参数配置时直接填这个即可。官网入口是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content需要看文档或管理 Key 时从那里进。获取 Key 的路径很直接进入控制台创建 API Key。控制台地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleAPI Keys 管理页是https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keys。创建后复制那串以sk-开头的字符串先存到环境变量里别硬编码进代码。export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api这里有个容易踩的坑很多人把 Base URL 写成带/v1或带斜杠结尾的形式结果请求 404。TaoToken 的 API 根地址就是https://taotoken.net/api具体路径由客户端自己拼接。如果你用的是 OpenAI 兼容的 SDK通常它会自动在 Base URL 后面补/chat/completions之类所以根地址保持干净最重要。模型选择上编码和 Agent 类任务建议用能力较强的模型具体可用模型列表以文档为准文档入口是https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc。如果你打算长期跑编码 Agent可以了解下 Coding Plan入口是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-plan它更适合高频、长时间的编码场景。配置完成后先别急着写 Skill用一条最简单的请求确认通道是通的。这一步能帮你把“通道问题”和“Skill 问题”分开后面排障会轻松很多。curl https://taotoken.net/api/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: 你的模型ID, messages: [{role: user, content: 回复 ok}] }如果返回里能看到正常的choices结构说明通道没问题。记住这个成功的样子第 5 节排错时我们会拿它做对照。3. 可复制配置Skill 目录结构与 Markdown 模板现在进入正题。Skill 系统的核心不是代码而是结构。一个能被 Agent 正确解析的 Skill通常是一个目录里面至少有一个 Markdown 文件作为主文档。我建议的目录结构如下你可以直接复制skills/ └── docker-to-k8s/ ├── SKILL.md # 主文档元信息 执行步骤 ├── pitfalls.md # 常见坑与规避方法 ├── verification.md # 验收标准与检查清单 └── examples/ └── sample.md # 可选示例输入输出为什么拆成多个文件这就涉及渐进式披露。Agent 在 Level 0 只需要知道“有这么个 Skill、它大概干什么”所以主文档开头要有一段极简摘要当任务匹配、需要真正执行时才加载完整的步骤和坑只有在验证结果或遇到特殊情况时才去读verification.md。分层加载的好处是 token 消耗可控不会因为装了几十个 Skill 就把上下文塞满。下面是SKILL.md的模板字段名和结构可以直接用--- name: docker-to-k8s description: 将 Docker Compose 服务迁移为 Kubernetes 部署配置 version: 1.0.0 triggers: - 迁移到 k8s - compose 转 kubernetes - 生成 deployment yaml --- # Docker Compose 到 Kubernetes 迁移 ## 摘要 扫描 docker-compose.yml解析服务、环境变量、端口与依赖 生成对应的 Deployment、Service、ConfigMap、Secret 与 Ingress。 ## 执行步骤 1. 读取并解析 docker-compose.yml列出所有 service。 2. 提取每个 service 的 image、ports、environment、volumes、depends_on。 3. 将 environment 中非敏感项写入 ConfigMap敏感项写入 Secret。 4. 为每个 service 生成 Deployment副本数默认 1。 5. 为需要外部访问的 service 生成 Service 与 Ingress。 6. 输出文件到 k8s/ 目录并打印变更清单。 ## 注意事项 - 不要直接把明文密码写进 ConfigMap。 - depends_on 在 k8s 中不直接对应需转为 readinessProbe 或 initContainer。 - 端口映射注意 containerPort 与 service port 的区别。 ## 验收 - 所有 service 都有对应 Deployment。 - 敏感信息不出现在 ConfigMap。 - 生成的 YAML 能通过 kubectl apply --dry-runclient 校验。这个模板里有几个设计点值得说明。triggers字段是给 Agent 做匹配用的写得越贴近你平时的说法自动触发越准。摘要对应 Level 0要短到几乎不占 token。执行步骤对应 Level 1是真正被加载的部分。验收对应 Level 2验证时才读。如果你用的是 Claude Code 这类工具Skill 的接入通常通过配置文件完成。以常见的 settings 配置为例把 Base URL、Key、Model ID 三件套写进去{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的key, ANTHROPIC_MODEL: 你的模型ID } }注意这里的 Base URL 同样是https://taotoken.net/api不要加多余路径。如果你用的是 Cline 或带 MCP 的客户端配置思路一致找到填 Base URL 和 Key 的地方把三件套对齐。Codex 用户如果走auth.json也是把 Key 和 Base URL 写进对应字段Model ID 单独指定。配置写完后把skills/目录放到 Agent 能扫描到的位置。不同工具扫描路径不同常见的是项目根目录或用户配置目录。放好后重启 Agent让它重新索引 Skill。4. 验证请求从零跑通一次自定义 Skill 调用配置就绪后来跑一次真实验证。这一步的目标是让 Agent 识别到我们刚写的docker-to-k8sSkill并按照它定义的步骤执行。先准备一个最小的docker-compose.yml作为输入services: web: image: nginx:1.25 ports: - 8080:80 environment: - APP_ENVprod - DB_PASSWORDsecret123 db: image: postgres:16 environment: - POSTGRES_PASSWORDsecret123然后在 Agent 对话里用自然语言触发比如“帮我把这个 docker-compose 迁移到 k8s”。如果 Skill 匹配成功你应该能看到 Agent 明确表示加载了docker-to-k8s并逐步执行。如果你用的是命令行方式调用可以用一条请求把 Skill 内容作为系统上下文注入验证模型是否按步骤输出curl https://taotoken.net/api/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: 你的模型ID, messages: [ {role: system, content: 你已加载 Skill: docker-to-k8s请严格按步骤执行。}, {role: user, content: 迁移上面的 docker-compose 到 k8s} ] }成功的标志有几个返回内容里出现了 Deployment、Service、ConfigMap、Secret 这些资源类型敏感字段DB_PASSWORD被放进了 Secret 而不是 ConfigMap最后给出了文件清单或验收说明。如果这几点都满足说明 Skill 的方法论被正确执行了。我实测下来第一次跑最容易出问题的地方不是模型而是 Skill 的triggers写得太窄导致自然语言触发不到。解决办法是把triggers写成你平时真实会说的几种表达而不是书面术语。另一个经验是执行步骤不要写太抽象比如“分析依赖关系”就不如“提取 depends_on 并转为 readinessProbe”来得可执行。验证通过后你可以把这个 Skill 导出、分享给团队或者提交到 Git 做版本管理。Markdown 的好处在这里体现得很明显diff 清晰、review 方便、合并冲突也好处理。5. 本篇常见错排查401、local proxy failed 与 choices 读取失败跑不通的时候别慌绝大多数问题集中在几个固定位置。下面按真实报错来对照。401 Unauthorized这是最常见的一个。原因通常是 Key 没生效或写错了。检查三件事环境变量TAOTOKEN_API_KEY是否真的导出成功echo $TAOTOKEN_API_KEY看有没有值Key 是否被复制时带了空格或换行请求头里是不是写成了Authorization: Bearer sk-xxx的完整格式。如果用的是配置文件确认 JSON 里没有多余逗号导致解析失败。local proxy failed / connection refused这类报错通常和 Base URL 有关。先确认你填的是https://taotoken.net/api而不是带/v1或结尾斜杠的变体。其次检查本机网络是否能正常访问该地址可以用curl -I https://taotoken.net/api看返回。如果客户端里配置了额外的本地代理设置先关掉再试避免请求被转发到错误地址。reading choices 失败 / choices 为空这个报错说明请求发出去了但返回结构不符合预期。常见原因是 Model ID 写错或者请求体里model字段和实际可用模型不匹配。对照文档里的模型列表确认一遍。还有一种情况是返回了错误对象而不是正常响应这时把完整返回打印出来看error字段通常能直接定位。OAuth 相关报错如果你用的是 Claude Code 这类带 OAuth 流程的工具报 OAuth 错误往往是因为它还在走默认的登录通道而不是你配置的 Base URL。检查配置文件里的ANTHROPIC_BASE_URL是否被正确读取有些工具需要重启或重新登录才会生效。确认三件套Base URL Key Model ID都写全了缺一个都可能触发回退到默认认证。Skill 不触发如果通道没问题但 Skill 没被加载检查triggers是否匹配你的说法以及 Skill 目录是否在扫描路径内。可以先用显式命令加载比如/skill load docker-to-k8s确认 Skill 本身能被解析再排查自动触发。排障时有个通用思路先用第 2 节那条最小 curl 确认通道再确认 Skill 文件能被解析最后才怀疑模型行为。把变量一个个隔离比一次性改一堆配置高效得多。需要查文档时走https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc需要管理 Key 时走https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keys。6. 把 Skill 用起来从单次验证到长期工作流跑通一次之后真正有价值的是把它变成习惯。我的做法是每完成一类重复性任务就顺手把它沉淀成一个 Skill。比如“生成 CHANGELOG”“初始化 Python 项目”“审查 PR 代码”这些都可以写成 Markdown 模板放进skills/目录。如果你打算长期跑编码 Agent建议把 Skill 和 Coding Plan 结合使用入口是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-plan高频调用下更划算。想直接体验模型对话效果可以走https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chat。需要管理多套 Key 或查看用量控制台在https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole。最后给一个实用技巧Skill 的version字段别偷懒每次改动都升一下。团队协作时谁改了什么、为什么改靠 Git 历史加版本号就能追溯。渐进式披露的分层也别一开始就写满先写 Level 0 和 Level 1等真正遇到验证需求再补verification.md。这样你的 Skill 库会随着使用自然生长而不是一开始就背上一堆用不上的文档。
阅读完成 · 觉得有帮助?