上周末我把 Windows 上的 Claude Code 接到了 DeepSeek 上,整套流程从零开始,到真正在项目里跑起来,大概花了二十分钟。标题里说的“DeepSeek 驱动 Claude Code”,不是拿 DeepSeek 的模型去模拟 Claude Code,而是让 Claude Code 这个 Agent 工具保留完整的工作流(读文件、改代码、跑命令、自动化迭代),底层的大模型推理从 Anthropic API 换成 DeepSeek API。这么做的直接好处是:API Key 注册即用、价格便宜很多,Windows 下的安装配置也完全可复现。
这篇文章适合两类人看:一类是已经装了 Claude Code 但还在用官方 API,想省点成本的;另一类是刚听说了 Claude Code,准备在 Windows 上尝鲜,但不想折腾 Anthropic 账号的人。我尽量把每个步骤背后的原因也讲清楚,而不是只给命令,这样你调试的时候才知道往哪个方向查。
1. 为什么要把 Claude Code 的模型后端换成 DeepSeek
1.1 Claude Code 默认的模型链路和真实门槛
Claude Code 是 Anthropic 出的命令行 AI Agent 工具,核心使用方式是在终端里用自然语言描述任务,它自己去读项目文件、修改代码、执行命令,然后根据命令输出继续迭代。在 Windows 上,它本质是一个跑在 Node.js 里的 CLI 包。默认情况下,它通过 ANTHROPIC_API_KEY 或者账号登录态连接 Anthropic 官方 API,推理用的是 Claude 系列模型。
从实际使用的角度看,默认链路有两个门槛:第一,你得有一个能用的 Anthropic 账号和 API Key,光是账号开通、支付方式绑定这步就有一堆流程要处理;第二,Claude 系列 API 的定价偏高,尤其是高频调用的时候,账单压力很明显。如果你只是个人开发、做一些中小型项目,每天让 AI 帮你写代码、跑测试、看日志,token 消耗累加起来是很可观的。
有人可能会问:那为什么不直接用 DeepSeek 的官方聊天页面,或者别的 IDE 插件?因为 Claude Code 的价值不在模型本身,而在它具备整套 Agent 工作流——主动拆解需求、精确修改文件、自动运行测试、多轮自我修正。这套交互框架是可复用的,换掉模型后端,就不用放弃这套成熟的工具链。
1.2 DeepSeek 的兼容端点让替换变得零代码
DeepSeek 平台提供的 API 里,有一个面向 Anthropic 协议的兼容端点,地址是https://api.deepseek.com/anthropic。这意味着 Claude Code 发出的请求协议不需要任何修改,只要把 API 基地址指向这个 URL,把密钥换成 DeepSeek 的,底层模型就自动切换了。
这个兼容方案对 Claude Code 的日常工作完全够用:
- deepseek-chat(对应 V3):响应快,日常生成和修改代码的主力。
- deepseek-reasoner(对应 R1):带深度思维链,适合复杂逻辑分析和方案设计。
- 价格比 Claude API 低一个量级,按 tokens 计费,充值门槛低。
我自己的实际体验:日常让 Claude Code 帮我写脚本、查 bug、重构函数,deepseek-chat 的响应速度和效果是够的,而且连续用几个小时,费用也就在几块钱级别。真正需要 reasoner 的复杂场景,我一般单独切模型,不会让所有小任务都走深度推理,那是浪费。
2. Windows 环境准备:Node.js 和终端的两个细节
2.1 装 Node.js:版本和 PATH 是两个绕不开的细节
Claude Code 是 Node CLI,第一步自然是 Node.js。版本上,官方要求 18 以上,我建议直接装 20 LTS 或 22 LTS,这两个版本目前稳定性和兼容性都最好。到 nodejs.org 下载 Windows 安装包,一路 Next 装好,然后打开 PowerShell 验证:
node -v npm -v如果node -v报了“无法识别”,基本就是 PATH 没有生效。装完 Node 后重启终端再看;实在不行,手动把 nodejs 的安装目录加进系统环境变量的 Path 里。
这里有个隐性坑值得单独说一下:不少 Windows 机器上装的是很老的 Node(12.x、14.x),跑 Claude Code 要么启动后没反应,要么跑到一半流式输出异常。遇到这种情况,最佳实践是先把旧 Node 卸载干净,再装 LTS。如果你想装多个 Node 版本,用 nvm-windows 管理,平时切换版本很方便。我的经验是,Claude Code 这种依赖流式、长连接的 CLI,对 Node 版本敏感度比普通脚本高得多,别在版本上将就。
2.2 终端选型直接决定体验
Claude Code 是个交互式终端工具,终端渲染能力直接影响使用体验。Win11 自带的 Windows Terminal 是首选,Win10 也可以单独安装。打开 Windows Terminal 设置,把默认配置文件设置为 PowerShell(推荐 PowerShell 7),尽量别用传统 cmd.exe。
原因很简单:Claude Code 会在终端里渲染动态信息——当前正在执行的工具、进度状态、流式输出,这些内容依赖 ANSI 转义序列。传统 conhost 窗口对这些支持差,容易出现重影、错位、闪屏。Windows Terminal 对这些处理得很干净。
另外,如果你曾经被中文乱码困扰过,可以顺手把默认代码页切成 UTF-8:
chcp 65001PowerShell 7 + Windows Terminal 的组合下,这条命令基本不需要,主要是保留给 cmd 等老场景应急。Windows 上跑 Claude Code,终端这一步做对了,后面排查问题会轻松很多。
3. 安装 Claude Code:npm 全局安装与登录绕行
3.1 安装命令和 PATH 处理
打开 PowerShell,执行全局安装:
npm install -g @anthropic-ai/claude-code安装过程通常几十秒到几分钟,取决于镜像速度。执行完验证一下:
claude --version能输出版本号就说明安装成功。如果提示“claude 无法识别为 cmdlet、函数或脚本文件”,是 npm 的全局 bin 目录不在 PATH 里。用这个命令查看全局目录:
npm prefix -g输出类似C:\Users\你的用户名\AppData\Roaming\npm,把这个路径加进系统 Path,重新打开终端即可。
在这步容易遇到权限问题:如果 Node 装在 Program Files 下面,npm 全局安装可能需要管理员权限,报 EPERM 或者装得莫名其妙。解决方法是:要么用管理员身份运行 PowerShell 再执行npm install -g;要么干脆用 nvm-windows 把 Node 装到用户目录,不碰系统保护路径,一劳永逸。
3.2 首次启动:搞清楚登录流程是哪一个环节
装好后,在任意目录输入:
claude如果什么都没配置,首次运行会引导你登录 Anthropic 账号,走浏览器 OAuth 授权。这一步是默认链路的一部分,但如果你打算接 DeepSeek,完全可以跳过。关键点是配置优先级:只要 settings.json 或环境变量里已经给了 ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL,Claude Code 启动时会直接用这套连接参数,不再要求登录授权。
我实测的表现是:写好 settings.json 之后再启动 claude,直接出现的是工作目录交互界面,没有任何 OAuth 环节。反过来,如果你之前已经用官方账号登录过,登录态可能会有残留,导致请求仍然发往 Anthropic。处理方式是到C:\Users\你的用户名\.claude目录里,清掉除 settings.json 之外的登录缓存文件。这个操作不影响你已经写好的配置,放心删。
这里还有个小技巧:不想全局安装的话,也可以在项目目录里用 npx 临时运行:
npx -y @anthropic-ai/claude-code这种形式适合偶尔体验,但日常使用还是建议全局安装,命令短、也不会每次重新解析包。
4. 写出关键的 settings.json:指向 DeepSeek
4.1 配置文件的层级和优先级
Claude Code 的配置有用户级和项目级两类:
- 用户级:
C:\Users\<你的用户名>\.claude\settings.json,影响这台机器上所有项目。 - 项目级:当前项目下的
.claude\settings.local.json,只影响当前项目,且优先级更高。
启动时,项目级配置会覆盖用户级同名项。如果你的日常项目统一走 DeepSeek,建议只写用户级 settings.json;个别项目要单独用其他模型,再在项目里建 settings.local.json 覆盖。这样配置管理最清晰。
另外一个需要警惕的点是系统环境变量。Claude Code 启动时会读取当前进程的环境变量,而 settings.json 里的 env 块本质上也是注入环境变量。两者并存时容易出现“到底用的是哪一份配置”的困扰。我的建议是:所有和 DeepSeek 相关的配置只写在 settings.json 里,不要在 Windows 环境变量里重复设置 ANTHROPIC_BASE_URL 或 ANTHROPIC_MODEL,避免互相覆盖说不清。
4.2 最小可用的 settings.json 配置模板
在C:\Users\<你的用户名>\.claude\settings.json中写入:
{ "env": { "ANTHROPIC_API_KEY": "sk-在这里填你的DeepSeek密钥", "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic", "ANTHROPIC_MODEL": "deepseek-chat", "ANTHROPIC_SMALL_FAST_MODEL": "deepseek-chat" } }保存,重点看两个字段:
ANTHROPIC_BASE_URL:必须带/anthropic结尾。DeepSeek 的 Anthropic 兼容端点和 Claude Code 用的 Messages API 格式是对应的,如果手滑写成/v1,请求格式不匹配,大概率返回 404 或解析失败。ANTHROPIC_MODEL:填 API 模型名deepseek-chat,不是宣传名DeepSeek-V3。API 名才是平台实际接受的名字。
settings.json 是严格的 JSON 格式,不能有注释,编辑时注意别用带 BOM 的保存方式。改完配置后,重启 claude 让它生效。
4.3 主模型和后台模型的分配逻辑
ANTHROPIC_MODEL是主模型,负责核心的对话、代码生成、工具调用决策。ANTHROPIC_SMALL_FAST_MODEL是后台快模型,负责标题生成、对话总结、信息抽取这类轻量任务。
这两个角色分开设置,是因为 Claude Code 内部有大量并不需要深度思考的小调用。如果所有任务都跑主模型,既贵又慢;把它们拆开,后台小任务用便宜的模型,主流程用高质量模型,整体体验才会顺。按照这个逻辑:
ANTHROPIC_MODEL日常用deepseek-chat,理由很简单:Agent 多轮交互要的是稳定和速度,V3 已经够强。ANTHROPIC_SMALL_FAST_MODEL也是deepseek-chat,后台任务必须快。- 复杂场景需要深度推理时,可以临时在主会话里切换到
deepseek-reasoner,但一般不建议把 reasoner 设成默认主模型。Claude Code 的 Agent 循环是高频、多步的,每一步都带完整思维链,延迟会大到难以接受,费用也会明显上涨。
4.4 API Key 的获取和安全存放
DeepSeek 的 API Key 在 platform.deepseek.com 注册后创建,创建时只显示一次,务必立刻复制保存。账户需要充值后才能真正调用 API,按 tokens 消耗扣费。
密钥的安全存放是个容易被忽略的事:settings.json 里虽然可以直接写 key,但如果你把整个目录同步到 Git 仓库,key 就等于公开了。我的做法是:
- 个人项目的
.claude目录加进.gitignore。 - 团队共享的 settings.json 不写任何人的 key,只放模型配置和 base URL;key 由每个人在自己的 settings.local.json 里填。
- 如果发现 key 泄露,第一时间到平台删除重建,不要抱有侥幸心理。
5. 启动 Claude Code 跑通一次真实任务
5.1 用真实项目验证配置是否生效
配置完成后,开一个干净目录实测:
mkdir test-claude cd test-claude claude启动后如果直接进入交互界面,说明连接参数已经生效。建议先在会话里抛一个小任务,比如:
创建一个 Python 脚本,输出斐波那契数列前 20 项,并生成 requirements.txt
正常的 Agent 流程是:先简单确认需求,然后调用文件写入工具创建脚本,再执行命令验证结果。你可以用另一个终端打开 DeepSeek 平台的调用记录页面,如果看到请求在实时产生,就说明流量确实走的是 DeepSeek,而不是残留的 Anthropic 配置。
还有一个验证隐藏配置的办法:执行/init让 Claude Code 扫描并理解当前项目。这一步会触发大量后台小模型调用,此时如果ANTHROPIC_SMALL_FAST_MODEL配得不合理(比如设成了 reasoner),你会明显感觉每一步都在长时间等待。所以/init也是检验快模型配置是否正确的天然测试场景。
5.2 我踩过的坑与完整排查链路
这组配置我在自己机器上跑了好几遍,也经历过一些失败,下面是最容易踩的几个点。
| 现象 | 可能原因 | 排查思路 |
|---|---|---|
| 启动后仍然要求登录 Anthropic | 没配 key,或旧登录态残留 | 检查 settings.json 是否存在、JSON 是否合法;清理.claude目录里除 settings.json 外的登录缓存后重启 |
| 调用返回 401 / 403 | API Key 错误、未充值、余额不足 | 去 DeepSeek 平台确认 key 有效性,确认账户有余额 |
| 返回 404 | Base URL 写错 | 确认以/anthropic结尾,不要写成/v1或其他路径 |
| 返回 400,提示模型不存在 | 模型名用了宣传名 | 改用deepseek-chat/deepseek-reasoner这两个 API 名 |
| 终端中文输出乱码 | 代码页不是 UTF-8 | 运行chcp 65001,或改用 Windows Terminal + PowerShell 7 |
| claude 命令闪退或没反应 | PowerShell 执行策略限制脚本运行 | 管理员执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser |
先说最大的坑:登录态残留。我第一次配好配置文件启动,还是进了 OAuth 页面,原因就是之前用官方账号登录过,缓存没清。这个坑的排查思路很简单,但很隐蔽:你只盯配置没有,因为问题是旧的缓存文件。清掉除 settings.json 之外的登录缓存,重新启动就正常了。
第二个要重点提醒的是模型名。我在ANTHROPIC_MODEL里填过deepseek-v3,结果每次调用都报模型不存在。DeepSeek 的 API 只认deepseek-chat和deepseek-reasoner,宣传名 V3、R1 不能直接用。这类错误返回的信息又不太直观,容易让人误以为是 API 地址的问题,白查半天。
第三个是执行策略。Windows 的 PowerShell 默认对脚本运行有严格限制,npm 全局安装的 cli 脚本可能被挡住,表现就是命令一闪而过,或者完全没有输出。管理员 PowerShell 执行一次:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser只影响当前用户,不是系统级放开,风险可控。这是微软提供的正规做法,不是绕过安全机制。
还有一类问题在旧设备上比较常见:Node 版本太老导致流式输出异常。表现是能启动,但回复是一个字一个字蹦出来,甚至卡住。如果你用的是 18 以下的 Node,别犹豫,升级到 20 LTS 再测。
最后一个提醒是关于防火墙的。如果你的 Windows 开启了自带防火墙,且第一次运行 claude 时有弹窗询问是否允许网络访问,要允许 Node.js 通过,否则 Claude Code 连不上 API,表现是启动后卡在初始化阶段,没有任何报错。这个坑和配置无关,但排查起来很折腾,一并写在这里。
我的习惯是,每次改完 settings.json 都用 claude 跑一个小任务验证,确认改动生效,再继续下一个操作。Windows 上这套环境,只要 Node 版本、终端、执行策略这三个基础项没问题,剩下的基本就是配置准确性的问题,照着上面表格逐项查,很快能定位。