ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

Claude Code接入DeepSeek V4:400万token从26美元降到2美元攻略

Claude Code接入DeepSeek V4:400万token从26美元降到2美元攻略

上个月代码重构任务收尾,我打开账单后台看了一眼,愣了几秒:Claude Code 跑掉 400 万 tokens,账单 26 美元出头。这个价格放在两年前不算离谱,但同一批任务换条 API 路线后只要 2 美元左右,省了 92%。这篇就把整个切换过程完整拆开:账单是怎么算出来的、DeepSeek V4 接入 Claude Code 的关键配置、400 万 token 实战记录,以及我在这个过程中踩过的坑。适合那些正在用 Claude Code 做自动化重构、批量测试、代码评审,但被 token 成本卡住的人。

1. 先算清楚账:那 400 万 token 到底花在哪了

1.1 Claude Code 的 token 消耗结构和普通聊天完全不同

很多人第一次用 Claude Code 时会有个错觉:这不就是个终端里聊天框吗。实际用三天你就会发现,它把“写代码”这件事拆成了大量细碎动作,每个动作都要模型参与一次。普通 API 请求是一次输入、一次输出,结束;Claude Code 接到任务后会进入一个循环:读目录、读文件、思考、调用工具修改代码、跑测试、看报错、再改、再跑……每一轮循环都会把当前的对话历史原封不动地重新发给模型,加上工具定义、系统提示、工具返回的文件内容,这些全部都要计费。

这就导致一个很反直觉的现象:真正“写出来的代码”只占账单里很小一部分。我记得有一次只是让它把一个模块里的无用 import 清理掉,纯手写的话几百 token 就搞定,但 Claude Code 为了确认依赖关系,先读了 package.json、读了两个配置文件、列出目录结构、定位到目标文件、改完又跑了一遍 lint——累计下来接近 3 万 token。所以当你看到“单日烧掉几十万 token”的截图时,不用太惊讶,不是任务量大,是这个循环本身花钱块。

如果继续深挖,还有三个隐藏成本点。第一是系统提示很长,Claude Code 每次请求都要携带它自己的 system prompt,这部分输入 token 是雷打不动的固定开销;第二是文件读取没有上限意识,让它“查一下项目里哪里用了某个函数”,它可能把整个 src 目录扫一遍;第三是工具返回内容,比如 bash 工具执行一个测试命令,输出几百行日志,这些日志会作为下一轮请求的输入继续计费。这些开销叠加起来,很快就能把一次简单任务推高到几万 token。

1.2 26 美元账单的具体构成

那 400 万 token 是怎么凑成 26 美元的?我找了一张当时的统计记录,那是一个跨模块的 API 迁移任务,涉及 12 个文件、大约 8000 行代码的改动,前后跑了大概一周。总请求次数约 1200 次,累计消耗 400 万 token,其中输入 token 约 300 万、输出 token 约 100 万。

按当时官方 API 的计费口径来估算:以 Sonnet 级别的模型为例,输入每百万 token 约 3 美元,输出每百万 token 约 15 美元。不算其他杂项就是 300 万 × 3/100 万 = 9 美元,加上 100 万 × 15/100 万 = 15 美元,合计 24 美元。剩下的 2 美元多来自重试、误操作产生的额外请求,以及模型在小任务上偶尔使用轻量模型的费用,最终账单 26.01 美元。

费用项数量单价金额
输入 token300 万约 $3 / 百万$9
输出 token100 万约 $15 / 百万$15
额外请求/重试——约 $2
合计400 万—约 $26

这个账算完,问题就很清楚了:真正压制成本的关键变量有两个,一个是输出 token 的单价,一个是总 token 消耗量。输出 token 单价高是因为模型生成代码属于“生成类”任务,计费比输入贵 5 倍;总 token 消耗高是因为 agent 循环天然会把历史来回重发。所以想省钱,光靠“少写 prompt”是没用的,得更直接地降低单价。

2. 路线选择:为什么我敢把 Claude Code 接到 DeepSeek V4 上

2.1 三条可选的降本路线

