1. 从 WorkBuddy 的 401 弹窗说起:Skill 自动化先要固定模型入口
在 WorkBuddy 的 Skill 模型设置里,把 Base URL 改成https://taotoken.net/api之前,你大概率会先遇到一个401 invalid api key的弹窗。这个弹窗通常不是 Skill 逻辑写错了,而是模型供应商那一层没有配置成你当前可用的 Key。本文面向自动化工作流搭建者,目标很明确:把 WorkBuddy 装 10 个 Skill 自动干活的流程拆成可复现步骤,而 TaoToken 在这个流程里只承担一件事——提供 Key。你从 TaoToken 官网获取 Key,再把 Base URL 和 Key 填到 WorkBuddy 的 Skill 模型设置里即可。官网入口在这里:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_intro
为什么强调“只提供 Key”?因为 WorkBuddy 的 Skill 自动化本质上是一个编排层:它负责触发、收集输入、调用模型、解析输出、写回文件或工单。模型后端可以换,但编排逻辑最好保持稳定。你不需要把每个 Skill 都重写一遍,只需要把 Skill 的模型供应商从默认配置切到 TaoToken 兼容入口,让所有 Skill 共享同一把 Key 和同一个 Base URL。这样做的好处是排障路径变短:Skill 跑不通时,先看 Key 是否有效,再看 Base URL 是否填错,最后才看提示词和输入数据。
本文会给出三类可复现产出:第一,WorkBuddy Skill 的配置片段,覆盖 10 个常见自动化 Skill 的模型调用点;第二,Key 获取路径,从 TaoToken 官网到 API Keys 页面;第三,运行命令与日志,先用curl验证连通性,再让 WorkBuddy 执行 Skill。整个过程不涉及把 Agent 直连 Oracle 或生产库,所有 SQL、Shell 命令都由你在本地终端执行。你可以把下面的配置当成模板,按 WorkBuddy 当前版本的字段名微调。
2. WorkBuddy 十个 Skill 的模型调用点:哪些走 TaoToken,哪些只做本地编排
把 10 个 Skill 串成自动化流水线后,每天省下来的时间来自减少重复操作,而不是让模型替你执行高风险命令。下面这张表按“模型调用强度”拆解常见 Skill。你可以只把需要自然语言理解的环节走 TaoToken,把文件扫描、日志切分、SQL 执行、命令运行留在本地。
| Skill 名称 | 触发方式 | 模型调用点 | 本地执行部分 |
|---|---|---|---|
| 日报汇总 | 工作日 18:00 | 把日志归纳成 Markdown 表格 | 读取日志文件、写入报告 |
| 会议纪要 | 手动或日历事件 | 提取待办、负责人、截止时间 | 读取字幕文件、保存纪要 |
| 邮件草稿 | 收到指定标签邮件 | 生成回复草稿 | 调用本地邮件客户端 API |
| 工单分类 | Webhook 或轮询 | 判断优先级、标签、队列 | 更新本地工单系统 |
| 知识库问答 | 手动提问 | 基于检索片段生成回答 | 本地向量检索、读取文档 |
| 代码评审辅助 | Git pre-push | 总结变更风险、生成检查清单 | 运行 lint、单元测试 |
| SQL 草稿 | 手动描述需求 | 生成 SQL 草稿和解释 | 由你在本地数据库客户端执行 |
| 竞品监控 | 每日定时 | 总结页面变化、提取差异 | 抓取公开页面、保存快照 |
| 周报生成 | 周五 17:30 | 合并多份日报、生成周报 | 读取日报目录、归档 |
| 文档翻译 | 文件变更 | 翻译 Markdown 片段 | 保留代码块、写回文件 |
这张表的核心原则是:模型只做“理解与生成”,本地脚本做“读取与执行”。比如 SQL 草稿 Skill,模型可以帮你把“找出最近 7 天未支付订单”转成一条 SELECT 语句,但不要让它通过 MCP 或 Agent 直连 Oracle、MySQL 生产库。正确做法是:Skill 输出 SQL 到./drafts/query-$(date +%F).sql,你在本地客户端里 review 后手动执行。这样既保留了自动化效率,又不会把生产库暴露给自动化链路。
在 WorkBuddy 里,每个 Skill 的模型设置通常位于 Skill 详情页的 Model Provider 区域。不同版本菜单可能叫“模型服务”“自定义模型”“OpenAI Compatible”,但字段语义一致:Base URL、API Key、Model。你只需要把 Base URL 填为https://taotoken.net/api,API Key 填从 TaoToken 获取的YOUR_API_KEY,Model 按控制台模型列表选择。这样 10 个 Skill 共享同一套模型入口,后续换 Key 或换模型时只改一处。
3. 在 WorkBuddy 里填 Base URL 和 Key:从官网 UTM 到 API Keys 页面的路径
Key 获取路径建议按下面顺序走,避免在多个页面之间来回找。第一步,打开 TaoToken 官网:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_config 。第二步,登录你的账号。第三步,进入 API Keys 页面创建 Key:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_keys 。第四步,复制 Key,回到 WorkBuddy 的 Skill 模型设置里粘贴。注意 Base URL 固定为https://taotoken.net/api,不要在这个 URL 后面追加 UTM 参数,UTM 只用于官网页面追踪,不用于 API 请求。
WorkBuddy 的 Skill 模型配置可以抽象成下面这段 YAML。不同版本的字段名可能不同,但你可以按语义映射:provider选自定义/OpenAI 兼容,base_url填 TaoToken 的 API 地址,api_key填你的 Key,model填控制台里可用的模型 ID。建议把 Key 放在环境变量里,而不是硬编码到 Skill 文件。这样即使你把配置分享给同事,也不会泄露 Key。
skill: daily_report trigger: type: schedule cron: "0 18 * * 1-5" model: provider: openai_compatible base_url: https://taotoken.net/api api_key: ${TAOTOKEN_API_KEY} model: YOUR_MODEL_ID temperature: 0.2 max_tokens: 2048 actions: - collect: path: ./logs/app-$(date +%F).log - prompt: | 你是日报汇总助手。请把输入日志按模块归纳为 Markdown 表格, 列包括:模块、关键事件、影响范围、建议动作。 不要编造日志中不存在的错误码。 - write: path: ./reports/daily-$(date +%F).md如果你在 WorkBuddy 里找不到 YAML 导入入口,就按 UI 表单逐项填写:Provider 选Custom / OpenAI Compatible,Base URL 填https://taotoken.net/api,API Key 填YOUR_API_KEY,Model 填YOUR_MODEL_ID。填完后先不要跑完整 Skill,先用下一节的curl命令验证 Key 是否有效。很多401不是 WorkBuddy 的问题,而是 Key 复制时多了空格,或者把 Base URL 填成了官网首页。记住:官网首页是https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_skill_config,API Base URL 是https://taotoken.net/api,两者不要混用。
4. 可复制的 Skill 配置片段:WorkBuddy + TaoToken 的 OpenAI 兼容写法
下面给出一段更完整的 WorkBuddy Skill 配置片段,覆盖“日志收集 → 模型归纳 → 报告落盘”三步。你可以把它复制到 WorkBuddy 的自定义 Skill 目录,按实际路径修改collect.path和write.path。注意,模型调用只发生在prompt步骤,文件读取和写入都由 WorkBuddy 本地执行。
skill: incident_digest trigger: type: manual model: provider: openai_compatible base_url: https://taotoken.net/api api_key: ${TAOTOKEN_API_KEY} model: YOUR_MODEL_ID temperature: 0.1 actions: - collect: path: ./incidents/2026-01-15 pattern: "*.log" - prompt: | 你是值班摘要助手。请从输入日志中提取: 1. 发生时间线; 2. 受影响服务; 3. 已执行动作; 4. 待确认问题。 输出 Markdown,不要输出 SQL,不要输出删除命令。 - write: path: ./digests/incident-2026-01-15.md如果你需要让 Skill 调用本地脚本,可以把模型输出保存为临时文件,再由本地脚本读取。例如,SQL 草稿 Skill 只负责生成 SQL 文本,执行动作单独放在local_execute步骤,并且默认关闭自动执行。
skill: sql_draft trigger: type: manual model: provider: openai_compatible base_url: https://taotoken.net/api api_key: ${TAOTOKEN_API_KEY} model: YOUR_MODEL_ID temperature: 0 actions: - prompt: | 根据用户描述生成一条只读 SQL 草稿,并解释每个 WHERE 条件。 只允许 SELECT,不允许 INSERT、UPDATE、DELETE、DROP。 - write: path: ./drafts/query-$(date +%F-%H%M).sql - local_execute: enabled: false command: "echo '请人工 review 后在本地数据库客户端执行'"这样配置后,WorkBuddy 的 Skill 不会直接碰生产库,也不会把YOUR_API_KEY写进 SQL 文件。模型只输出草稿,本地执行步骤默认关闭。如果团队需要审批,可以把local_execute.command改成打开本地编辑器或通知审批人。关键点:TaoToken 只提供模型 Key,不参与数据库连接,也不替你做权限控制。
5. 运行命令与日志:用 curl 先验证 Key,再让 WorkBuddy 跑 Skill
在 WorkBuddy 里点“运行”之前,建议先用curl验证 TaoToken 的 Key 和 Base URL 是否匹配。下面这段命令可以在 macOS、Linux、WSL 的终端里执行。把YOUR_API_KEY换成你从 API Keys 页面复制的 Key,把YOUR_MODEL_ID换成控制台里可用的模型 ID。命令会把响应同时输出到终端并写入./taotoken-connect.log。
export TAOTOKEN_API_KEY="YOUR_API_KEY" export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_MODEL="YOUR_MODEL_ID" 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": "system", "content": "你是 WorkBuddy Skill 的模型后端。"}, {"role": "user", "content": "用一句话确认 TaoToken 连通。"} ], "temperature": 0 }' | tee ./taotoken-connect.log如果返回 JSON 里包含choices和content,说明 Key、Base URL、Model 三件套基本正确。接下来在 WorkBuddy 里运行一个低风险 Skill,比如“日报汇总”。你可以在 WorkBuddy 的日志面板看到类似下面的输出:
[WorkBuddy][Skill:daily_report] provider=openai_compatible base=https://taotoken.net/api model=YOUR_MODEL_ID [WorkBuddy][Skill:daily_report] collect=./logs/app-2026-01-15.log lines=1842 [WorkBuddy][Skill:daily_report] request_id=req_xxxxxxxx [WorkBuddy][Skill:daily_report] status=200 duration=842ms [WorkBuddy][Skill:daily_report] output=./reports/daily-2026-01-15.md如果看到401,优先检查三件事:Key 是否复制完整、请求头是否带了Bearer、Base URL 是否误填成官网首页。如果看到404,检查 Base URL 是否为https://taotoken.net/api,以及工具是否自动追加了/v1。有些工具要求你填到版本段,有些工具会自动拼接,保持https://taotoken.net/api作为 Base URL 是本文的约定。如果看到429,说明并发或频率触发了限制,降低 Skill 并发数,或者把多个小请求合并成一次批量请求。如果超时,先检查本地网络到taotoken.net的连通性,再检查输入日志是否过大。
6. 同一把 Key 复用到 Claude Code 与 Codex:settings.json 和 config.toml 不要混用
WorkBuddy 的 Skill 模型设置只是第一处。很多自动化工作流搭建者会同时在终端里用 Claude Code 或 Codex 做辅助操作。这时可以把同一把 TaoToken Key 复用到这些工具,但配置格式必须分开:Claude Code 用settings.json和ANTHROPIC_*环境变量,Codex 用config.toml。不要把ANTHROPIC_*套到 Codex,也不要把 Codex 的model_providers段塞进 Claude Code。
Claude Code 的settings.json可以这样写。把YOUR_API_KEY换成你的 TaoToken Key,把YOUR_MODEL_ID换成控制台模型列表里的 ID。ANTHROPIC_BASE_URL填https://taotoken.net/api。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_MODEL_ID" } }Codex 的config.toml使用另一套写法。base_url同样填https://taotoken.net/api,但 Key 通过环境变量TAOTOKEN_API_KEY传入。下面是一个最小示例:
model = "YOUR_MODEL_ID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY"然后在终端里导出 Key:
export TAOTOKEN_API_KEY="YOUR_API_KEY"如果你用 CC Switch 管理多套配置,记住三件套:Base URL、API Key、Model。Base URL 统一填https://taotoken.net/api,API Key 填YOUR_API_KEY,Model 按控制台选择。三件套不要混:Claude Code 的配置不要出现model_providers,Codex 的配置不要出现ANTHROPIC_BASE_URL。这样在 WorkBuddy、Claude Code、Codex 之间切换时,排障路径才不会乱。
7. 自动化流程片段:日报 Skill 从触发到生成 Markdown 的完整链路
下面给出一段可复现的 Shell 脚本,模拟 WorkBuddy Skill 的“收集 → 调用 → 落盘”链路。它不是要替代 WorkBuddy,而是让你在接入 TaoToken 之前先确认模型调用和文件读写都能跑通。脚本会把日志摘要请求发给 TaoToken 的 OpenAI 兼容接口,并把模型返回的 JSON 保存到本地。
#!/usr/bin/env bash set -euo pipefail export TAOTOKEN_API_KEY="YOUR_API_KEY" export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_MODEL="YOUR_MODEL_ID" REPORT_DIR="./reports" LOG_FILE="./logs/app-$(date +%F).log" OUT_FILE="$REPORT_DIR/daily-$(date +%F).md" mkdir -p "$REPORT_DIR" if [ ! -f "$LOG_FILE" ]; then echo "[ERROR] 日志文件不存在: $LOG_FILE" exit 1 fi SUMMARY_INPUT=$(tail -n 500 "$LOG_FILE") RESP=$(curl -sS "$TAOTOKEN_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d "$(jq -n \ --arg model "$TAOTOKEN_MODEL" \ --arg content "$SUMMARY_INPUT" \ '{ model: $model, messages: [ {role: "system", content: "你是 WorkBuddy 日报 Skill。输出 Markdown 表格,不要编造错误码。"}, {role: "user", content: $content} ], temperature: 0.2 }')") echo "$RESP" > "$REPORT_DIR/raw-$(date +%F).json" echo "$RESP" | jq -r '.choices[0].message.content // "模型未返回内容"' > "$OUT_FILE" echo "[OK] 报告已生成: $OUT_FILE"这段脚本依赖jq和curl。如果你本地没有jq,可以手动拼 JSON,或者用 Python 的json模块。运行后你会看到类似日志:
[OK] 报告已生成: ./reports/daily-2026-01-15.md如果模型返回401,脚本会写入原始 JSON,你可以在raw-2026-01-15.json里看到错误信息。如果返回429,可以减少tail -n 500的行数,或者把多个日志文件分批处理。如果返回内容为空,检查模型 ID 是否在 TaoToken 控制台可用。这个脚本的价值在于:它把 WorkBuddy Skill 的模型调用部分抽离出来,让你可以先验证 Key 和 Base URL,再把同样的配置搬进 WorkBuddy。
8. 文末 CTA:模型对话 → Coding Plan → 创建 Key → Claude Code 文档
如果你还没有开始配置,建议按这个顺序走:先到模型对话页面看看当前可用的模型和对话效果,再选择适合自动化工作流的 Coding Plan,然后创建 API Key,最后把 Key 填到 WorkBuddy 的 Skill 模型设置里。如果你同时使用 Claude Code,可以再看一下 Claude Code 文档,确认settings.json的字段没有和 Codex 的config.toml混用。
模型对话入口:https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_chat
Coding Plan 入口:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_plan
创建 Key 入口:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_keys
Claude Code 文档:https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=workbuddy_claudecode
回到 WorkBuddy 的 Skill 自动化,你只需要记住一条主线:TaoToken 只提供 Key,WorkBuddy 负责编排,本地脚本负责执行。Base URL 固定填https://taotoken.net/api,Key 填YOUR_API_KEY,模型填控制台里可用的YOUR_MODEL_ID。把 10 个 Skill 的模型入口统一之后,日报汇总、会议纪要、工单分类、周报生成这些重复动作就可以稳定跑在同一条链路上。遇到401先查 Key,遇到404先查 Base URL,遇到429先降并发,遇到超时先缩输入。按这个顺序排障,WorkBuddy 的 Skill 自动化会比逐个 Skill 改提示词快得多。