ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

把 Claude Code 的 Base URL 改到 TaoToken 之后,SKILL.md 的渐进式披露才真省 Token

把 Claude Code 的 Base URL 改到 TaoToken 之后,SKILL.md 的渐进式披露才真省 Token 把 Claude Code 的 Base URL 从官方地址改到 https://taotoken.net/api 之前SKILL.md 的渐进式披露在我眼里只是个整理文件的好习惯。真正逼我动手的是一个漫画生成 Skill为了让模型懂业务我把风格规范、脚本说明、模板清单全塞进了 System Prompt结果漫画还没开始画上下文先满了。后来在 TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_end把 Key 建好模型请求收口到统一通道这套按需加载的机制才真正把 Token 省下来。这篇就按我当时的顺序把它拆开讲一遍。1. 手搓 MCP 再把文档塞进 System Prompt漫画 Skill 还没跑 Token 就先炸了1.1 通用模型什么都懂就是不懂你团队的规矩Claude 接进来的时候我一度觉得它无所不能。直到我让它处理团队内部的漫画风格读本它开始一本正经地胡说人物设定跟规范对不上分镜数目随意术语中英混着写。不是模型不行是它压根不知道我们内部那套风格规范长什么样。过去两年的补救办法说穿了就两招。第一招是疯狂配 MCP让它去连各种东西第二招更粗暴把几万字的说明塞进 System Prompt指望靠一个大上下文窗口暴力灌进去。两招单独用还行叠在一起就出问题。问题的表现很直观。首字延迟变长Token 消耗一路往上模型还会因为注意力被稀释开始在小细节上跑偏。最典型的一次我让它按某个角色设定画三格分镜它把前一格的角色名写错了两次只因为上下文里同时堆着七八份不相关文档。1.2 一堆 MCP 工具定义挤在上下文里还没开工就满仓MCP 本身没问题它还是底层连接的那根管道。麻烦在于每接一个 MCP就要往上下文里塞一份工具定义。接三五个还能忍接到十个以上光是 schema 就能吃掉一大块预算。那段时间我为了让漫画 Skill 能查到参考规范配了检索、配了文件读取又配了一个脚本调用入口。结果每轮对话都背着这堆定义往前走模型还没开始想分镜脑子先被工具描述填满了。你付的是 Token换来的是模型分心。1.3 其实是两件事混在一起了上下文塞多少请求走到哪想清楚之后我发现被搅在一起的是两件独立的事。一件是上下文管理也就是每次请求里到底要带多少东西进模型。这件事的答案是 Skill 那套渐进式披露。另一件是请求通道也就是这次的模型调用最终打到哪里、用哪把 Key、按什么额度计。这件事跟上下文没关系但它决定了你调用的稳定性。原文讲得很清楚通用模型不懂业务硬灌文档只会让 Token 爆炸。我的补充是把上下文管好之后还要把请求通道配好两者都到位省下来的 Token 才算真的省下来。TaoToken 在这篇文章里的角色就是后一半统一接入的 API 通道把模型请求收口Key 和模型 ID 都在一个地方管。2. 渐进式披露的三个动作和 Claude Code 的 Base URL 是同一条链路2.1 发现阶段只扫 YAML 头成本接近于零Agent Skill 跑起来的第一步特别克制。启动时它只扫一遍所有技能的 YAML 头记住 name 和 description也就是我叫什么、我大概能干什么。正文一个字都不读references 更不会碰。这个阶段内存占用几乎是零Token 消耗微乎其微。此时的 Claude Code 还是个博学但轻装上阵的通才它知道自己有哪些技能但没为任何一项技能提前付出上下文成本。2.2 激活阶段才读 SKILL.md 正文当我在对话里敲下一句用漫画生成 Skill 解读一下 Transformer 架构Claude Code 会先在已扫描的 YAML 头里做匹配。description 对上了它才把那一份 SKILL.md 的正文完整读进上下文。注意这里的关键词是那一份。其他九十九个技能的正文还是躺在硬盘上不进上下文。这就是渐进式披露省 Token 的核心加载的范围被技能描述精确框住了不会连带一堆无关内容。2.3 执行阶段才动 references 和 scripts正文读完任务还没结束。如果操作手册里写着需要确认画风规范时去读 references/style-guide.md它才会去读那一份文档如果写着批量出图时调用 scripts 里的渲染脚本它才会去看脚本的参数说明。做完就释放。手册放回书架下一次对话重新从 YAML 头开始。这套节奏保证了反应速度也让一个项目里塞几十上百个技能变得可行。2.4 Base URL 归 Base URL渐进式披露归渐进式披露这里要说清楚一个容易混的点。渐进式披露是 Claude Code 和 Skill 规范这一侧的事它决定上下文里放什么Base URL 是请求通道这一侧的事它决定这次调用走哪里、算谁的账。把 Claude Code 的 Base URL 改到 https://taotoken.net/api 不会自动让渐进式披露生效写作逻辑也不会因此变好。它解决的是另一个问题模型调用统一走一条兼容通道Key 一处管理模型 ID 一处对照多个 IDE、多个终端不用各配一套。两件事合起来才是我这篇文章想说的真省 Token。3. 解剖漫画生成 SkillYAML 头、references 和 scripts 各管一段上下文3.1 manga-learning-creator 的目录长什么样一个符合 agentskills.io 规范的技能包结构朴素到让人意外。不需要类继承不需要编译就是一个文件夹。manga-learning-creator/ ├── SKILL.md ├── scripts/ │ └── render_panels.py ├── references/ │ └── style-guide.md └── assets/ └── layout-template.png根目录的 SKILL.md 是核心大脑。scripts 放执行用的脚本相当于它的手references 放规范和参考资料相当于它的书assets 放模板和静态资源相当于它的工具箱。三个目录都是可选的但只要你把内容放对位置渐进式披露就有东西可分阶段加载。3.2 YAML frontmatter 是身份证不是说明书打开 SKILL.md结构是极简的二元结构。头部是 YAML frontmatter给机器看下面是 Markdown 正文给模型看。--- name: manga-learning-creator description: 把论文、教程、长文转成分镜脚本和漫画风格学习读本。当用户说把这篇讲明白用漫画解读时使用。 --- # 漫画学习读本生成 ## 什么时候用 当用户要求用漫画解读文章、把论文改成分镜、生成角色设定图时。 ## 步骤 1. 抽取原文结构化要点先输出 8 到 12 格的文字分镜。 2. 每格写明镜头、角色、台词、画面提示。 3. 需要具体画风约束时读 references/style-guide.md。 4. 需要批量出图时参考 scripts/ 下脚本的参数说明。 ## 注意 原始文档只做要点抽取不要把全文复述进上下文。description 这一行值得多花点时间。它不是介绍词是匹配用的钩子。写成漫画生成工具太泛写成把长文转成分镜脚本和漫画读本用于漫画解读类请求就更容易被正确触发。写得太短技能不会被想起来写得太长又会挤占本该省下的空间。3.3 references 当书架别当 System Prompt我之前最大的错误是把 references 里的内容抄了一份进 System Prompt。这样做等于绕过了整个按需加载机制每次对话都背着整本书跑。正确做法是反过来的参考文献留在 references 目录里SKILL.md 正文只写什么时候去读它。模型需要时自己去拿拿完就用用完就放。系统提示里只留那些永远都要遵守的硬规则比如输出格式、语言要求别把可检索的业务文档塞进去。判断标准很简单一份内容如果在大部分对话里都不会被用到它就不该出现在 System Prompt 里而应该出现在 references 里由 SKILL.md 决定何时加载。4. 在 settings.json 里把 Claude Code 指到 TaoToken 的 https://taotoken.net/api4.1 先拿 Key落地页、控制台、模型广场准备工作只有三样一个能用的 API Key、一个准确的 Base URL、一个真实存在的模型 ID。打开 TaoToken注册登录之后进控制台创建 API Key。Key 一律用占位符 YOUR_API_KEY 记着别直接贴进公开的配置文件或代码仓库。模型 ID 不要凭印象写去落地页里的模型广场看当时的列表以列表里显示的名称为准。Base URL 单独记一下https://taotoken.net/api末尾不要带 /v1。这个地址是填进工具的不是给人点的所以不要往它后面拼 UTM 参数。4.2 环境变量写法临时验证最省事的方式是环境变量。开一个终端把这三行填好再启动 Claude Codeexport ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_MODELYOUR_MODEL_ID三个值的分工要分清BASE_URL 是通道地址AUTH_TOKEN 是身份凭证MODEL 是这次要用的模型。任何一项写错表现都不一样后面的排障章节会逐个对照。注意环境变量只在当前终端会话里有效换个窗口就没了。想长期用写进配置文件更省事。4.3 ~/.claude/settings.json 的 env 写法Claude Code 支持把这几项固化到用户级配置里。打开 ~/.claude/settings.json在 env 字段下写进去{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_MODEL_ID } }保存后重开 Claude Code让它重新读取配置。如果你的项目里还有 .claude/settings.json注意两份配置的优先级别一边改了环境变量、另一边被项目级配置覆盖掉。改完可以先跑一句最简单的对话确认通道通了再进漫画 Skill 的流程。4.4 taotoken CLI 一条命令起 Claude Code如果你更习惯命令行也可以走 CLI 这条路。先装全局包npm install -g taotoken/taotoken然后一条命令带 Key、地址、模型启动taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m YOUR_MODEL_ID-k 后面是刚才创建的 Key-u 后面是通道地址且不带 /v1-m 后面是模型广场里查到的模型 ID。这条命令适合快速切换模型做对照测试比如同一段分镜文本用两个模型各生成一次看看哪一个更贴你的风格规范。5. 跑通 manga-learning-creator再去控制台核对这次调用5.1 触发一次漫画解读看它只读了哪些文件配置好通道之后把技能包放进 Claude Code 能识别的位置然后给一句明确的触发语比如用漫画生成 Skill 解读一下 Transformer 架构先给分镜脚本。这时候你可以观察它的行为顺序先匹配 description再把 SKILL.md 正文读进来输出一份 8 到 12 格的文字分镜。如果分镜里提到画风细节它才会去读 references/style-guide.md。原始长文只被抽取若干要点没有被整篇复述进上下文。这一步才是渐进式披露真正兑现的地方。发现、激活、执行三段动作分开发生每段只加载当时需要的东西。原文举的漫画生成 Skill 例子跑到这个状态就算通了。5.2 Token 曲线应该是什么样改配置前后各跑一次同样的请求对比一下消耗你会看到明显差别。差别不是来自 Base URL 本身而是来自上下文被管住了不再有整篇业务文档常驻不再有十几个 MCP 的工具定义常驻每轮只带当前技能真正需要的内容。如果你的消耗没有降下来先别怀疑通道回头检查三件事System Prompt 里是不是还留着大量可检索文档、技能目录里是不是有 description 写得太宽导致误触发、SKILL.md 正文是不是把 references 的内容又抄了一遍。5.3 去控制台看这次调用有没有记上账配完之后我习惯去对一次账。先用同一把 Key 在 TaoToken 模型对话 里发一条测试消息确认 Key、Base URL、模型 ID 这一组参数在通道侧是通的。然后回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的控制台看刚才 Claude Code 那几次调用有没有被记录、扣的是哪个模型的量。对账还有一个额外好处你能看出哪些请求其实没必要发。有时候一个技能反复触发、反复读同一份 references说明 description 写得太宽或者正文里的触发条件不够具体调整一下就能再省一截。6. 401、404、多写 /v1三类报错的对照表6.1 401Key 没带上或者带错了报错长这样unauthorized或者提示认证失败。最常见的原因有三个。第一环境变量只在当前终端生效你新开了一个窗口配置没了。第二settings.json 里的 ANTHROPIC_AUTH_TOKEN 写的是别的工具的 Key不是从落地页控制台创建的那把。第三配置里的 Key 前后带了空格或者引号复制的时候粘进去了。排查顺序很简单先在模型对话里用同一把 Key 发一条消息。那边通、这边不通问题就在本地配置的读取上跟 Key 本身没关系。6.2 404把 /v1 拼到 Base URL 后面了这个错我也犯过。看到官方文档里到处是 /v1手一抖就把 Base URL 写成 https://taotoken.net/api/v1。结果请求打到不存在的路径上返回 404 或者路径不匹配。记住本文的写法填进工具的地址是 https://taotoken.net/api末尾不带 /v1也不带任何查询参数。所有需要附加路径的部分由工具自己处理。改完配置记得重启 Claude Code很多工具只在启动时读一次环境变量。6.3 模型 ID 对不上模型广场还有一种失败更隐蔽通道是通的但模型名写错了返回找不到模型。原因通常是把网上看到的模型名直接当成了配置值或者手抄时多了一个日期后缀。处理方式只有一个以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 模型广场当时列表里的名称为准复制过去不要自己拼。列表会变所以每次换模型都回来看一眼比背下来靠谱。6.4 SKILL.md 没被触发先看 description 写得够不够像人话这不是通道报错但很常见。技能装好了怎么问都不触发。八成是 description 写得太抽象。把它当成一句给同事看的说明来写什么情况下该用、用来产出什么。把用户可能说出口的话术也放进去比如用漫画解读把这篇讲明白。同时确认技能目录位置正确SKILL.md 文件名大小写没写错。触发顺畅之后渐进式披露的第一段才算真正走通。7. 从 Prompt Engineering 到 Skill Engineering 的下一步以前我们靠写提示词去哄模型现在靠写技能去教模型做事。这个转向对开发者提出的要求其实变了你要能定义技能什么时候被触发要准备好它会用到的脚本要给它留一份随时能查的参考资料还要想清楚哪些内容永远留在 System Prompt、哪些内容放进 references 按需加载。通道这一侧的事配一次就够。Key 在 控制台 API Keys 创建长期写代码可以看看 Coding Plan 的套餐是否够用Claude Code 环境变量的完整对照在 接入文档。真正要反复打磨的是技能包本身。等你把第一份 SKILL.md 的 description 改到一喊就中、把 references 拆到只在该读的时候读你会发现省下来的不只是 Token还有每次调试时的心情。
返回列表