市面上降低 Claude Code 成本的办法大致有三条路。第一条是继续用官方模型,但通过压缩上下文、限制任务规模来减少 token 消耗。优点是不折腾,缺点也很明显:官方价格是固定的,压缩上下文省不了多少钱,而且 agent 循环本来就需要完整上下文才能工作,压太狠会影响质量。

第二条是买第三方聚合平台的套餐,很多平台提供“Claude 模型更低价”或“包月无限次”服务。价格确实低,但我不太推荐在生产环境用。原因有两个:一是你根本不知道请求被转发到哪个模型、哪个版本,可能在某个时间点给你换了个更差的模型;二是代码本身就是敏感数据,经过第三方转发的链路很难说清楚数据边界在哪。

第三条是自己接兼容层,通过 Anthropic API 兼容地址把 Claude Code 的请求转发到其他大模型的 API 上。这条路是我最终采用的:端点和服务商都是明确的,数据链路上没有额外代理,而且价格完全由自己选定的模型 API 决定,可控性最高。

2.2 DeepSeek V4 的定价优势与能力评估

选 DeepSeek V4 的直接原因是价格差了一个量级。以当时公开的 V 系列定价体系为参考:输入每百万 token 缓存命中约 0.07 美元、缓存未命中约 0.27 美元,输出每百万 token 约 1.10 美元。同样按 300 万输入、100 万输出粗算:300 万 × 0.27/100 万 = 0.81 美元,100 万 × 1.10/100 万 = 1.10 美元,合计约 1.91 美元。就算全按未命中缓存计算,连 2 美元都不到,这就是标题里“从 26 降到 2”的直接来源。

价格便宜并不代表可以无脑用。我在切换前认真评估过它的代码能力:对自动化重构、单元测试生成、代码评审这些任务,它的理解和生成质量是够用的;对特别复杂的架构设计、涉及多个文件依赖的深度修改,质量和官方旗舰模型有差距,但可以通过缩小任务粒度来弥补。整体判断是,70% 以上的日常编码自动化任务交给它完全没问题,剩下 30% 的关键环节保留官方模型。

另外要说清楚,这不是“白嫖”或者“薅羊毛”,而是正常使用模型 API 的合理路径。Claude Code 本身支持自定义 API 端点,DeepSeek 也提供 Anthropic 兼容的接入方式,两者配合只是把工具接到更便宜、同样可用的模型上,属于成本优化范畴。

2.3 切换前我做的 5 项验证

正式切换前,我花了一个下午做了 5 项验证,每一步不通过就及时止损:

  1. 同一任务对比:挑了一个中等复杂度的“将旧工具库从回调改成 async/await”任务,分别用官方模型和 DeepSeek V4 跑一遍,对比最终产物是否可运行、测试是否通过。
  2. 工具调用验证:让 Claude Code 做“新建目录—创建文件—修改文件—执行测试”这一整条链路的操作,确认 DeepSeek V4 能理解 Anthropic 的工具调用协议,而不是只回复文字不真动手。
  3. 流式输出验证:跑一个长输出任务,看它会不会中途断掉、错乱、或者乱加结束标记。
  4. 上下文窗口验证:用一个较大的项目目录测试 Claaude Code 同时读取多个文件后,模型能否保持对上下文的记忆,是否出现“前面说要改 A 文件,后面跑去改 B 文件”的失忆现象。
  5. 工具格式兼容性验证:确认模型收到 system prompt 中 XML 风格的工具描述后,能够严格按照要求返回工具调用参数,而不是返回普通 JSON。这一点是 agent 循环能否跑通的关键。

结果是有两项出现轻微问题,比如个别工具调用格式不太标准导致重试,但整体可用。我的决策是:先用它跑非关键任务,跑一周观察再扩大范围。

3. 十分钟完成切换:Claude Code 接入 DeepSeek V4 的配置全流程

3.1 准备阶段要做的三件事

切换前先确认基础条件。第一是 Claude Code 本身已经装好,直接一条命令npm install -g @anthropic-ai/claude-code就能装,装完在终端输入claude能进入交互界面即可。第二是去目标模型平台注册账号、创建 API Key、充值——这一步每个平台界面不一样,但基本都提供 API Key 管理和余额查询功能,先充一点点钱就好,比如 5 美元,够测试用。第三是确认模型 ID,控制台里通常显示为类似deepseek-v4这样的标识,后续配置里要原样填进去。别把模型名称搞混,填错 ID 会直接报模型不存在。

