ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

当 WorkBuddy 的 Skill 调模型,TaoToken 只给 Key 和地址

当 WorkBuddy 的 Skill 调模型,TaoToken 只给 Key 和地址 1. 先把角色说清WorkBuddy 管 SkillTaoToken 管 Key 与 Base URLWorkBuddy 的 Skill 配置页通常只留两个关键输入框Base URL 和 API Key。一旦 Skill 触发模型调用却返回 401问题往往不在 Skill 动作而在模型入口没配对。TaoToken 在这里的角色很窄只提供 Key 和地址。先打开 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentworkbuddy_skill_intro 创建 Key再把 Base URL 填为 https://taotoken.net/api。很多人第一次用 WorkBuddy 装多个 Skill 时会把“自动化”理解成一个整体Skill 负责触发WorkBuddy 负责执行模型负责生成。真正落到配置界面三者的边界必须拆开。WorkBuddy 管的是任务编排什么时候触发、读取哪些本地文件、把结果写到哪里、失败后是否重试。TaoToken 管的是模型访问层验证 Key、承接请求、按模型 ID 转发、返回结果。两者通过一个 HTTPS API 地址连接地址就是https://taotoken.net/api身份凭证就是你在 TaoToken 控制台创建的 Key。如果你把 TaoToken 当成 WorkBuddy 的插件市场会找不到入口如果你把 WorkBuddy 当成模型供应商也会在模型设置里迷路。更准确的说法是WorkBuddy 的 Skill 需要模型时向“自定义供应商”发请求这个自定义供应商的 Base URL 填 TaoToken 地址API Key 填 TaoToken Key。Skill 本身不需要知道模型从哪里来它只需要拿到兼容格式的响应。环节责任方典型配置说明Skill 触发WorkBuddy定时、关键词、文件变化决定什么时候开始干活上下文组装WorkBuddy模板、变量、本地文件路径决定把什么内容发给模型模型请求TaoTokenBase URL、API Key、模型 ID决定请求能不能通、用哪个模型结果处理WorkBuddy写入文件、发送通知、调用本地脚本决定输出落在哪里Key 管理TaoToken控制台创建、复制、轮换不把 Key 写进 Skill 分享包这张表是本文的核心边界。后面所有配置、命令和日志都围绕这条边界展开。你只需要记住WorkBuddy 不管理 KeyTaoToken 不执行 Skill。把这两件事分开排障会快很多。2. WorkBuddy 的 Skill 模型设置从 401 到 200 的最小配置路径WorkBuddy 里每个 Skill 的模型设置位置可能略有差异但核心字段基本一致供应商类型、Base URL、API Key、模型 ID。下面按最小可跑通路径来走。第一步打开 WorkBuddy进入 Skills 管理页选择你要自动化的 Skill点编辑或设置。找到“模型服务”“供应商”“LLM Provider”之类的入口。不同版本叫法不同但都会出现自定义供应商选项。第二步供应商类型选择“自定义”或“OpenAI Compatible”。如果这个 Skill 内部调用的是 Anthropic 风格 SDK则选“Anthropic Compatible”。不要混选OpenAI 兼容和 Anthropic 兼容的请求路径、请求头不同填错会出现 404 或 400。第三步Base URL 填https://taotoken.net/api。这里不要带 UTM 参数也不要手写多余的/v1。很多工具会自动拼接/v1/chat/completions或/v1/messages。如果你在 Base URL 里又写了一遍/v1可能变成/v1/v1/...直接 404。第四步API Key 填YOUR_API_KEY。在实际操作中建议不要硬编码在 Skill 配置里而是用环境变量。例如 WorkBuddy 的 Skill 执行环境支持环境变量时先导出export TAOTOKEN_API_KEYYOUR_API_KEY第五步模型 ID 填你在 TaoToken 模型列表里看到的可用模型 ID。不要凭记忆填一个不存在的名字。模型 ID 错误时常见返回是 400 或 model not found。第六步保存后先点测试或者运行一次最小 Skill。不要一上来就启用全部自动化先用一个不写文件、不发邮件的 Skill 验证链路。一个偏 OpenAI 兼容的 WorkBuddy 自定义供应商配置可以长这样provider: custom compatible: openai base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY model: YOUR_MODEL_ID timeout_seconds: 120 max_retries: 2如果这个 Skill 明确使用 Anthropic 兼容协议则字段要改成provider: custom compatible: anthropic base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY model: YOUR_ANTHROPIC_MODEL_ID timeout_seconds: 120注意这里的compatible字段名只是示意实际以你当前 WorkBuddy 版本的字段为准。不要因为字段名不同就乱填先在界面里找“协议类型”或“API 格式”。配置完成后先在本地终端验证 Key 和 Base URL 是否通。下面命令不会调用具体模型只检查模型列表接口export TAOTOKEN_API_KEYYOUR_API_KEY curl -sS -o /tmp/taotoken_models.json -w HTTP_STATUS%{http_code}\n \ https://taotoken.net/api/v1/models \ -H Authorization: Bearer ${TAOTOKEN_API_KEY} head -c 500 /tmp/taotoken_models.json如果HTTP_STATUS200说明 Key 和基础地址至少有一层是通的。如果返回 401优先检查 Key 是否复制完整、环境变量是否在当前终端生效。如果返回 404优先检查 Base URL 是否多写或漏写路径。再发一个最小对话请求curl -sS https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer ${TAOTOKEN_API_KEY} \ -H Content-Type: application/json \ -d { model: YOUR_MODEL_ID, messages: [ { role: user, content: 用一句话确认 WorkBuddy Skill 的模型入口已经切换。 } ] }当这个请求返回 JSON并且包含模型输出内容就可以回到 WorkBuddy 里运行 Skill。一个正常的运行日志大致如下[WorkBuddy][Skill:meeting_minutes] load providertaotoken [WorkBuddy][Skill:meeting_minutes] base_urlhttps://taotoken.net/api [WorkBuddy][Skill:meeting_minutes] modelYOUR_MODEL_ID [WorkBuddy][Skill:meeting_minutes] POST /v1/chat/completions [WorkBuddy][Skill:meeting_minutes] HTTP/1.1 200 OK [WorkBuddy][Skill:meeting_minutes] usage.prompt_tokens812 completion_tokens246 [WorkBuddy][Skill:meeting_minutes] output~/WorkBuddy/out/meeting_minutes.md看到HTTP/1.1 200 OK才说明 Skill、TaoToken、模型 ID 三者对齐。如果日志里打印的 base_url 不是https://taotoken.net/api说明 WorkBuddy 没有读到新配置可能是旧缓存、旧环境变量或配置文件优先级问题。3. Key 获取路径在 TaoToken 控制台只做三件事TaoToken 的角色之所以要厘清是因为 Key 获取路径本身很短。你不需要在 WorkBuddy 里找“申请 Key”也不用在 Skill 配置里猜入口。Key 统一从 TaoToken 官网进入控制台创建。第一件事打开 TaoToken 官网并登录https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentworkbuddy_key_path 。如果你还没有账号先完成注册如果已有账号直接进入控制台。第二件事进入 API Keys 管理页创建一个新 Key。建议命名带用途例如workbuddy-skills方便以后区分是给 WorkBuddy 用的还是给 Claude Code、Codex、CC Switch 用的。第三件事复制 Key并放到 WorkBuddy 能读到的环境变量或配置项里。Key 占位符统一写作YOUR_API_KEY。不要把真实 Key 写进 Skill 分享包、截图、Git 仓库或公开笔记。在 macOS 或 Linux 下可以这样设置export TAOTOKEN_API_KEYYOUR_API_KEY在 Windows PowerShell 下可以这样设置$env:TAOTOKEN_API_KEYYOUR_API_KEY设置后验证环境变量是否可读echo TAOTOKEN_API_KEY${TAOTOKEN_API_KEY:0:8}...这里只显示前 8 位避免完整泄露。然后再次用 curl 检查curl -sS https://taotoken.net/api/v1/models \ -H Authorization: Bearer ${TAOTOKEN_API_KEY} \ | head -c 500如果这个请求能返回模型列表说明 Key 获取路径已经完成。接下来只需要回到 WorkBuddy 的 Skill 模型设置把 Base URL 保持为https://taotoken.net/api把 Key 引用改成TAOTOKEN_API_KEY再保存运行。这里有一个容易忽略的点WorkBuddy 的 Skill 可能运行在 GUI 进程里而你是在终端里export的环境变量。GUI 进程不一定继承终端的环境变量。如果 WorkBuddy 提供了“环境变量”或“密钥管理”面板优先在那里配置如果没有就在启动 WorkBuddy 的同一 shell 里导出变量后再启动或者使用 WorkBuddy 支持的.env文件加载方式。排障时先确认 Skill 进程能读到变量再怀疑 TaoToken。4. 把 TaoToken 接进 Claude Code / Codex / CC Switch三套配置不要混WorkBuddy 的 Skill 不一定直接用 HTTP SDK有些 Skill 会包装 CLI 工具例如 Claude Code、Codex或者通过 CC Switch 切换配置。这时 TaoToken 仍然只给 Key 和地址但不同工具的配置字段完全不同。混用字段是常见的失败原因。4.1 Claude Codesettings.json 与 ANTHROPIC_*Claude Code 读取 Anthropic 相关环境变量。配置文件通常放在用户目录下的.claude/settings.json或者项目级配置中。可以写成{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_ANTHROPIC_MODEL_ID, ANTHROPIC_SMALL_FAST_MODEL: YOUR_ANTHROPIC_FAST_MODEL_ID } }要点有三个ANTHROPIC_BASE_URL填https://taotoken.net/api不要带 UTM。ANTHROPIC_AUTH_TOKEN填YOUR_API_KEY。模型字段按 TaoToken 模型列表里的 ID 替换不要留占位符直接运行。保存后在终端验证 Claude Code 是否读到配置claude --version claude -p 总结当前目录 README 的三条要点如果 WorkBuddy 的 Skill 会调用 Claude Code CLI要确认 Skill 子进程继承了这些环境变量。GUI 启动的 WorkBuddy 可能在另一个环境里执行 Skill导致 Claude Code 读不到ANTHROPIC_*。此时可以在 Skill 的执行动作里显式加一段环境加载或者改用 CC Switch 管理配置。4.2 Codexconfig.toml 与 model_providersCodex 不走ANTHROPIC_*它使用config.toml。把下面配置放到 Codex 对应配置文件中model YOUR_MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat然后在终端导出 Keyexport TAOTOKEN_API_KEYYOUR_API_KEY运行一个最小任务codex 把当前项目 TODO 整理成清单这里最容易犯的错是把 Claude Code 的ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN套到 Codex 上。Codex 不读这些变量它读config.toml里的model_provider和env_key。如果你在 Codex 里填了 Anthropic 字段日志可能显示没有可用供应商或者仍然走默认入口。4.3 CC Switch 三件套CC Switch 常用于在多个 Claude Code 配置之间切换。新增 TaoToken 供应商时核心是三件套Base URLhttps://taotoken.net/apiAPI KeyYOUR_API_KEYModelYOUR_MODEL_ID在 CC Switch 里新建配置时名称可以写TaoToken类型按 Claude Code 兼容配置选择然后把上面三项填进去。保存并切换后最好关闭旧终端重新打开一个终端再运行 Claude Code避免旧环境变量残留。如果 WorkBuddy 的 Skill 通过 CC Switch 启动 Claude Code要确保 Skill 执行用户与 CC Switch 当前用户一致。否则你在 A 用户下切换了配置Skill 却在 B 用户下执行读到的还是旧配置。三套配置的边界可以记成一句话Claude Code 认ANTHROPIC_*Codex 认config.tomlCC Switch 管理 Claude Code 的三件套。TaoToken 在每一套里都只提供 Key 和 Base URL不改变工具本身的调用方式。5. 运行日志与排障从 WorkBuddy Skill 触发到模型返回当 WorkBuddy 的 Skill 开始跑排障要看三段日志Skill 加载配置、HTTP 请求、结果落盘。下面是一段可对照的日志样例[WorkBuddy][Skill:email_draft] providertaotoken [WorkBuddy][Skill:email_draft] base_urlhttps://taotoken.net/api [WorkBuddy][Skill:email_draft] modelYOUR_MODEL_ID [WorkBuddy][Skill:email_draft] POST /v1/chat/completions [WorkBuddy][Skill:email_draft] HTTP/1.1 200 OK [WorkBuddy][Skill:email_draft] usage.prompt_tokens812 completion_tokens246 [WorkBuddy][Skill:email_draft] output~/WorkBuddy/out/email_draft.md如果日志停在POST之前通常是 Skill 没有触发或者本地动作失败。如果日志显示请求发出但没有 200按下面顺序排查。现象常见原因检查点401 UnauthorizedKey 未加载、复制不完整、环境变量未生效echo ${TAOTOKEN_API_KEY:0:8}重新复制 Key404 Not FoundBase URL 多写/v1、少写/api、协议类型选错Base URL 保持https://taotoken.net/api400 model not found模型 ID 与 TaoToken 模型列表不一致用模型列表里的准确 ID 替换429 Too Many Requests并发过高或触发限流降低 Skill 并发检查 Coding Plantimeout本地网络、DNS、防火墙、代理设置先用 curl 验证同一地址返回内容为空Prompt 模板或 Skill 输出映射问题先跑最小对话请求验证模型侧先用 curl 确认 TaoToken 侧export TAOTOKEN_API_KEYYOUR_API_KEY curl -sS -o /dev/null -w models%{http_code}\n \ https://taotoken.net/api/v1/models \ -H Authorization: Bearer ${TAOTOKEN_API_KEY} curl -sS -o /dev/null -w chat%{http_code}\n \ https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer ${TAOTOKEN_API_KEY} \ -H Content-Type: application/json \ -d { model: YOUR_MODEL_ID, messages: [{role: user, content: ping}], max_tokens: 16 }两个状态码都正常后再回到 WorkBuddy 看 Skill 日志。如果 curl 正常但 Skill 失败问题基本在 WorkBuddy 的配置加载、环境变量继承或 Skill 自身逻辑。如果 curl 也失败问题在 Key、Base URL、模型 ID 或本地网络。还有一个常见坑某些 Skill 会在配置里缓存旧 provider。你改了 Base URL 后Skill 仍然请求旧地址。此时删除 Skill 缓存目录或者重新保存一次 Skill 配置再运行。6. WorkBuddy 10 个 Skill 的模型调用边界哪些交给 Skill哪些交给 TaoTokenWorkBuddy 装多个 Skill 后最怕边界模糊。下面用 10 个常见 Skill 类型说明WorkBuddy 负责取上下文、组装请求、处理输出TaoToken 负责鉴权、转发、返回模型结果。Skill 类型WorkBuddy 侧动作TaoToken 侧动作晨报汇总读取 RSS、日历、待办拼 Prompt返回摘要文本会议纪要读取转写文本按段落切分返回结构化纪要邮件草稿读取模板与收件人信息返回邮件正文周报生成汇总本地任务清单与提交记录返回周报草稿文档翻译读取 Markdown分段发送返回译文代码评审摘要读取 diff控制上下文长度返回评审要点Issue 分类取 issue 标题与正文返回标签建议表格清洗读取 CSV构造清洗规则返回清洗建议知识库问答检索本地片段组装引用返回答案竞品监控抓取公开页面去重后送入返回变化摘要这张表可以帮你快速判断问题归属。比如“晨报汇总没生成”先看 WorkBuddy 有没有读到 RSS如果日志显示请求已发出但模型返回空再看 TaoToken 侧是否正常。再比如“邮件草稿格式不对”通常是 WorkBuddy 的 Prompt 模板问题不是 TaoToken 的 Key 问题。需要特别说明如果某个 Skill 需要查数据库正确做法是由 WorkBuddy 在本地脚本里执行只读查询把查询结果当作普通文本传给模型。不要让模型直接连接生产库也不要让 Skill 把数据库连接串写进 Prompt。SQL 和命令应由读者在本地执行模型只处理已经取出的数据。TaoToken 不执行 Skill不读取你的本地文件不写入输出目录也不负责重试 Skill 逻辑。它只暴露一个兼容 API 入口。你可以在 WorkBuddy 里给每个 Skill 配不同的模型 ID但 Base URL 和 Key 都来自 TaoToken。Key 可以按用途拆分例如workbuddy-email、workbuddy-meeting方便后续轮换和排障。如果你想把多个 Skill 逐步迁移到 TaoToken建议顺序是先迁移一个只读、无副作用的 Skill例如晨报汇总或文档翻译。确认日志出现 200并且输出文件正常生成。再迁移写邮件、写周报这类有输出但可人工复核的 Skill。最后迁移定时任务多、并发高的 Skill并观察 429 和超时。每迁移一个就把旧供应商配置注释掉避免自动回退。这样做的原因是TaoToken 只解决模型访问不解决 Skill 编排。先把模型入口稳定下来再调 Skill 的 Prompt 和输出格式排障成本最低。7. CTA按路径完成 Key、模型对话与 Coding Plan到这里WorkBuddy 的 Skill 和 TaoToken 的角色已经清楚Skill 负责自动干活TaoToken 只给 Key 和地址。真正要动手时按下面路径走一遍即可。先在模型对话里验证模型可用https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentworkbuddy_skill_chat 。发一句最小请求确认 Key、Base URL、模型 ID 三者匹配。如果你准备把多个 Skill 都接上并且希望有更稳定的调用计划可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentworkbuddy_skill_coding_plan 。它更适合持续运行、多 Skill 并发的场景。接下来创建或管理 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentworkbuddy_skill_api_keys 。建议按 WorkBuddy 用途命名复制后只放入环境变量或 WorkBuddy 的密钥管理面板。如果你在 WorkBuddy 里包装的是 Claude Code配置细节看 Claude Code 文档https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentworkbuddy_skill_claude_code_doc 。记住 Claude Code 用settings.json和ANTHROPIC_*Codex 用config.tomlCC Switch 管三件套三者不要混。最后回到 WorkBuddy 的 Skill 模型设置Base URL 填https://taotoken.net/apiAPI Key 填YOUR_API_KEY模型 ID 填 TaoToken 模型列表里的准确值。保存后运行一个最小 Skill看日志是否出现 200。如果出现再逐个迁移其他 Skill。TaoToken 官网入口也放在这里方便统一查看https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentworkbuddy_final 。把 Key 和地址填对WorkBuddy 的 Skill 就能继续按你的编排自动干活而 TaoToken 只做它该做的那一段提供 Key 和 Base URL。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进