1. 为什么 Claude Code 工作流会盯上 DeepSeek V4 Pro 的账单Claude Code 默认走 Anthropic 官方模型重度用一段时间后账单会让人开始琢磨多文件重构、Sub-Agent 并行、测试修错循环每一次都在烧 token。原文场景 4 里作者的做法是改~/.zshrc把ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL、CLAUDE_CODE_SUBAGENT_MODEL指向 DeepSeek V4 Pro/Flash。这个思路在 TaoToken 上同样成立先去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并创建 TaoToken Key再把 Claude Code 的兼容通道指到https://taotoken.net/api模型 ID 以模型广场当时列表为准。问题不是“能不能切”而是切完之后/status是否真的显示新端点、FMEA 模块重构和 Sub-Agent 任务是否照常跑通。1.1 Agent 循环没变变的是每轮调用的模型入口Claude Code 的执行机制还是那个 Agent 循环读取CLAUDE.md、解析任务意图、制定步骤、调用 Read File / Write File / Bash / Web Search 等工具再把结果写回 Context Window。它不会因为换了模型就变成另一套工具链也不会因为改了 Base URL 就绕过项目配置。真正变化的是每一轮“想”和“写代码”时请求发往哪里、由哪个模型处理。这也是切到 DeepSeek V4 Pro 的价值所在主力规划、多文件重构、复杂 Bug 分析交给 Pro轻量 Sub-Agent、扫描、摘要、分类任务交给 Flash 这类更快更省的型号。原文里作者把CLAUDE_CODE_SUBAGENT_MODEL单独指到 Flash就是在保留主 Agent 能力的同时把并行子任务的成本压下来。你不需要重写 Claude Code 的工作流只需要把模型入口换到统一 API 通道。1.2 原文场景 4 的几个变量分别控制什么ANTHROPIC_BASE_URL决定 Claude Code 把请求发到哪个 API 入口。原文指向 DeepSeek 的 Anthropic 兼容地址这次改成https://taotoken.net/api末尾不要加/v1也不要在这里加任何查询参数。ANTHROPIC_AUTH_TOKEN放 API Key原文写“你的DeepSeek_API_Key”现在换成你在控制台创建的YOUR_API_KEY。ANTHROPIC_MODEL控制主模型对应你从模型广场复制的 DeepSeek V4 Pro 模型 ID。ANTHROPIC_DEFAULT_HAIKU_MODEL和CLAUDE_CODE_SUBAGENT_MODEL控制轻量任务与 Sub-Agent通常填 Flash 对应模型 ID。这些变量本质上是 Claude Code 启动时读取的环境配置。写进~/.zshrc后每次开新终端都生效写进~/.claude/settings.json的env里则更贴近项目或用户级配置。两种方式可以只选一种也可以组合但要避免旧值覆盖新值。1.3 这次不从 DeepSeek 单独申请 Key原文场景 4 的路径是去 DeepSeek 拿 Key再填到 Claude Code。这里换一条更省事的路径打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册账号进入控制台创建 API Key然后在同一个站点的模型广场确认 DeepSeek V4 Pro/Flash 在当前兼容通道里的准确模型 ID。这样 Claude Code 只需要认一个 Base URL、一把 Key、一组模型名不需要在多个平台之间来回切换。注意模型广场里的模型 ID 可能带有通道标识或后缀不要直接照抄博客里的旧写法。原文里的deepseek-v4-pro[1m]只是当时的示例实际以你打开模型广场时看到的列表为准。2. 先拿兼容通道 Key模型广场确认 DeepSeek V4 Pro/Flash 的 ID2.1 注册并创建 API Key打开 TaoToken完成注册登录后进入控制台找到 API Keys 页面创建一个新的 Key。名称可以写成claude-code-deepseek-v4方便后面在用量记录里识别。创建完成后复制出来暂时放在本地密码管理器或临时环境变量里不要直接提交到 Git 仓库也不要贴到截图里。接下来把命令里的 Key 统一写成占位符YOUR_API_KEY。如果你已经在~/.zshrc里写过别的 Key先把旧行注释掉避免两个变量同时存在时读到错误值。Key 的权限、可用模型、额度状态都在控制台里查看后面/status出现 401 时也要回到这里核对。2.2 模型广场确认 DeepSeek V4 Pro/Flash 的模型 ID打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的模型广场搜索 DeepSeek V4 Pro 和 Flash把兼容通道标注的模型 ID 复制下来。主模型填到ANTHROPIC_MODEL轻量模型填到ANTHROPIC_DEFAULT_HAIKU_MODEL和CLAUDE_CODE_SUBAGENT_MODEL。如果你只找到 Pro 的 ID也可以先把 Sub-Agent 模型留空或与主模型一致等确认列表后再拆开。这里不要自己拼日期后缀也不要凭记忆写gpt-5之类的模型名。Claude Code 对模型名很直接模型 ID 不存在时通常不会自动降级而是直接报模型错误。把模型广场里的 ID 原样复制能省掉一大半排障时间。2.3 备份 shell 配置和 Claude Code 设置改~/.zshrc之前先备份cp ~/.zshrc ~/.zshrc.bak如果你还打算改~/.claude/settings.json也先复制一份cp ~/.claude/settings.json ~/.claude/settings.json.bak备份的意义不是形式主义。切换 Base URL 后如果/status显示旧端点你可以快速对比新旧配置判断是环境变量没生效还是settings.json里的env覆盖了 shell。尤其当项目里还有.env、direnv、IDE 终端配置时保留一份可回退的文件比反复猜更有效。3. 在 ~/.zshrc 和 ~/.claude/settings.json 里填兼容通道3.1 ~/.zshrc 的环境变量写法macOS 和 Linux 下最直接的方式还是写进~/.zshrc。把下面几行追加到文件末尾# Claude Code 走统一 API 通道 export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_MODELYOUR_DEEPSEEK_V4_PRO_MODEL_ID export ANTHROPIC_DEFAULT_HAIKU_MODELYOUR_DEEPSEEK_V4_FLASH_MODEL_ID export CLAUDE_CODE_SUBAGENT_MODELYOUR_DEEPSEEK_V4_FLASH_MODEL_ID其中YOUR_API_KEY从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建YOUR_DEEPSEEK_V4_PRO_MODEL_ID和YOUR_DEEPSEEK_V4_FLASH_MODEL_ID从模型广场复制。保存后执行source ~/.zshrc echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_MODEL如果echo出来的 Base URL 是https://taotoken.net/api末尾没有/v1说明 shell 这一层已经就绪。接着重新打开一个终端窗口确保 Claude Code 从新环境启动。3.2 ~/.claude/settings.json 的 env 写法如果你不想把 Key 写进 shell 启动文件或者需要按用户级配置固定 Claude Code可以用~/.claude/settings.json。格式如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_DEEPSEEK_V4_PRO_MODEL_ID, ANTHROPIC_DEFAULT_HAIKU_MODEL: YOUR_DEEPSEEK_V4_FLASH_MODEL_ID, CLAUDE_CODE_SUBAGENT_MODEL: YOUR_DEEPSEEK_V4_FLASH_MODEL_ID } }这个文件适合把配置跟项目分开但要注意优先级如果 shell 里也导出了同名变量最终以 Claude Code 实际读取到的为准。排查时不要只看一个文件先确认当前终端里echo $ANTHROPIC_BASE_URL是什么再看settings.json是否也写了旧值。提示JSON 里不能写注释也不能用单引号。模型 ID 和 Key 都用双引号包住逗号不要多加。3.3 可选用 taotoken cc 固定启动参数如果你更喜欢命令行启动而不是依赖 shell 环境变量可以安装 TaoToken CLInpm install -g taotoken/taotoken taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m YOUR_MODEL_ID这里的-u填https://taotoken.net/api末尾不要加/v1也不要加任何官网查询参数-m填你从模型广场复制的模型 ID。CLI 适合临时切换、脚本化启动或者你想给不同项目准备不同 Key 和模型时使用。主路径仍然是前面的环境变量或settings.jsonCLI 只是多一种固定入口的方式。4. /status 验证 Claude Code 是否真的切到兼容通道4.1 /status 里重点看端点和模型保存配置后进入你的项目目录启动 Claude Code输入/status重点看两行当前 API Base URL 和当前模型。Base URL 应该是https://taotoken.net/api不是 Anthropic 官方地址也不是带/v1的地址。模型应该是你从模型广场复制的 DeepSeek V4 Pro 对应 ID如果这里还显示官方模型名说明配置没有生效或者被另一个配置文件覆盖了。原文里作者也强调过切换 Base URL 后要用/status确认当前连接的端点和模型确认生效再开始工作。这个动作很小但能避免你在错误模型上跑一整轮重构最后发现调用记录对不上。4.2 用最小只读任务验证模型/status没问题后不要立刻让它改十几个文件。先发一个只读任务例如先不要改代码。读一下当前项目的 CLAUDE.md然后用三句话总结这个项目的技术栈、FMEA 模块的表名和测试命令。这个请求会触发 Read File但不会写文件、不会跑 Bash风险低。如果模型能正常读取并回答说明 Base URL、Key、模型 ID 至少已经打通。若这里报 401 或模型不存在直接跳到后面的排障章节不要继续往下跑重构。4.3 再跑 FMEA 模块重构的只读分析确认最小任务成功后可以把它接到原文场景里的 FMEA 模块只读分析不要修改代码。找出 FMEA 模块中与 FailureModeV2Modal 相关的组件、Repository、Service 和接口文件列出如果要统一 HTTP 请求封装需要改哪些文件以及可能影响哪些页面。这一步还是只读。Claude Code 可以读文件、分析依赖、给出修改计划但真正的改动要等你确认方案、提交当前 Git 状态之后再执行。这样做的好处是你能先看到它是否真的理解了 FMEA 模块的边界而不是一上来就把shared/目录也扫进去改掉。5. FMEA 模块重构与 Sub-Agent 并行任务怎么跑5.1 主 Agent 先出方案只读分析通过后让主 Agent 给出可执行方案。提示词可以写具体一点按刚才的分析把 FMEA 模块里 FailureModeV2Modal 的 HTTP 请求从直接调用 HttpClient 改为走 ApiService 统一封装。先输出修改计划列出每个文件要改什么不要动 shared/ 目录不要改已有 migration。主 Agent 负责理解上下文、拆解步骤、决定先改哪个文件。DeepSeek V4 Pro 在这种多文件重构场景下更适合承担规划和代码生成因为它的上下文窗口和代码理解能力比轻量模型更稳。你可以在CLAUDE.md里补上项目约束比如命名空间、响应包装方式、Repository 和 Service 的分层规则减少它自由发挥。5.2 Sub-Agent 扫 pages 目录复杂任务里Claude Code 会拆出 Sub-Agent 并行处理。原文提到 Sub-Agent 适合大型重构能同时处理多个文件。你可以让它先做一轮只读扫描用 Sub-Agent 并行扫描 pages/ 目录找出所有仍然直接调用 HttpClient 的页面组件按目录分组输出文件路径和调用点不要修改代码。这类任务适合交给CLAUDE_CODE_SUBAGENT_MODEL指向的 Flash 模型处理读取、分类、汇总不需要太重的推理。扫描结果回来后你再决定哪些文件进入主 Agent 的修改计划。边界仍然要写清楚例如“不要动 shared/ 目录”“只处理 pages/ 下的页面组件”。5.3 本地执行测试与贴回报错代码改完后测试和运行必须由你在本地终端执行。Claude Code 可以生成测试命令、解释报错、对照代码找原因但它不应该被写成直接连接你的生产库或生产机器去执行诊断。你可以这样收尾修改完成后我会在本地运行 php artisan test 和 npm test。你先把需要验证的测试命令列出来并说明每个命令观察什么输出。然后你在本地执行php artisan test npm test把失败用例、堆栈、SQL 报错原样贴回对话让 Claude Code 继续分析。需要查数据库时也是你在本地或受控测试环境执行 SQL把结果贴回来。这样既保留了 Agent 的分析能力也不会把执行权交给模型。6. 切换后容易遇到的 401、404 与模型不存在排查6.1 /status 还显示旧端点最常见的原因是终端没有加载新配置。~/.zshrc改完后旧终端窗口不会自动生效要么执行source ~/.zshrc要么新开一个窗口。其次检查~/.claude/settings.json里是否还有旧的ANTHROPIC_BASE_URL它可能覆盖 shell。最后确认你改的是当前用户实际使用的 shell 配置文件有些人登录 shell 是 zsh但 IDE 终端调用了 bash。排查顺序可以固定为echo $ANTHROPIC_BASE_URL→ 看~/.zshrc→ 看~/.claude/settings.json→ 重启终端。不要一上来就重装 Claude Code多数情况下只是加载顺序问题。6.2 401 和 404 分别查什么401 通常表示 Key 没填对。先看ANTHROPIC_AUTH_TOKEN是不是还保留着YOUR_API_KEY占位符或者复制时多了空格、换行。如果确认写法没问题回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 控制台检查这个 Key 是否被删除、是否过期、是否可用。换一把新 Key 重新测试能快速排除旧 Key 的问题。404 常见于 Base URL 写错。Claude Code 这里要填https://taotoken.net/api末尾不要加/v1也不要加斜杠。有些人习惯性写成https://taotoken.net/api/v1结果请求路径拼出来对不上。先改成不带/v1的形式再重启终端。6.3 模型不存在与 Sub-Agent 模型不生效如果/status显示端点正确但对话时报“模型不存在”或类似错误先回模型广场核对模型 ID。主模型和 Sub-Agent 模型可能不是同一个名字Pro 和 Flash 的 ID 要分别复制。CLAUDE_CODE_SUBAGENT_MODEL没生效时检查它是否写在了正确的文件里是否被ANTHROPIC_MODEL覆盖。只想先跑通主流程时可以让 Sub-Agent 模型与主模型一致确认链路后再拆开。DeepSeek V4 Pro 不支持图片输入这一点也要注意。如果你要分析截图临时切回支持视觉的模型日常代码重构再用 Pro。成本不要凭感觉算控制台里的调用记录和模型广场的计费说明才是准的。7. 跑通之后去控制台对一下这次调用7.1 在模型对话里用同一把 Key 发测试消息配置保存、/status确认端点后建议再做一个旁路验证打开 TaoToken 模型对话用同一把 Key 发一条测试消息确认模型 ID 和 Base URL 没有填错。模型对话里能正常返回说明 Key 和模型本身没问题如果对话正常但 Claude Code 报错问题就集中在 Claude Code 的配置加载顺序上。7.2 长期跑重构看 Coding PlanKey 在控制台创建如果你准备长期用 Claude Code 跑多文件重构、FMEA 模块改造、Sub-Agent 并行扫描可以打开 Coding Plan 看套餐是否够用。新的 Key 仍然在 控制台 API Keys 创建创建后按前面的方式替换YOUR_API_KEY即可。7.3 Claude Code 接入文档对照不同版本的 Claude Code 在环境变量、settings.json优先级上可能有细微差异遇到拿不准的地方直接对照 Claude Code 接入文档。文档里会给 Base URL、Key、模型名的填写位置和你前面配的~/.zshrc、~/.claude/settings.json相互印证。下一步就是回到项目根目录把CLAUDE.md里 FMEA 模块的边界、不要动的shared/目录、测试命令补清楚再用 Sub-Agent 跑一次只读扫描确认每一次调用都落在你刚配好的兼容通道上。