3.2 环境变量配置:两种常用姿势

配置 Claude Code 的自定义端点,核心是四个环境变量:ANTHROPIC_BASE_URL指向兼容端点的地址,ANTHROPIC_AUTH_TOKEN填你的 API Key,ANTHROPIC_MODEL指定主模型,ANTHROPIC_SMALL_FAST_MODEL指定轻量小模型(用于标题生成、摘要等边缘任务,直接填 DeepSeek V4 也行,省事)。

第一种是临时环境变量,适合先测试。终端里逐行执行:

export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic export ANTHROPIC_AUTH_TOKEN=你的API密钥 export ANTHROPIC_MODEL=deepseek-v4 export ANTHROPIC_SMALL_FAST_MODEL=deepseek-v4 claude

这样只对当前终端生效,关掉窗口就还原,不会影响其他项目。我建议第一次切换都用这种方式,能快速试错。

第二种是写入项目级配置文件~/.claude/settings.json(或者项目根目录的.claude/settings.json),适合日常使用。内容如下:

{ "env": { "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic", "ANTHROPIC_AUTH_TOKEN": "你的API密钥", "ANTHROPIC_MODEL": "deepseek-v4", "ANTHROPIC_SMALL_FAST_MODEL": "deepseek-v4" } }

注意两个细节:一是如果你在多个项目里用 Claude Code,建议用项目级配置而不是全局配置,避免某个不需要切换的项目被带到新端点;二是ANTHROPIC_AUTH_TOKEN和官方的ANTHROPIC_API_KEY是两回事,设了这个变量后 Claude Code 就不会再读官方 Key。两者同时存在时,新变量优先,但我还是建议只保留一个,省得排查问题时分不清到底走的哪条路。

3.3 怎么确认真的切换成功了

配置完别急着铺开用,先验证连通性。在终端启动claude,然后发一句最简单的 prompt:“请告诉我你现在使用的模型名称”。如果它正常返回,说明端点和认证都通了;如果报错,多半是 BASE_URL 或 TOKEN 写错了。

想看得更清楚,可以用调试模式启动:

claude --debug

然后随便发一个任务,观察终端输出里的请求地址。如果请求打到的是你配置的兼容端点域名,就说明切换成功。另外,到目标模型平台的账单后台等几分钟,通常能看到新增的 token 消耗记录。两边一对照,就能确定流量确实走过去了。

3.4 切换后的限额保护

省钱模型再便宜,也不是无限免费,该做的限额保护不能省。我做了三层防护:目标平台后台设置余额提醒,低于 1 美元就发通知;每次启动 Claude Code 前先看一眼余额;任务执行过程中,如果单个任务预计会消耗超过 50 万 token,就先暂停,拆成小任务再跑。这不是保守,agent 循环偶尔会失控,比如一个命令让 bash 工具跑了个死循环,等你发现时账单已经飞了。

Claude Code 自带的/cost命令可以查看当前会话的成本,但对第三方端点不一定准确,因为计费逻辑是服务商那边实现的。我一般是两个口径对照:软件里显示的数值作为参考,最终以服务商后台账单为准。

4. 400 万 token 实战过程与真实账单

4.1 这批 token 是怎么分配出去的

为了让数据更有参考意义,我按任务类型做了分类统计。整体 400 万 token 里,代码重构和迁移类任务占 35%,主要是把旧代码从一个模式改到另一个模式,这类任务特点是输入 token 大——每次修改前都要读文件、读依赖关系、理解关联代码;单元测试生成与修复占 25%,特点是输出 token 大,生成测试代码时一次就是几百行;代码评审与问题扫描占 20%,这类是“读很多、写很少”,上下文消耗集中在输入侧;文档与注释补全占 10%;剩下 10% 是试错和无效输出,比如模型改错了文件导致返工。

