资讯动态

部署 Anthropic Skills 工作流,Key 从 TaoToken 拿

发布时间:2026/9/19 0:10:44 来源:尧图企业网站定制
1. Skills 触发了却返回 401先把 Key 与 Base URL 归位在~/.claude/skills/下放好SKILL.md、重启 Claude Code、让它按技能跑一次结果直接抛authentication_error——这是把 Anthropic Skills 这类工作流接进自有网关时最常撞上的第一道坎而 TaoToken 正是用来把这一步收敛掉的打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentskills-flow 创建 Key再把 Base URL 指向https://taotoken.net/apiSkills 的调度链路才算真正跑通。很多人卡住并不是因为 Skills 写错了而是因为它和普通对话的调用路径不一样普通对话只在会话启动时校验一次凭证Skills 则在「元数据扫描 → 技能正文加载 → 引用文件或脚本执行」的三段式流程里反复发起模型调用。任何一段的凭证、Base URL、模型名不匹配表现都不是清晰的报错而是「技能不触发」「触发后中途断流」「返回 401 或 404」。本文按可复现的顺序把 Skills 的目录结构、Claude Code 的settings.json、Codex 的config.toml、CC Switch 的切换三件套、curl 自检命令以及替换前后的配置对照一次写完你照着改就能得到一份能跑起来的最小工作流。需要提前说明边界本文出现的所有命令、SQL、脚本都在读者本地执行不涉及让 Agent 或 MCP 直连 Oracle、MySQL 等生产库SKILL.md里也不要写库连接串和线上密钥这是后面「安全边界」一节要展开的重点。2. 先看清 Skills 的加载链路SKILL.md、frontmatter 与三层披露Anthropic 的 Skills 本质不是插件也不是新的协议而是一个「带约定的文件夹」。文件夹里必须有一个SKILL.md开头是 YAML frontmatter正文是给模型看的操作说明旁边可以放引用文档和脚本。Claude Code 在启动时会扫描约定目录把每个技能的name和description抽出来放进系统提示剩下的内容全部按需加载。一个典型的工作区结构长这样your-project/ ├── .claude/ │ └── skills/ │ ├── csv-report/ │ │ ├── SKILL.md │ │ ├── references/ │ │ │ └── schema.md │ │ └── scripts/ │ │ └── profile.py │ └── release-notes/ │ └── SKILL.md └── src/SKILL.md的最小可用形态--- name: csv-report description: 当用户要求对本地 CSV 做字段画像、缺失值统计并输出 Markdown 报告时使用处理日志、JSON 或在线数据源时不要使用本技能。 --- # CSV 字段画像 ## 执行步骤 1. 向用户确认文件路径与分隔符路径必须位于当前工作目录内。 2. 执行 scripts/profile.py脚本只读本地文件不发起任何网络请求。 3. 把脚本输出的 JSON 汇总成 Markdown 表格返回给用户。 ## 硬约束 - 不修改原始文件。 - 不在脚本中硬编码任何数据库连接串或线上密钥。 - 输出表格时不省略空值行。三层披露是理解 Token 消耗的关键第一层启动扫描。只有name和description会进入系统提示。这一层通常只占几十到一两百 token技能数量多也不会线性爆炸。第二层技能激活。模型判断当前任务命中了某个description才会把对应的SKILL.md正文整段读进上下文。正文写得越长这一层越贵。第三层按需读取。正文里如果写了「参考references/schema.md」模型会再发起一次读取如果写了「执行scripts/profile.py」则会走本地命令执行把 stdout 回灌到上下文。脚本输出有多少 Token就实打实进多少上下文。所以一个 Skills 工作流单次任务的输入大致是这几块的叠加输入 系统提示 全部技能的 name/description第一层 命中的 SKILL.md 正文第二层 references 或脚本输出第三层 工具调用返回 历史对话与文件片段这里就能解释一个常见现象技能只有两三个的时候一切正常加到十几个之后同样的任务开始变慢、开始报上下文超限。不是模型不行而是第一层没控制住——description写成了一段说明书等于每个技能都被半激活。3. 用 TaoToken 的 Key 跑通请求Claude Code 的 settings.json 与 ANTHROPIC_* 三件套Claude Code 侧的接入方式只有三件事Base URL、凭证、模型名。这三者在 Claude Code 里走的是ANTHROPIC_*前缀的环境变量可以写在 shell 里也可以写进~/.claude/settings.json的env字段。配置文件的写法更适合团队共享因为它不依赖每个人的 shell 初始化脚本。{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_DEFAULT_SONNET_MODEL: 模型ID, ANTHROPIC_DEFAULT_HAIKU_MODEL: 模型ID, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1 } }几点说明ANTHROPIC_BASE_URL填https://taotoken.net/api末尾不要多加/v1也不要手动补斜杠让客户端自己拼接路径。手工拼错是 404 的第一大来源。ANTHROPIC_AUTH_TOKEN就是你从 TaoToken 控制台创建的 Key直接替换占位符YOUR_API_KEY。不要把 Key 提交进 Git把它放在用户级配置或本地环境变量里。两个模型变量分别对应主模型和轻量模型。Claude Code 会用轻量模型做标题生成、文件摘要这类小任务Skills 的元数据扫描也偏轻量。模型 ID 请在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentskills-models 的模型列表里挑一个可用项直接复制粘贴别凭记忆手写。CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC关掉非必要遥测在企业内网或按量计费场景下更干净。如果你更喜欢用环境变量而不是配置文件可以这样export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_DEFAULT_SONNET_MODEL模型ID export ANTHROPIC_DEFAULT_HAIKU_MODEL模型ID写完先做一次静态自检确认没有拼写错误、没有多了空格、没有把AUTH_TOKEN写成API_KEY混用env | grep -E ^ANTHROPIC_ | sed s/.*/set/输出应该正好是四条。如果ANTHROPIC_AUTH_TOKEN没出现说明你改的是当前 shell 之外的文件或者settings.json的 JSON 结构写坏了。JSON 写坏时 Claude Code 通常不会给明确提示只是静默回落到默认端点表现为「Skills 能扫到但一跑就失败」这也是排查时最容易绕远路的地方。4. curl 直连自检先证明 Key 和 Base URL 生效再怀疑 Skills排查顺序永远是从下往上先证明网络层和凭证层是对的再去看 Skills 的目录和描述。如果连一条最简单的 Messages 请求都跑不通去翻SKILL.md就是浪费时间。先导出变量避免 Key 出现在命令历史里export TAOTOKEN_API_KEYYOUR_API_KEY curl -sS https://taotoken.net/api/v1/messages \ -H x-api-key: $TAOTOKEN_API_KEY \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: 模型ID, max_tokens: 256, system: 你是一个技能调度器只判断用户请求命中哪个技能名。, messages: [ { role: user, content: 把工作目录下的 orders.csv 做字段画像并输出 Markdown 表格 } ] }期望返回里能看到content数组和usage字段。usage.input_tokens就是这条请求实际消耗的输入把它和你本地拼出来的提示长度对一下可以大致反推 Skills 元数据占了多少上下文。如果你手上是 OpenAI 兼容形态的客户端用另一条命令验证同一套凭证curl -sS https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H content-type: application/json \ -d { model: 模型ID, messages: [ {role: user, content: 只回复两个字通了} ] }两条命令的区别正好对应后面要讲的坑Anthropic 形态走x-api-key头加anthropic-versionOpenAI 兼容形态走Authorization: Bearer。把这两种头混用是最典型的 401 来源。补充一句数据安全上面所有 curl 都是本地终端发起的单次请求不涉及把数据库连接交给 Agent。如果你的 Skills 需要查数据正确做法是让脚本读本地导出文件或者由你在本地执行 SQL 后再把结果贴进工作目录而不是在SKILL.md里写连接生产库的指令。5. Skills 工作流为什么会吃 Token把账算在 description 和 references 上同一个 Skills 仓库有人跑起来很省有人跑起来很贵差异几乎全在这四个地方。第一description的粒度。它是唯一常驻上下文的部分必须写清「什么时候用」和「什么时候不用」。上面示例里的csv-report就同时写了两面命中条件是对本地 CSV 做字段画像排除条件是日志、JSON、在线数据源。只写「用于数据处理」的技能会和所有数据相关的技能互相抢触发权。第二SKILL.md正文的长度。正文是激活后整段读入的不能当百科写。正文只放「步骤 约束 引用指向」把长篇规范挪到references/下按需读取。第三references/的读取次数。一次任务里如果模型反复读同一个引用文件说明正文没把关键信息说透模型在来回找答案。把最常用的字段定义直接写进正文可以显著减少往返。第四脚本输出的体积。这是最容易被忽略的一块脚本往 stdout 打 500 行 JSON等于往上下文里塞了 500 行。让脚本只输出汇总结果明细写入本地文件由用户在需要时再决定是否读入。一个可操作的瘦身对比!-- 优化前正文里塞了完整表结构激活即全量读入 -- # 订单分析 此处插入 200 行字段说明 此处插入 80 行示例 SQL !-- 优化后正文只留决策路径细节按需取 -- # 订单分析 1. 先读 references/schema.md 确认字段口径。 2. 需要口径解释时读 references/metrics.md不要一次性全读。 3. 脚本只输出汇总 JSON明细落盘到 ./out/。这样改完单次任务的上下文占用通常会明显下降而且技能触发的准确率反而更高因为模型不用在一堆无关说明里做选择题。6. Codex 侧怎么配 config.toml别把 ANTHROPIC_* 塞进 CodexClaude Code 和 Codex 是两套配置体系混用是最常见的翻车点。Claude Code 读ANTHROPIC_*走 Anthropic 协议Codex 读config.toml走 OpenAI 兼容协议。把ANTHROPIC_BASE_URL写进 Codex 的环境里Codex 完全不会识别它会安静地走回默认端点然后在 Skills 相关的调用上失败。Codex 的正确写法是改~/.codex/config.tomlmodel 模型ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api/v1 env_key TAOTOKEN_API_KEY wire_api chat要点model_provider指向下面自定义的 provider 名两者必须一致。base_url用 OpenAI 兼容路径https://taotoken.net/api/v1。如果你的客户端会自动补/v1则填https://taotoken.net/api以实际请求路径不出现重复/v1为准。env_key是环境变量名不是变量值。运行前先export TAOTOKEN_API_KEYYOUR_API_KEY。wire_api按客户端版本选择chat或responses不确定时先用chat它是兼容性最好的形态。这一节里不要出现任何ANTHROPIC_*变量它们属于 Claude Code不属于 Codex。如果你的 Skills 工作流同时跑在两端建议把两个配置文件分开管理各自只填自己体系的字段避免「看起来都配了、实际哪边都没生效」。7. CC Switch 三件套与多环境切换Base URL、凭证、模型名当你要在多个供应商之间来回切时手工改配置文件迟早会漏字段。CC Switch 这类切换工具的价值就在于把三件套集中管理切一次改三处不切就全不变。三件套指的是1) Base URL → https://taotoken.net/api 2) 凭证 → YOUR_API_KEY从控制台创建 3) 模型名 → 主模型 轻量模型两个 ID切换时的自检清单切完先看 Base URL 是不是https://taotoken.net/api有没有残留上一条规则。再看凭证字段名对不对Claude Code 用ANTHROPIC_AUTH_TOKENCodex 用你自定义的env_key指向的环境变量。最后看模型 ID 有没有跟着换。只换 URL 不换模型是「切换后变差」的主要原因。三件套改完后重启客户端不要指望热加载。创建新 Key 的入口在 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentskills-switch 建议按环境分别建 Key本地开发、CI、测试各一个这样某个环境泄漏时只需吊销一把不影响其他链路。8. 替换前后对照与常见报错排查把改动前后并排放能最快定位自己漏了哪一步。项目替换前默认端点替换后TaoTokenClaude Code Base URL默认 Anthropic 端点https://taotoken.net/apiClaude Code 凭证字段ANTHROPIC_API_KEY或登录态ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY配置文件位置分散在 shell 与登录态~/.claude/settings.json的envCodex provider默认 provider自定义[model_providers.taotoken]Codex base_url默认端点https://taotoken.net/api/v1Codex 凭证默认登录态env_key TAOTOKEN_API_KEYSkills 目录不变不变.claude/skills/SKILL.md不变不变只优化 description 与正文长度常见报错与处理顺序现象大概率原因处理动作authentication_error/ 401凭证字段名写错或头混用Claude Code 确认ANTHROPIC_AUTH_TOKENcurl 确认x-api-key与 Bearer 不混用404Base URL 多写或少写/v1或末尾多斜杠Claude Code 用https://taotoken.net/apiCodex 用https://taotoken.net/api/v1429单 Key 并发过高按环境拆 Key或降低 Skills 的并行调用模型不存在模型 ID 手写错误从模型列表复制粘贴不要凭记忆技能扫不到目录层级不对确认是.claude/skills/name/SKILL.md技能不触发description太泛补上排除条件明确「不要用于什么场景」触发后中途断流SKILL.md过长或脚本输出过大正文瘦身明细落盘只回灌汇总切换后效果变差三件套只改了 URL同步检查凭证字段与模型 ID排查时坚持自下而上的顺序先 curl 通再跑一次不带 Skills 的普通对话最后才把 Skills 目录放回去。三步都通过说明整条链路是干净的哪一步失败问题就锁在哪一层不用猜。安全边界再强调一次SKILL.md只描述流程和约束不放连接串、不放线上密钥需要数据时由你在本地导出或执行 SQL再把结果放进工作目录不要让 Agent 直连生产库也不要在技能脚本里写绕过权限的逻辑。Skills 的能力来自「按需加载的说明」而不是「无限制的执行权限」。9. 落地清单与下一步把上面所有内容压成一张可执行清单[ ] 在 TaoToken 控制台创建 Key按环境分开 [ ] 写 ~/.claude/settings.json填好 ANTHROPIC_BASE_URL / AUTH_TOKEN / 两个模型 ID [ ] curl 直连 /v1/messages确认 200 且 usage 正常 [ ] 建 .claude/skills/name/SKILL.mdfrontmatter 写全 name 与 description [ ] description 同时写命中条件与排除条件 [ ] SKILL.md 正文只留步骤与约束细节挪进 references/ [ ] 脚本只输出汇总明细落盘 [ ] 需要 Codex 时单独配 config.toml不混用 ANTHROPIC_* [ ] 多环境切换用三件套清单核对不热加载 [ ] 本地执行所有命令与 SQL不接生产库Skills 工作流的价值在于把「一次性提示词」变成「可版本化的能力包」但它对配置纪律的要求更高错误不会被显式抛出只会变成触发失败或者账单变厚。把 Key 和 Base URL 收敛到一处、把技能正文和引用文件分层、把本地执行和线上数据的边界划清这三件事做完剩下的就是不断打磨description和脚本输出粒度。下一步可以直接从这几条深链进入先到 模型对话 里挑一个合适的模型 ID确认它在你的场景下响应稳定如果打算长期跑 Agent 类任务看 Coding Plan 的额度形态是否匹配你的调用节奏然后到 API Keys 建好分环境的 Key配置细节对不上时直接翻 Claude Code 接入文档 逐项核对。整套流程跑通之后再回到SKILL.md里去优化 description收益会比反复调提示词大得多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价