
先说明白一件事这个标题不是段子是我过去几个月实际在用的开发姿势。我主力编码工具是 Claude Code但每个月 API 账单上的大头全流向了 DeepSeek。听起来很分裂其实拆开看就一句话Claude Code 的交互体验和 Agent 能力确实好用但 Anthropic 官方 API 的价格也确实贵DeepSeek 的模型能力在编程场景下性价比高得离谱又有 OpenAI 兼容的 API 可以接。于是我用一个小工具做“协议翻译”让 Claude Code 这个“壳”去调 DeepSeek 这个“芯”。这套组合折腾完之后写代码的体验没降级账单缩水了一个数量级。这篇文章就把完整思路、原理、实操步骤和踩过的坑全部写出来想省钱又不想牺牲体验的人可以直接照着抄。1. 先搞清楚这笔账到底怎么算1.1 三个角色各干各的活先给不熟悉的朋友把三个东西拆开。Claude Code 是 Anthropic 出的命令行编程助手跑在终端里可以读你项目文件、改代码、执行命令、跑测试是一个完整的 Agent 工作流不是简单聊天窗口。它的体验好到什么程度用过它之后再回去用普通聊天问答写代码会明显觉得效率差一截。DeepSeek 是国产大模型公司这里特指它的开放 API。它家的模型在代码、数学、推理这类硬任务上表现很强价格却便宜得像是另一个时代的产物。我最早是拿它做问答和批量文本处理后来发现编程能力也够硬才开始动“把它塞进 Claude Code”的心思。CC Switch 是社区里的开源配置切换工具专门解决“Claude Code 默认连 Anthropic我想连别家怎么办”的问题。它可以管理多套供应商配置一键切换让你把 Claude Code 的请求转发到 DeepSeek、Kimi、Qwen 或者本地模型服务上。顺便提一句你如果搜“DeepSeek Harness”“DeepSeek Hermes”这类词会看到一些社区适配脚本或网关项目它们和 CC Switch 做的事情本质一样把 Anthropic 协议的请求翻译成目标模型能听懂的格式。不用纠结选哪个原理通了工具就是一层窗户纸。1.2 这套组合解决了哪三个痛点第一个痛点是钱。Claude 官方 API 按输出 token 算钱写代码又是输出大户一个功能写下来几百上千行大模型跑一次就是一大笔。高强度用一个月账单会让人清醒。第二个痛点是门槛。很多人卡在“Claude 官方账户注册不了”这一步或者有了账号但订阅服务里 Claude Code 不可用后面我会讲那个报错。API 接入的账号体系相对独立用 DeepSeek 反而是最没有阻力的一条路。第三个痛点是模型选择权。Claude Code 是个客户端它理应的模型应该是可插拔的。Anthropic 官方没把这个口子做得很开放但社区工具把它补上了。接上 DeepSeek 之后我还能在同一个界面里切回 Claude、切到本地模型一个工作流吃遍所有模型这种自由感是官方配置给不了的。1.3 豆包、元宝、千问、DeepSeek编程场景选谁有人会问都是国产模型为什么非得是 DeepSeek我也试过其他几家。豆包在中文日常对话上很顺手但写长代码时的工具调用稳定性一般元宝更适合微信生态里轻量使用做正经开发还差点意思千问的开源模型能力强API 也不贵但在我接 Claude Code 的实测里DeepSeek 的 OpenAI 兼容接口最省事上下文处理更稳而且它的 deepseek-reasoner 在复杂推理任务上有独特优势。编程这个场景我目前最推荐 DeepSeek不是因为别的模型不行而是“便宜大碗 接口省心”这两点它做到了极致。2. 核心原理Claude Code 是怎么被“掉包”的2.1 一个关键认知Claude Code 的可配置性很多人以为 Claude Code 是“Anthropic 官方工具只能连 Anthropic”其实不是。它本质上是安装在本地的一个 Node.js CLI 程序通过网络请求调用大模型。既然是网络调用就一定有“请求发到哪个地址、带什么凭证、用什么模型名”这几个可配置项。Claude Code 官方文档里明确支持通过环境变量来覆盖默认配置核心就三个ANTHROPIC_BASE_URL # 请求发往的 API 地址 ANTHROPIC_AUTH_TOKEN # 调用时携带的凭证 ANTHROPIC_MODEL # 使用的模型名你只要把这三个变量指向 DeepSeek 的兼容端点Claude Code 就会乖乖把请求发过去。原理就是这么简单真正麻烦的是协议格式。2.2 Anthropic 协议和 OpenAI 协议之间的鸿沟Claude Code 默认按照 Anthropic 的 Messages API 格式发请求而 DeepSeek 提供的是 OpenAI 风格的 Chat Completions 接口。这两种格式在请求结构上有明显差异消息角色、工具调用描述、系统提示的字段名都不完全一样。直接把 Anthropic 格式的请求怼到 DeepSeek 的接口上对方是认不出来的会返回 400 之类的错误。这就需要一个“翻译层”在中间做协议转换接收 Claude Code 发来的 Anthropic 格式请求转换成 OpenAI 格式转发给 DeepSeek拿到 DeepSeek 的响应后再翻译回 Anthropic 格式返回给 Claude Code。整个过程对用户完全透明。2.3 CC Switch 本地代理到底做了什么CC Switch 的本地代理就是这个翻译层。它在你的电脑上启动一个本地 HTTP 服务比如监听127.0.0.1的一个端口然后把你 Claude Code 配置里的ANTHROPIC_BASE_URL指向这个本地地址。请求发出后代理完成协议翻译、模型映射、Token 统计再真正发给 DeepSeek。这也是为什么报错信息里会出现 “local proxy failed while handling codex endpoint /responses” 这种话——Claude Code 把请求交给了本地代理代理处理失败于是把上游服务商的错误原样抛了回来。理解这个链路排查问题会快得多。数据流是这样的Claude Code - 本地代理(CC Switch) - DeepSeek API Anthropic 协议 协议翻译 OpenAI 协议同样的思路也能用在 OpenAI 官方的 Codex CLI 上但 Codex 原生就是 OpenAI 协议接 DeepSeek 反而更直接不需要这层翻译。我之所以坚持用 Claude Code是因为它的 Agent 编排、文件编辑和终端操作能力更成熟体验差距不是一点半点。3. 成本测算为什么说钱花给了 DeepSeek3.1 各家 API 定价对比先给一个量级概念。以下是各家 API 的参考定价实际以官网最新报价为准服务输入价格每百万 tokens输出价格每百万 tokensClaude Opus约 15 美元约 75 美元Claude Sonnet约 3 美元约 15 美元DeepSeek Chat约 0.27 美元约 1.1 美元DeepSeek Reasoner约 0.55 美元约 2.2 美元注意DeepSeek 对命中缓存的输入部分还有额外折扣实际价格可能更低。单看数字DeepSeek 的输出价格大约是 Claude Sonnet 的十分之一是 Opus 的七十分之一。这个差距不是“便宜一点”是“降了一个数量级”。3.2 一次真实开发任务的成本算账写代码这个场景特别吃 token。Claude Code 这类 Agent 会把项目文件内容、工具返回结果、历史对话全部塞进上下文经常一个任务跑下来输入几十万 tokens输出几万 tokens 很常见。拿一个中等规模功能开发举例假设消耗 50 万输入 tokens、3 万输出 tokens方案成本估算Claude Opus约 9.75 美元Claude Sonnet约 1.95 美元DeepSeek约 0.17 美元如果你一天要跑几十个这样的任务差距就很夸张了。我高强度使用的情况下一个月在 Claude 官方 API 上要花几百美元切到 DeepSeek 后同样的工作量只花几十块人民币。这就是标题里“钱花给了 DeepSeek”的由来。3.3 什么时候这个账会不划算凡事有例外。如果你主要用 Agent 做轻量问答、改几行配置token 消耗很少那官方 Claude 那点差价无所谓没必要折腾。另外DeepSeek 在极端复杂的长链路重构任务上和 Claude 最新旗舰模型仍有差距这种任务如果跑失败几次省下的钱会被时间成本抵消。我的策略是日常开发默认 DeepSeek遇到啃不动的硬骨头再切回 Claude两者互补。4. 完整实操Claude Code CC Switch DeepSeek 从零配置4.1 安装 Claude Code以及第一个坑安装 Claude Code 很简单前提是电脑上有 Node.js建议 18 以上版本。打开终端执行npm install -g anthropic-ai/claude-code装完后验证claude --version如果你在 Windows 上看到类似claude : 无法将“claude”项识别为 cmdlet、函数、脚本文件或可运行程序的名称别慌这是 npm 全局安装目录没有加入 PATH。执行npm config get prefix查看全局目录通常是C:\Users\你的用户名\AppData\Roaming\npm把它加进系统环境变量的 PATH 里重开终端即可。首次启动直接敲claude它会要求登录。这里注意后面我们要走自定义 API不需要走官方账号登录流程。如果你之前登录过可以先用/logout退出避免配置被账号体系的登录态干扰。4.2 拿到 DeepSeek 的 API Key去 DeepSeek 开放平台注册账号进入控制台创建一个 API Key。这个过程很简单创建后把 Key 复制保存好它只显示一次丢了只能重新生成。DeepSeek 的 OpenAI 兼容接口地址是https://api.deepseek.com模型名记住两个deepseek-chat和deepseek-reasoner。前者日常写代码够用后者带思维链适合做复杂推理。等会儿配置里要用到。顺手在账户里充一点钱这套方案是按量付费的别让它余额归零。4.3 用 CC Switch 配置 DeepSeek 供应商去 GitHub 搜cc-switch下载对应系统的桌面版安装。打开后界面很直观它是一个“供应商管理”面板你可以添加多套配置。新建供应商时填这几项名称DeepSeek API 地址http://127.0.0.1:3456 # CC Switch 本地代理地址 API Keysk-你的DeepSeek密钥 模型deepseek-chat注意CC Switch 的配置原理是启动本地代理然后把它的代理地址当作 API 地址填给 Claude Code。具体端口以你安装的版本显示为准常见的可能是 3456 或其他端口不要死记数字以工具界面提示为准。配置完成后在 CC Switch 里“切换到”DeepSeek 这个供应商。这一步它会把相关环境变量写入配置Claude Code 再启动时就会走新通道。4.4 用配置文件固定参数推荐做法CC Switch 能搞定大部分情况但如果你的环境变量总被各种终端会话重置更稳的做法是直接改 Claude Code 的用户级配置文件。编辑~/.claude/settings.json加上{ env: { ANTHROPIC_BASE_URL: http://127.0.0.1:3456, ANTHROPIC_AUTH_TOKEN: sk-你的DeepSeek密钥, ANTHROPIC_MODEL: deepseek-chat } }保存后重新启动claude配置立即生效。这种方式的好处是配置落盘换终端、换目录都稳定生效不用每次手动 export。4.5 连通性验证一句话判断是否成功启动claude后先不急着让它写代码问一个识别身份的问题“你当前连接的模型服务是什么请说明你的模型名。”如果配置成功它会回答自己是 DeepSeek 的模型如果还是回答 Claude 或者报错说明配置没生效。另外可以在交互界面里输入/status查看当前连接地址和模型这是最直接的验证方式。一个小技巧先让它执行一个最简单的任务比如“读取当前目录文件列表”确认工具调用链路正常再上真实任务。因为 Agent 项目里工具调用是出错重灾区先验证这部分能省很多排查时间。4.6 在 VSCode 里配合使用Claude Code 不只活在终端里VSCode 用户可以装 Claude Code 的官方扩展在编辑器里直接开侧边栏对话。它的底层还是调用同一个claudeCLI所以你之前配置好的环境变量、CC Switch 设置会全部生效。我目前的工作流是VSCode 里用扩展做代码审查和单文件修改遇到跨文件的重构就切到终端用全屏模式。两者的会话上下文是打通的但注意一点VSCode 扩展如果报“找不到 claude 命令”说明扩展找不到 CLI 路径重新设置一下系统 PATH 或者重启 VSCode 就好。5. 实战中踩过的坑与排查实录5.1claude不是内部或外部命令也不是可运行的程序这个坑在 Windows 上太经典了。原因无非两个npm 全局路径没进 PATH或者 Node.js 版本太老导致安装失败。排查步骤先执行npm config get prefix拿到全局目录再看这个目录在不在echo %PATH%的输出里。不在就加进去。还有一个小技巧装完后直接执行npx anthropic-ai/claude-code --version验证安装本身没问题确认报错纯粹是 PATH 问题。5.2 local proxy failed 与 reasoning_content 400 错误这是绕不开的一个典型问题。错误信息长这样cc switch local proxy failed while handling codex endpoint /responses. provider: deepseek; model: deepseek-v4-flash; upstream_status: http 400; cause: the reasoning_content in the thinking mode must be passed back to the api.这个报错信息量很大。核心在于当你使用 DeepSeek 的思考模型带 reasoning 能力时API 返回结果里除了正常回复外还有一个reasoning_content字段存放模型思考过程的思维链。在后续多轮对话中如果你处于 thinking 模式服务商要求把上一次的reasoning_content原样传回去否则接口直接拒绝请求。问题往往出在协议转换层CC Switch 的旧版本在做 Anthropic 到 OpenAI 的翻译时没有保留和回传这个字段于是第二次请求就触发 400。解决办法有几个方向切换成非思考模型比如deepseek-chat它没有 thinking mode不会触发这个限制。更新 CC Switch 到最新版本新版本大概率已经修复了 reasoning_content 的回传问题。如果你手动配置了模型名确认模型名和服务商实际提供的名字一致。比如报错里显示的deepseek-v4-flash这种模型名要用服务商文档里实际存在的模型名替换别盲目沿用网上的配置。5.3 your organization has disabled claude subscription access for claude code这个报错是另一类问题和你是否用了 DeepSeek 无关。它说的是你的 Claude 账号所在组织策略上禁止了订阅身份使用 Claude Code。出现场景通常是你用 Claude Pro 账号登录了 Claude Code但账号属于某个工作区/组织组织管理员关掉了 Claude Code 的订阅访问权限。解决办法很简单不要用官方账号登录改为纯 API Key 模式。既然我们已经接了 DeepSeek就压根不需要登录 Claude 账号。执行/logout退出账号确保配置里走的是ANTHROPIC_AUTH_TOKEN这个问题就不会出现。5.4 模型名写错、上下文被截断等边界问题接入第三方模型后最容易犯的错就是模型名不对。Anthropic 官方模型的名称是claude-sonnet-4-...这类第三方模型各有各的名字。写错之后 Claude Code 会报模型不存在或 404但不会明确告诉你是名字的问题第一次遇到很容易绕远路。上下文被截断则是另一个常见现象。DeepSeek 的上下文长度和 Claude 新模型不同如果 Claude Code 按照 Claude 的上下文窗口去组织请求可能会一次性塞入超出 DeepSeek 处理范围的内容导致请求失败。解决办法在 Claude Code 的配置里手动设置更保守的最大上下文限制比如把默认值调到目标模型支持范围以内。5.5 常见问题速查表症状可能原因解决办法claude 命令找不到npm 全局目录不在 PATH把npm config get prefix目录加入 PATH请求全部返回 400模型名不存在换成deepseek-chat/deepseek-reasonerreasoning_content 报错thinking 模型的多轮回传缺失升级 CC Switch 或换非思考模型organization has disabled官方账号登录态干扰/logout退出改走 API Key上下文被截断请求超出模型窗口配置里限制最大上下文响应速度明显变慢本地代理端口被占用换端口重启 CC Switch6. 什么人适合这套组合我的最终心得6.1 建议直接抄作业的人如果你是独立开发者、自由职业者、小团队技术负责人每天要大量写业务代码对 API 成本敏感同时手头又离不开 Agent 类编程工具的这套组合就是为你准备的。特别是那些被 Claude 官方账号门槛卡住的新用户直接走 DeepSeek API 是最没有阻力的路径。6.2 我不建议这么干的情况如果你公司有统一的 AI 平台且模型能力已经够用没必要自己折腾这套如果你主要用 AI 处理敏感代码需要认真核查服务商的数据使用条款如果你只做轻量问答每个月 token 消耗很小那直接用官方服务更省心省下来的钱不值得折腾半天。6.3 几个掏心窝子的建议第一个建议默认用deepseek-chat复杂任务临时切deepseek-reasoner。不要一上来就用思考模型编程场景中思考模型响应慢、token 消耗高普通任务反而吃亏。第二个建议把 CC Switch 的配置文件纳入你的 dotfiles 管理。我重装系统后只花了十分钟就把整套环境恢复了这种“一份配置走天下”的爽感用过就回不去。第三个建议定期看一眼 API 调用统计。DeepSeek 控制台有详细的用量报表我发现自己的 token 消耗经常集中在少数几个超大任务上优化这些任务的上下文管理成本还能再砍一半。最后分享一点个人感受工具链的乐趣不在于“把哪个大牌模型换成便宜货”而在于理解了底层机制之后一切都变得可组合。Claude Code 的体验、DeepSeek 的价格、CC Switch 的灵活性这三样东西单独拿出来都只是工具组合在一起就是一个几乎每天都能帮你省下几小时的高效工作台。写代码这件事工具是用来解决问题不是用来信仰的。谁好用、谁便宜、谁顺手那就用谁这就够了。