任务类型消耗占比主要特征
代码重构/迁移35%输入 token 大,需读取多个关联文件
单元测试生成与修复25%输出 token 大,生成大量代码
代码评审与问题扫描20%读多写少,输入侧消耗
文档与注释补全10%输入输出均衡
试错与无效输出10%返工导致,可优化

这个分布说明了一个关键点:不同类型的任务对模型的依赖不一样。重构类任务更要看模型的理解力,测试生成类任务更看输出能力。切到 DeepSeek V4 后,前两类任务都是能跑的,质量上测试生成需要较多人工修正,但成本降幅足以覆盖这部分工作量。

4.2 同一组任务的 A/B 对比

为了不被“感觉变快了”“感觉变慢了”这种主观判断带偏,我挑了三个有代表性的任务做了对照组。第一个是将一个约 2500 行的旧工具库从回调风格改造成 async/await;第二个是给一个新模块补齐 200 个单元测试;第三个是全局搜索并修复某个特定代码坏味道。三个任务分别在官方路线和 DeepSeek V4 路线上各跑一遍。

结果很有意思:DeepSeek V4 路线在实际执行中 token 消耗比官方多了约 20%,原因是它偶尔在工具调用格式上不够标准,触发重试;但即使按多了 20% 的 token 来算,成本也只是官方的十分之一左右。质量方面:三个任务最终都能跑通,测试全部通过,只是 DeepSeek V4 生成的代码有少量需要人工调整的风格问题。耗时上,首字延迟和完整任务完成时间都比官方慢一些,但对不是“盯着终端等结果”的用法来说,完全可以接受。

对比项官方模型DeepSeek V4
总 token 消耗120 万145 万
对应费用约 $12约 $1.2
测试通过率100%100%(人工微调后)
完成任务耗时较快慢 20% 左右

4.3 最终账单:26 美元到 2 美元是怎么对上的

实战收尾时,我把两边账单摆在一起做了核对。旧路线走官方 API,累计 400 万 token(300 万输入、100 万输出),按官方旗舰级模型价格计算,最终账单 26 美元。新路线走 DeepSeek V4,完成同一批任务实际消耗约 480 万 token,最终账单只有 2.13 美元。

这里有个值得解释的点:为什么不是简单地按“单价比例”线性降低?因为 DeepSeek 的计费模型里,缓存命中的输入 token 便宜到可以忽略。Claude Code 的 agent 循环天然会产生大量重复上下文——每次请求都重发系统提示、对话历史、之前读过的文件——这些内容在缓存层被反复命中,按缓存命中价计费,所以实际费用比“全按未命中价估算”还要低。这也是为什么我不建议只看单价做决策,要看实际账单。

省下的金额是 26.01 - 2.13 = 23.88 美元,降幅约 92%。这 2.13 美元里,输入费用大约 0.7 美元、输出费用大约 1.1 美元,其余是少量重试。比例上看,输出费用已经成了大头,这给我后面优化提示了一个方向:除了降单价,还得想办法让模型别啰嗦,减少输出 token。

5. 切换后避坑指南:常见报错与排查方案

5.1 提示认证失败或 401 错误

最常见的报错是请求发出去被拒绝,提示 unauthorized 或者 401。原因一般有三个:ANTHROPIC_AUTH_TOKEN没设置或者值填错了;API Key 类型不对,比如平台要求用 Bearer Token 但你只填了明文;或者 BASE_URL 拼写不对,少了/anthropic路径。排查时先用 curl 直接测试端点:

curl -X POST https://api.deepseek.com/anthropic/v1/messages \ -H "x-api-key: 你的密钥" \ -H "content-type: application/json" \ -d '{"model":"deepseek-v4","max_tokens":32,"messages":[{"role":"user","content":"hi"}]}'

如果 curl 能正常返回,说明端点和 Key 没问题,问题出在 Claude Code 的环境变量上;如果 curl 也报错,说明要去平台文档重新核对端点和认证方式。

5.2 工具调用格式不兼容导致 agent 反复重试

