1. 从 docs 工件到 slides 工件:同一把 Key 的配置断点
TaoToken 官网入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_intro
在 Claude Code 里把同一份 spec 先落成 docs 工件,再切到 slides 工件,表面上只是换了一句提示词,实际最容易断在请求出口:生成文档时走一套ANTHROPIC_BASE_URL,生成演示页时又回到默认端点;或者 docs 用 A Key、slides 用 B Key,结果工件写到一半出现401 authentication_error或404 not_found。Claude Code 近期把文档和幻灯片都作为可共享工件引入工作流:先产出规格文档,收集同事意见,确认后再进入实现;对话侧还能起草单页说明、把内容转成演示页、补齐视觉素材。这个流程要稳定复现,关键不是反复调提示词,而是让 docs 与 slides 两类请求共用同一把 Key、同一个 Base URL。TaoToken 的接入点很直接:先去官网拿 Key,再把 Claude Code 的请求地址设为https://taotoken.net/api。消耗 Token 的是 Claude Code 中生成文档和幻灯片工件的请求,因此把 Key 和端点一次性配平,比给每个工件单独开一套凭证更可控,也更容易在团队里审计用量。
本文按“拿 Key → 配 Claude Code → 生成 docs → 切换 slides → 排障 → 团队协作收口”的顺序展开,所有命令都可以在本地终端执行。你不需要改 Claude Code 的源码,也不需要为 slides 单独装一套供应商配置。核心目标只有一个:同一把YOUR_API_KEY,从 docs 切到 slides 不换 Key、不换 Base URL、不重启新项目。
2. 先去 TaoToken 拿 Key,再确认 Base URL 与消耗边界
TaoToken 官网入口(注册、登录、控制台都在这里):https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_key
拿到 Key 之后,先不要急着往 Claude Code 里塞。你需要确认三件事:
- Key 是给 Claude Code 用的,不是给 Codex 或 Gemini CLI 混用的。Claude Code 走 Anthropic 兼容环境变量,Codex 走
config.toml,两者不要互相套。 - Base URL 填
https://taotoken.net/api。注意这里不加 UTM 参数,UTM 只用于官网入口和 deep link 追踪。 - Key 占位符统一写成
YOUR_API_KEY。在本地配置里替换成真实 Key,不要把真实 Key 提交到 Git。
可以先在终端做一次最小验证:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY" curl -sS "$ANTHROPIC_BASE_URL/v1/messages" \ -H "Content-Type: application/json" \ -H "x-api-key: $ANTHROPIC_AUTH_TOKEN" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 64, "messages": [ {"role": "user", "content": "只回复:taotoken-ok"} ] }'如果返回里能看到正常文本,而不是401、403或404,说明 Key 和 Base URL 已经对上。这里消耗的就是一次普通模型请求。后面 Claude Code 生成 docs 工件、生成 slides 工件,消耗的也是同类请求,只是提示词更长、读取的仓库文件更多、输出的工件内容更大。
如果你还没有 Key,直接去 TaoToken 控制台创建:
- API Keys 页面:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_keys
- 模型对话页面:https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_chat
创建时建议按项目命名,例如claude-code-docs-slides。这样后面在控制台看用量时,你能分清是文档工件消耗多,还是幻灯片工件消耗多。不要给 docs 和 slides 各建一个 Key,除非你有明确的隔离需求;同一把 Key 更适合本文这种“多工件协作者工作流”。
3. Claude Code settings.json:同一把 Key 的持久配置
Claude Code 支持通过settings.json注入环境变量。推荐把配置放到用户级文件里,例如~/.claude/settings.json,这样你在任意仓库执行claude都能命中同一套端点与 Key。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY" } }如果你使用项目级配置,可以放到仓库的.claude/settings.json,但不要把真实 Key 写进去。项目级文件更适合放团队共享的非敏感项,例如:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api" } }真实 Key 继续放在用户级~/.claude/settings.json,或者通过 shell 环境变量注入:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY"这里有一个容易踩的坑:不要同时设置ANTHROPIC_AUTH_TOKEN和ANTHROPIC_API_KEY,也不要把ANTHROPIC_*写到 Codex 的config.toml里。Claude Code 和 Codex 的配置体系不同,混用会导致请求头不一致,表现就是前一个请求成功、后一个请求 401。本文只处理 Claude Code,所以统一用ANTHROPIC_BASE_URL+ANTHROPIC_AUTH_TOKEN。
如果你用 CC Switch 这类多工具切换器,可以把它理解成“三件套”配置入口:Claude Code 管ANTHROPIC_*,Codex 管~/.codex/config.toml,Gemini CLI 管自己的环境变量或配置文件。切换供应商时,只改对应工具的那一套,不要一锅端。Codex 的配置示例单独长这样,注意它不是 Claude Code 的配置:
model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY"再次强调:上面的config.toml是给 Codex 类工具用的;Claude Code 继续用settings.json和ANTHROPIC_*。本文后面所有 docs 与 slides 命令,都默认 Claude Code 已经读到了~/.claude/settings.json里的同一把 Key。
4. 生成 docs 工件:先把 spec 落成可评审文档
假设你有一个普通仓库,里面有README.md、src/、tests/。你要先让 Claude Code 阅读上下文,生成一份可评审的规格文档。推荐把输出固定到docs/spec.md,这样后续 slides 工件可以稳定引用同一个事实源。
非交互模式命令:
claude -p "阅读 README.md、src/ 和 tests/,生成 docs/spec.md。内容必须包含:背景、目标、非目标、接口定义、边界条件、错误处理、验收清单。只写文件,不要修改任何源码。"如果你在交互模式里操作,可以输入:
请阅读当前仓库,生成 docs/spec.md。 要求: 1. 背景与目标分开写; 2. 列出接口入参、出参、错误码; 3. 列出边界条件与不做什么; 4. 给出验收清单; 5. 只写 docs/spec.md,不要改 src/。预期输出对照:
[claude-code] 读取文件:README.md, src/api.ts, src/types.ts, tests/api.test.ts [claude-code] 生成工件:docs/spec.md [claude-code] 写入 1 个文件 [claude-code] 未修改源码文件此时消耗的 Token 来自“读取仓库 + 生成文档工件”的请求。文档越长、你让它读取的文件越多,消耗越高。所以文档工件阶段建议先给范围:只读src/下的核心文件,不要一上来把整个 monorepo 扫一遍。你可以用一句提示词约束:
只读取 src/api/ 和 src/types/,不要读取 node_modules、dist、coverage。生成后先不要急着实。先让同事评审docs/spec.md。评审意见可以继续用 Claude Code 整理,但整理请求仍然走同一把 Key:
claude -p "读取 docs/spec.md 和 docs/review-notes.md,输出 docs/spec-revised.md。合并评审意见,保留未决问题清单。只写文件。"这一步的输出对照:
[claude-code] 读取文件:docs/spec.md, docs/review-notes.md [claude-code] 生成工件:docs/spec-revised.md [claude-code] 写入 1 个文件 [claude-code] 未修改源码文件到这里,docs 工件已经稳定。下一步才是把同一份规格转成 slides 工件,而不是重新让模型凭空编一份演示内容。
5. 从 docs 切到 slides:命令与输出对照
从 docs 切到 slides,理想状态是“换命令、换输出路径,不换 Key、不换 Base URL”。你可以继续用同一个 Claude Code 会话,也可以新开一个终端;只要~/.claude/settings.json没变,请求仍然走 TaoToken。
生成 slides 工件命令:
claude -p "基于 docs/spec-revised.md 生成 slides/overview.md。使用 Marp 兼容 Markdown,16:9。必须包含 8 页:封面、背景、目标、架构、接口、流程、风险、里程碑。只写文件,不要修改 docs/ 和 src/。"交互模式提示词可以写得更具体:
读取 docs/spec-revised.md,生成 slides/overview.md。 要求: 1. 使用 Marp 兼容格式; 2. 每页一个二级标题; 3. 第 4 页画架构文字描述,不要用 mermaid; 4. 第 5 页列接口示例; 5. 第 7 页列风险与缓解; 6. 只写 slides/overview.md。预期输出对照:
[claude-code] 读取文件:docs/spec-revised.md [claude-code] 生成工件:slides/overview.md [claude-code] 写入 1 个文件 [claude-code] 未修改 docs/ 与 src/如果你希望同时保留 Markdown 源文件和演示页,可以再加一步:
claude -p "读取 slides/overview.md,生成 slides/overview.pptx 的转换说明,并输出到 slides/export.md。不要直接调用外部二进制,只写转换步骤。"输出对照:
[claude-code] 读取文件:slides/overview.md [claude-code] 生成工件:slides/export.md [claude-code] 写入 1 个文件 [claude-code] 未修改 slides/overview.md到这里,你应该能看到两个工件:
| 工件阶段 | 输入 | 命令核心 | 输出 | Key 来源 | Token 消耗点 |
|---|---|---|---|---|---|
| docs | README、src、tests | claude -p "生成 docs/spec.md" | docs/spec.md | YOUR_API_KEY | 读取仓库 + 生成文档 |
| docs 修订 | docs/spec.md、评审意见 | claude -p "生成 docs/spec-revised.md" | docs/spec-revised.md | 同一把YOUR_API_KEY | 读取文档 + 合并意见 |
| slides | docs/spec-revised.md | claude -p "生成 slides/overview.md" | slides/overview.md | 同一把YOUR_API_KEY | 读取文档 + 生成幻灯片 |
| 导出说明 | slides/overview.md | claude -p "生成 slides/export.md" | slides/export.md | 同一把YOUR_API_KEY | 读取 slides + 生成说明 |
验证是否真的用了同一把 Key,可以检查配置文件:
grep -n "ANTHROPIC_BASE_URL\|ANTHROPIC_AUTH_TOKEN" ~/.claude/settings.json预期输出类似:
5: "ANTHROPIC_BASE_URL": "https://taotoken.net/api", 6: "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"再验证一次当前 shell 有没有被旧环境变量污染:
env | grep -E "ANTHROPIC_(BASE_URL|AUTH_TOKEN|API_KEY)"如果出现两个不同的ANTHROPIC_BASE_URL,以 Claude Code 实际读取到的settings.json为准,但最好清理 shell 里的旧值,避免交互模式和非交互模式表现不一致。
6. 多工件协作者工作流:docs 先评审,slides 同步,实现收口
多工件协作最容易乱的地方,是文档、演示页、实现三套内容各自演化。更稳的流程是:
- 规格文档先行。让 Claude Code 生成
docs/spec.md,只读核心目录,输出接口、边界、验收清单。 - 同事评审。把
docs/spec.md或docs/spec-revised.md放进 PR、共享盘或团队知识库,收集意见。 - 幻灯片同步。基于同一份修订后文档生成
slides/overview.md,只改变表达形式,不引入新事实源。 - 实现收口。评审通过后,再让 Claude Code 按
docs/spec-revised.md实现,并补测试。 - 全程同一把 Key。docs 请求、slides 请求、最终实现请求都走 TaoToken 的
https://taotoken.net/api,方便在控制台按项目看消耗。
实现收口命令示例:
claude -p "严格按照 docs/spec-revised.md 实现 src/ 中的功能,补充 tests/ 下的单元测试。不要修改 docs/spec-revised.md。完成后输出变更文件列表和测试命令。"输出对照:
[claude-code] 读取文件:docs/spec-revised.md, src/, tests/ [claude-code] 修改文件:src/api.ts, src/service.ts [claude-code] 新增文件:tests/spec.test.ts [claude-code] 未修改 docs/spec-revised.md [claude-code] 建议测试命令:npm test这一步仍然消耗 Token,但消耗点已经变成“读取规格 + 读取源码 + 生成实现与测试”。如果你在控制台看到用量突然上涨,优先检查是不是让 Claude Code 读取了过多无关目录,而不是先怀疑 Key 失效。
多工件协作者工作流还有一个细节:不要把 slides 当成事实源。slides 只负责表达,规格文档负责定义。如果有人直接在slides/overview.md里改接口定义,下一次实现仍然会以docs/spec-revised.md为准,最终两边不一致。正确做法是改文档,再重新生成 slides:
claude -p "docs/spec-revised.md 已更新。请基于新版本重新生成 slides/overview.md,覆盖旧文件。只写 slides/overview.md。"输出对照:
[claude-code] 读取文件:docs/spec-revised.md [claude-code] 覆盖文件:slides/overview.md [claude-code] 写入 1 个文件 [claude-code] 未修改 docs/ 与 src/7. 常见排障:401、404、模型名与上下文超限
即使 Key 和 Base URL 都写对了,也可能因为环境变量冲突、路径多写、模型名不匹配而失败。下面按现象拆开。
7.1 401 authentication_error
常见原因:
YOUR_API_KEY没有替换成真实 Key。ANTHROPIC_AUTH_TOKEN和ANTHROPIC_API_KEY同时存在,且值不一致。- 用了 Codex 的 Key 去请求 Claude Code 的端点。
- 项目级
.claude/settings.json覆盖了用户级配置,但里面没有 Key。
排查命令:
echo "$ANTHROPIC_BASE_URL" echo "$ANTHROPIC_AUTH_TOKEN" | cut -c1-6 grep -n "ANTHROPIC" ~/.claude/settings.json .claude/settings.json 2>/dev/null如果输出里出现两个不同的 Key 前缀,先统一到同一把 Key。注意不要把完整 Key 打印到终端日志里。
7.2 404 not_found
最常见的是 Base URL 多写了/v1。Claude Code 会在ANTHROPIC_BASE_URL后面拼接请求路径,所以正确写法是:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY" } }不要写成https://taotoken.net/api/v1,否则可能变成/api/v1/v1/messages。如果你不确定,先用第 2 节的curl验证$ANTHROPIC_BASE_URL/v1/messages是否可达。
7.3 模型名不可用
不要在 Claude Code 里硬编码一个未确认的模型名。先在 TaoToken 控制台或模型对话页确认当前可用模型,再决定是否配置ANTHROPIC_MODEL。如果只是日常 docs 和 slides 工件,可以先不写模型名,让 Claude Code 使用默认选择;当你要做成本对比时,再在settings.json中显式指定。
7.4 上下文超限与 Token 消耗异常
生成 docs 和 slides 时,最容易把上下文拉满的是“读取整个仓库”。建议用提示词限制目录:
只读取 src/api/、src/types/、docs/spec-revised.md,不要读取 node_modules、dist、coverage、.git。如果你发现同一个 slides 工件反复生成、反复失败,可能是输出格式约束太矛盾:既要 Marp 兼容,又要 HTML 内嵌,又要图表。先固定为纯 Markdown,确认成功后再加样式要求。每一次失败重试都会消耗 Token,所以排障时先看错误码,不要连续盲目重跑。
TaoToken 官网控制台入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_troubleshoot
8. 团队协作与成本可观测:同一把 Key 的收尾建议
同一把 Key 不是“把权限放大”,而是“把配置收敛”。团队里可以这样落地:
- 在 TaoToken 控制台按项目创建 Key,例如
claude-code-docs-slides。 - 把
ANTHROPIC_BASE_URL写成固定值https://taotoken.net/api,写进团队文档。 - 把真实 Key 放在个人用户级
~/.claude/settings.json,不要提交到仓库。 - 如果使用 CC Switch,把 Claude Code 的
ANTHROPIC_*、Codex 的config.toml、Gemini CLI 的配置分开维护。 - 为 docs 工件和 slides 工件约定固定输出路径:
docs/spec.md、docs/spec-revised.md、slides/overview.md。 - 在 PR 模板里加一条:如果修改了接口或边界,先更新
docs/spec-revised.md,再重新生成 slides。
成本可观测方面,重点看三类请求:
- 生成 docs 工件:读取源码多,输入 Token 高。
- 修订 docs 工件:读取文档和评审意见,输入中等。
- 生成 slides 工件:读取修订文档,输出 Markdown 多,输出 Token 高。
如果想让 slides 更省,可以限制页数和每页要点数:
生成 slides/overview.md,最多 8 页,每页不超过 6 个要点,每点不超过 20 字。如果想让 docs 更省,可以先让 Claude Code 输出目录结构,再决定读哪些文件:
claude -p "列出 src/ 下与 API 相关的文件,按重要性排序,不要读取全文。"确认范围后再生成docs/spec.md,比一次性全仓库扫描更稳定。
9. 文末 CTA:模型对话 → Coding Plan → 创建 Key → Claude Code 文档
如果你已经准备好把 Claude Code 的 docs 与 slides 工件切到同一把 Key,可以按下面路径继续:
先在模型对话里验证你的提示词是否能生成合格工件:
https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_chat需要长期跑 Claude Code 多工件工作流,查看 Coding Plan:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_plan创建或查看 API Keys,把
YOUR_API_KEY替换成真实 Key:
https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_keys需要核对 Claude Code 的环境变量与配置方式,查看 Claude Code 文档:
https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=claude_code_docs_slides_doc
回到核心结论:Claude Code 从 docs 切到 slides,不需要换 Key。把ANTHROPIC_BASE_URL固定为https://taotoken.net/api,把ANTHROPIC_AUTH_TOKEN设为同一把YOUR_API_KEY,然后用docs/spec.md → docs/spec-revised.md → slides/overview.md这条路径跑一遍。你会得到可评审的文档工件、可演示的幻灯片工件,以及一个在控制台可追踪的 Token 消耗视图。下一步就是把这套配置写进团队模板,让多工件协作不再卡在 401 和 404 上。