1. WorkBuddy Skill 调用模型失败的典型字段链路
WorkBuddy 的 Skill 一多,最先出问题的通常不是脚本逻辑,而是模型凭据:Skill 能触发、能读文件,但一到摘要、分类、翻译就返回 401、403 或 model not found。我的处理是把 WorkBuddy 的 Skill 模型设置统一指向 TaoToken,先去 TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_intro 取 Key,再把 Base URL 填为https://taotoken.net/api,最后把 Key 填入 Skill 的模型凭据。这样 10 个 Skill 不用各自复制一套历史配置,排查也只查一条链路。
如果你也装了多个 Skill,建议先别急着改 Skill 的业务代码。真正要确认的是四个字段:模型供应商、Base URL、API Key、模型名。很多“Skill 不工作”的现场,日志里其实是401 invalid api key、404 not found、model does not exist,而不是 Skill 的 Python、Node 或 Shell 逻辑坏了。WorkBuddy 的不同版本里,这些字段可能叫“模型服务”“API 供应商”“接口地址”“密钥”“模型 ID”,但本质相同:它需要知道请求发到哪里、用什么身份、调用哪个模型。
一个典型错误链路是这样的:
- Skill 在 WorkBuddy 里能打开,点击运行后 UI 显示“正在处理”。
- 日志里出现
POST /v1/chat/completions,但状态码是 401。 - 你以为 Skill 权限不够,去改文件读写权限,仍然失败。
- 实际原因是 Key 填的是旧平台,或者 Key 前后多了空格。
- 另一个 Skill 填了正确的 Key,但 Base URL 多写了
/v1,客户端又自动补一次,变成/v1/v1/chat/completions,于是 404。
因此,给 WorkBuddy Skill 加模型能力,最好按“凭据统一、字段对照、日志验证、批量回滚”的顺序做。本文按这个顺序展开,并给出可复制的 Claude Code、Codex、CC Switch 配置,避免把不同工具的配置项混在一起。
2. 从 TaoToken 取 Key:控制台路径与 WorkBuddy 凭据落点
先把 Key 获取路径固定下来。不要在每个 Skill 里单独找 Key,也不要把 Key 写进 Skill 的业务脚本。正确做法是:在 TaoToken 控制台创建一个专用于 WorkBuddy Skill 的 Key,再把它填入 WorkBuddy 的模型凭据设置。
路径如下:
- 打开 TaoToken 官网:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_key_path
- 登录后进入控制台。
- 找到 API Keys 页面。
- 创建一个新 Key,命名建议带上用途,例如
workbuddy-skill-prod或workbuddy-skill-test。 - 复制 Key 后先保存在本地密码管理器或临时安全位置。不要发到聊天群,也不要写进 Git。
- 回到 WorkBuddy 的 Skill 模型设置页,把 Base URL 填为
https://taotoken.net/api。 - 把刚创建的 Key 填入 API Key / Token 字段。
- 模型名填你在 TaoToken 控制台中确认可用的模型 ID,不要凭记忆乱填。
这里的关键点是:Base URL 不加 UTM 参数。营销链接可以带utm_source和utm_content,但配置到工具里的 Base URL 必须是干净的:
https://taotoken.net/apiKey 统一用占位符表示就是:
YOUR_API_KEYWorkBuddy 的 Skill 模型设置里,常见字段和推荐值如下:
| WorkBuddy 字段/界面名称 | 推荐值 | 说明 |
|---|---|---|
| 模型供应商 / Provider | OpenAI-Compatible / Custom | 选择兼容接口,不要选成需要额外 SDK 的私有协议 |
| Base URL / API Endpoint | https://taotoken.net/api | 不要带 UTM,不要随意追加/v1 |
| API Key / Token | YOUR_API_KEY | 从 TaoToken 控制台创建 |
| 模型名 / Model ID | 你在控制台确认的模型 ID | 与 TaoToken 可用模型保持一致 |
| 鉴权方式 | Bearer Token | 请求头通常是Authorization: Bearer YOUR_API_KEY |
| 超时时间 | 60s 到 120s | 长文本 Skill 建议 120s |
| 重试次数 | 2 次 | 只对 429、5xx 做有限重试 |
| 并发数 | 2 到 4 | 按套餐和本机性能调整 |
如果你在 WorkBuddy 里看到的是“凭据管理”而不是“模型设置”,也可以把 Key 放进全局凭据,再让每个 Skill 引用同一个凭据名。这样后续换 Key 只改一处。对于 10 个 Skill 的场景,这一步比逐个填 Key 更稳。
3. WorkBuddy Skill 模型字段对照:provider、base_url、api_key、model
不同版本的 WorkBuddy 对 Skill 配置的暴露方式不同:有的在图形界面里填,有的通过skill.yaml、skill.json或环境变量注入。下面给出一份“能力扩展字段对照”,你可以按本地实际字段名做等价替换。注意,这不是某个特定版本的官方 schema,而是为了让你看清映射关系。
| 能力扩展需求 | 图形界面字段 | 配置文件常见字段 | 环境变量写法 | 填什么 |
|---|---|---|---|---|
| 指定模型供应商 | 模型服务 / Provider | provider | MODEL_PROVIDER | openai_compatible或自定义兼容项 |
| 指定请求入口 | 接口地址 / Base URL | base_url | BASE_URL | https://taotoken.net/api |
| 指定身份凭据 | API Key / Token | api_key | TAOTOKEN_API_KEY | YOUR_API_KEY |
| 指定模型 | 模型 ID / Model | model | TAOTOKEN_MODEL | 控制台确认的模型 ID |
| 控制超时 | 请求超时 | timeout | MODEL_TIMEOUT | 120 |
| 控制重试 | 最大重试 | max_retries | MODEL_MAX_RETRIES | 2 |
| 控制权限 | 技能权限 | permissions | 不适用 | 文件只读、网络仅 API |
一个用于说明字段结构的 WorkBuddy Skill 配置示例可以写成这样:
skill: name: summarize_markdown description: 读取本地 Markdown 并生成摘要 model: provider: openai_compatible base_url: https://taotoken.net/api api_key: YOUR_API_KEY model: YOUR_MODEL timeout: 120 max_retries: 2 permissions: filesystem: read_only network: api_only如果你的 WorkBuddy 不支持在 Skill 内写模型配置,而是用全局模型设置,那么把同样的值填到全局即可:
model_provider: name: TaoToken type: openai_compatible base_url: https://taotoken.net/api api_key: YOUR_API_KEY default_model: YOUR_MODEL重点检查三件事:
base_url是否精确为https://taotoken.net/api。api_key是否来自 TaoToken,而不是其他平台的旧 Key。model是否与 TaoToken 控制台里可用的模型 ID 一致。
如果 Skill 运行时报model not found,优先查模型名;报401,优先查 Key;报404,优先查 Base URL 和实际请求路径;报429,优先查并发和重试策略。
4. Claude Code、Codex、CC Switch 三件套的可复制配置
WorkBuddy 只是调用模型的一端。很多开发者同时还会用 Claude Code、Codex、CC Switch 做编码辅助或配置切换。这里必须强调:不同工具的配置格式不同,不要把 Claude Code 的ANTHROPIC_*变量套到 Codex 里。下面分别给出可复制示例。
4.1 Claude Code:settings.json 与 ANTHROPIC_* 变量
Claude Code 使用settings.json或环境变量管理接入信息。示例配置如下:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_MODEL" } }如果你用 shell 临时验证,也可以这样:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY" export ANTHROPIC_MODEL="YOUR_MODEL"注意:ANTHROPIC_*只用于 Claude Code 这类工具。不要把它写到 Codex 的配置里。
4.2 Codex:config.toml 独立配置
Codex 使用config.toml,接入字段与 Claude Code 不同。示例:
model = "YOUR_MODEL" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat"Key 通过环境变量传入:
export TAOTOKEN_API_KEY="YOUR_API_KEY"这里再次强调:Codex 用TAOTOKEN_API_KEY和base_url,不要写ANTHROPIC_AUTH_TOKEN。把 Claude Code 的变量复制到 Codex,通常不会生效,还可能让你误判为 Key 错误。
4.3 CC Switch:三件套结构
CC Switch 常用于在不同供应商之间切换。它的“三件套”可以理解为:供应商配置、API Key、默认模型映射。示例结构如下:
{ "providers": [ { "name": "TaoToken", "baseUrl": "https://taotoken.net/api", "apiKey": "YOUR_API_KEY", "defaultModel": "YOUR_MODEL" } ] }实际字段名以你本地 CC Switch 版本为准。核心是这三项:baseUrl填https://taotoken.net/api,apiKey填从 TaoToken 控制台创建的 Key,默认模型填你在控制台中确认可用的模型 ID。WorkBuddy 的 Skill 模型设置也遵循同样逻辑,只是字段入口不同。
5. 运行命令、日志与排障:从 401 到 200 的验证顺序
配置完成后,不要直接在 10 个 Skill 上同时开跑。先用一个最小请求验证 Key 和 Base URL 是否通,再让 WorkBuddy 执行单个 Skill。
5.1 先用 curl 验证 TaoToken 凭据
在本地终端执行:
export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_API_KEY="YOUR_API_KEY" export TAOTOKEN_MODEL="YOUR_MODEL" curl -sS "$TAOTOKEN_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "'"$TAOTOKEN_MODEL"'", "messages": [ { "role": "user", "content": "ping" } ], "max_tokens": 16 }'如果返回内容中包含正常回复或合法错误信息,而不是invalid api key,说明 Key 至少已经被识别。接下来再验证 WorkBuddy 的 Skill 执行链路。
5.2 运行单个 WorkBuddy Skill 并保存日志
不同版本的 WorkBuddy CLI 名称可能不同,下面以workbuddy为例。如果你的工具是 GUI 为主,可以在 Skill 调试面板执行同等操作,并把调试日志导出。
workbuddy skill run summarize_markdown \ --input ./demo/input.md \ --verbose 2>&1 | tee workbuddy-skill.log如果 CLI 子命令不同,换成你本地实际命令即可,核心是把--verbose或调试模式打开,保存完整日志。
5.3 用 grep 快速定位错误
grep -E "401|403|404|429|500|base_url|api_key|model" workbuddy-skill.log一个正常日志片段大致应包含:
[skill:summarize_markdown] provider=openai_compatible [skill:summarize_markdown] base_url=https://taotoken.net/api [skill:summarize_markdown] model=YOUR_MODEL [http] POST /v1/chat/completions status=200 latency=1832ms [skill:summarize_markdown] result=ok tokens=...一个 Key 错误日志可能是:
[http] POST /v1/chat/completions status=401 reason=invalid_api_key [skill:summarize_markdown] error: authentication failed排障顺序建议如下:
| 现象 | 优先检查 | 常见原因 | 处理 |
|---|---|---|---|
| 401 | API Key | Key 拼错、过期、带空格、来自其他平台 | 重新从 TaoToken 控制台创建并填入 |
| 403 | 权限/套餐 | 模型未开通或套餐不支持 | 检查控制台可用模型与套餐 |
| 404 | Base URL | 多了/v1或少了客户端要求的路径 | Base URL 保持https://taotoken.net/api |
| 429 | 并发/限流 | 10 个 Skill 同时跑 | 降并发、加重试、错峰 |
| timeout | 超时 | 长文本或网络波动 | 超时调到 120s,重试 2 次 |
| model not found | 模型名 | 模型 ID 与控制台不一致 | 复制控制台模型 ID 再填 |
6. 批量给 10 个 Skill 接入模型:共享凭据、限流与回滚
10 个 Skill 一起跑时,最容易出现的问题不是单个 Skill 配错,而是所有 Skill 同时打满并发。建议把模型配置集中管理,不要在每个 Skill 里硬编码 Key。
可以先定义一个共享环境文件,例如.env.taotoken:
export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_API_KEY="YOUR_API_KEY" export TAOTOKEN_MODEL="YOUR_MODEL" export TAOTOKEN_TIMEOUT="120" export TAOTOKEN_MAX_RETRIES="2" export TAOTOKEN_CONCURRENCY="3"如果 WorkBuddy 支持环境变量引用,Skill 配置里可以写成:
skill: name: classify_inbox model: provider: openai_compatible base_url: ${TAOTOKEN_BASE_URL} api_key: ${TAOTOKEN_API_KEY} model: ${TAOTOKEN_MODEL} timeout: ${TAOTOKEN_TIMEOUT} max_retries: ${TAOTOKEN_MAX_RETRIES} runtime: concurrency: ${TAOTOKEN_CONCURRENCY}如果 WorkBuddy 不支持变量插值,就使用全局凭据引用,只在一个位置保存 Key。批量接入时建议按下面步骤:
- 先选一个低风险 Skill,例如“日志摘要”或“Markdown 目录生成”。
- 填入 Base URL
https://taotoken.net/api和YOUR_API_KEY。 - 运行一次,确认日志出现
status=200。 - 再把同一个凭据引用复制到其他 9 个 Skill。
- 每接一个 Skill,记录它的用途、模型名、并发和超时。
- 全部接完后,再逐步提高并发,不要一上来就 10 个同时跑。
如果你还没有创建专用 Key,可以再次从 TaoToken 官网进入控制台:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_batch 。建议为 WorkBuddy 单独建一个 Key,不要和 Claude Code、Codex 共用同一个 Key。原因不是技术上一定不行,而是排障时无法区分是哪个工具触发了限流或错误。
回滚也要提前准备。最稳的方式是保留旧供应商配置,只把 WorkBuddy 的当前模型设置切换到 TaoToken。出现连续失败时,先切回旧配置,保留日志,再检查是 Key、模型名、并发还是 Base URL 问题。不要在没有日志的情况下反复改 10 个 Skill。
对于 Skill 权限,建议保持最小化:
permissions: filesystem: read_only network: api_only shell: false只有当某个 Skill 确实需要写文件时,再单独放开写权限。网络权限建议只允许访问模型 API,不要让 Skill 任意访问未知地址。涉及数据库或生产系统的操作,应由你在本地或受控环境执行,不要让 Skill 直接连接生产库。
7. 高转化收尾:按模型对话 → Coding Plan → API Keys → Claude Code 文档走一遍
到这里,WorkBuddy Skill 加模型能力的最小闭环已经完成:从 TaoToken 获取 Key,把 Base URL 填为https://taotoken.net/api,再把 Key 填入 WorkBuddy 的 Skill 模型设置,最后用单 Skill 日志验证status=200。如果你还没有确定用哪个模型,或者想先验证对话效果,可以按下面顺序走:
先体验模型对话,确认回复质量和模型选择:
https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_chat如果你准备让 10 个 Skill 长期自动干活,查看 Coding Plan 是否适合你的并发和用量:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_plan需要正式创建 WorkBuddy 专用 Key 时,进入 API Keys 页面:
https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_keys如果你同时配置 Claude Code,参考 Claude Code 文档,注意使用
settings.json和ANTHROPIC_*,不要和 Codex 的config.toml混用:
https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_claude_code
最后再检查一遍 WorkBuddy Skill 模型设置里的四个值:Base URL 是https://taotoken.net/api,API Key 是YOUR_API_KEY,模型名来自 TaoToken 控制台,并发和超时适合你的机器。确认后先跑一个 Skill,观察日志出现status=200,再批量开启其余 Skill。这样扩展 Skill 能力时,你排查的是配置和日志,而不是靠猜。