这个问题隐蔽但影响巨大。现象是:Claude Code 看起来一直在工作,但反复执行同一个步骤就是不推进,终端里一堆 tool use 报错。原因是 Claude Code 的 system prompt 里,工具描述是按 Anthropic 的 XML 风格写的,DeepSeek V4 如果不尊重这种格式,或者返回了普通 JSON 而不是要求的工具调用结构,agent 循环就卡住了。

解决办法分几步:先确认模型 ID 选的是最新版本,版本号太旧容易出现这个问题;再试一下只发一个简单的“创建文件”指令,看工具调用是否正常;如果仍然反复重试,说明当前模型对这套工具协议的支持确实不够稳,建议这类任务切回官方模型跑。我的经验是,这个问题在代码量大但动作单一的任务里出现概率高,代码量小、指令明确的任务很少触发。

5.3 代码质量下降与上下文窗口变短

替代模型的上下文窗口可能比官方旗舰模型小,当项目目录很大时,Claude Code 读入的内容超过窗口限制,它就会“遗忘”前面读过的文件,导致改错文件、重复逻辑、甚至删掉不该删的代码。规避方案有三个:一是用.claudeignore把依赖目录、构建产物、临时文件排除掉,不让模型读;二是每个任务明确限定在某个子目录,不要整个仓库一把梭;三是大改动拆成几个小改动,分多次任务完成。这些做法不仅能解决上下文问题,还顺带省 tokens。

5.4 计费统计口径对不上

第三个端点下的 token 统计和官方统计经常对不上。比如同一批任务,官方后台显示 400 万 token,服务商后台显示 460 万 token,差异来自缓存命中的计费方式、工具返回内容是否计入、以及超时重试是否重复计费。我的建议是别纠结哪个数字是“真实消耗”,以服务商后台为准,因为最终扣钱按它来;多跑几次任务后,总结一下官方统计和服务商统计之间的换算比例,以后估算成本直接用服务商数字。

5.5 什么情况下我会切回官方模型

DeepSeek V4 不是万能银弹。我给自己定了几条切回官方模型的标准:涉及生产环境高危变更(比如删表、改权限、动核心交易流程)时不用省钱模型;对响应时间有硬性要求时不用,省钱模型的首字延迟和整体速度确实慢一些;需要反复讨论架构方案、权衡取舍的设计类任务也优先官方模型,这类任务 token 消耗通常不大,省那点钱不值当影响终稿质量。日常的增删改查、测试补齐、代码扫描、注释生成,则放心交给低成本模型。

6. 长期跑下来,我总结的省钱细节与分工思路

6.1 用 /compact 主动压缩历史

Claude Code 跑长会话时,对话历史和读取过的文件内容会越积越多,即使按缓存命中价计费也不是零成本。会话里执行/compact可以压缩上下文,把历史信息归纳成摘要,大幅减少后续请求的输入 token。我现在的习惯是:一个任务解决完就开新会话,同一个会话内每跑完一个子步骤就考虑是否压缩。实测下来,光这一条就能省 20% 到 30% 的输入 token。

6.2 .claudeignore 才是最大的省钱工具

很多人忽略.claudeignore的价值。默认情况下,Claude Code 读取文件凭喜好来,一旦让它“熟悉一下项目”,它可能会把node_modules、dist、build、.git这些目录整个读进去,几十万 token 瞬间蒸发。在项目根目录创建.claudeignore,把明显不需要的目录写进去,和.gitignore的逻辑很像。这是我总结的性价比最高的一项配置,没有之一。

6.3 双模型配合,而不是二选一

跑完这个项目我的最终工作流不是“完全抛弃官方模型”,而是双路线配合:日常的批量重构、测试生成、代码扫描、文档补全用 DeepSeek V4 这类低成本模型跑,量大不心疼;关键的架构讨论、上线前审计、权限相关改动切回官方模型,保证复杂场景的稳定输出。切换成本也就几秒钟,改环境变量重启就行。

对我个人来说,这次优化最大的收获不是省了 24 美元,而是把“用 AI 写代码”这件事从一道固定成本题变成了可以自主组合的工程题:token 单价、模型能力、任务类型都是可以按需调配的变量。你不需要等模型降价,也不需要砍掉本来要做的事,换个路线,账单数字就能实实在在地降下来。

RELATED READING

延伸阅读

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