
最近在 Windows 上折腾了一套结合方案用 DeepSeek 驱动 Claude Code。说白了就是让 Claude Code 这个编程助手跑在 DeepSeek 模型上而不是默认的 Anthropic 模型。这套组合对我的吸引力很直接API 价格低、模型响应快而且在 Windows 上整个过程完全可控。整个流程的核心就两块一是把 Claude Code 装好二是把 settings.json 配置写对。如果你正在 Windows 上找一套顺手的 AI 编程工具又不想在模型费用上花太多钱这篇文章应该能帮你避开不少弯路。Codex 之类还能继续用但 Claude Code 的交互方式确实更适合在终端里赶活。下面我从环境准备开始把安装、配置、验证和排错一步步拆开讲附带我实际踩过的坑确保你能照着操作。1. 为什么偏偏是 DeepSeek Claude Code1.1 这个组合到底是什么Claude Code 是 Anthropic 出品的终端编程代理你在终端里执行claude它就能帮你读代码、改代码、查报错、跑测试像有个结对编程的同事一直坐在旁边。但它默认绑定 Anthropic 自己的模型个人开发者长期用成本压力不小另外一个现实需求是很多人希望把模型替换成自己更熟悉、更可控的选项。DeepSeek 正好补上这个空位。DeepSeek 提供了 Anthropic API 兼容端点意味着不需要改 Claude Code 的底层代码只要在配置文件里改一个地址和鉴权信息就能让 Claude Code 把请求发给 DeepSeek同时保留原有的对话界面、工具调用和权限管理。这个“借用兼容端点换模型”的思路很多模型厂商都在做DeepSeek 属于做得比较干净的一家。1.2 这套组合的实际价值我实际用下来的感受是三个字省、快、稳。省指的是便宜。DeepSeek 的 API 定价比主流闭源模型低一个数量级特别是跑长对话、大仓库分析的时候Token 消耗量可以轻松上百万用兼容端点的模型能省下不少预算。快指的是 DeepSeek 在代码补全、错误解释这种短请求上延迟很低日常交互体感跟 Anthropic 模型差距不大。稳是指 Claude Code 的交互方式保持不变我不用重新学习一套快捷键不用改变工作流只是把引擎换掉而已。1.3 做好踩坑的心理准备我用的系统是 Windows 11版本更新到较新的 26H2 后终端体验和子系统支持已经改善了很多。但 Windows 毕竟不是 Linux安装 npm 包、写配置文件、调试环境变量时还是有不少坑。主要集中在几个地方npm 全局目录权限不够、PowerShell 执行策略不认脚本、系统环境变量被缓存、路径里的中文和空格容易出问题。下面我会把每个坑的具体表现和处理方法都讲清楚不用太担心。2. Windows 环境准备与工具安装2.1 先把 Node.js 运行时搞定Claude Code 是一个 npm 包所以电脑上必须先有 Node.js。这里我强调一个细节装 LTS 版本别追新版Claude Code 对 Node 版本有要求版本太老或太新都可能在运行时出幺蛾子。打开终端先确认自己环境里的版本node -v npm -v我看到不少人在这步就翻车了原因不是没装 Node而是电脑里装了多个 Node 版本终端里node用的是 20但npm又被某些工具切到了别的目录。最稳妥的验证方法就是重开一个干净的终端窗口再执行一次确保 PATH 没有干扰。如果你还没装 Node直接去 nodejs.org 下载 Windows 安装包一路下一步就行。装完必须重新打开终端让 PATH 生效。2.2 安装 Claude CodeNode 没问题后全局安装 Claude Codenpm install -g anthropic-ai/claude-code安装过程可能需要几十秒因为包体积不小。完成后验证claude --version如果你用的是 cmd系统提示“claude 不是内部或外部命令”不用急着重装这基本都是全局目录没进 PATH。npm 在 Windows 上的默认全局目录是C:\Users\你的用户名\AppData\Roaming\npm把这个目录手动加进系统环境变量 Path然后重新开终端再执行claude --version就能看到了。注意如果在安装时报EACCES权限相关错误别想办法去强改 npm 目录的权限最简单有效的做法是用管理员身份打开 PowerShell 或 cmd再重新执行 npm install 命令。2.3 申请 DeepSeek API Key接下来需要 DeepSeek 的 API Key。流程不复杂打开 DeepSeek 开放平台控制台注册并登录。进入 API Keys 页面创建一个新 Key。创建完成后立刻复制保存平台不会再显示第二次完整 Key。因为 DeepSeek 兼容的是 Anthropic 协议所以接口地址写的不是常见的/v1而是固定的https://api.deepseek.com/anthropic这是最容易犯迷糊的地方。很多教程里写https://api.deepseek.com/v1那是给 OpenAI SDK 用的Claude Code 走的是 Anthropic 格式必须用带anthropic后缀的地址写错了会一直报 404 或者鉴权失败。2.4 快速验证环境三件套在进入正式配置之前我建议先做一个快速自检。确认三件事Node 能跑、claude命令能找到、DeepSeek API 能连通。API 连通性可以用一个简单的请求测试curl -X POST https://api.deepseek.com/anthropic/v1/messages ^ -H x-api-key: sk-你的密钥 ^ -H anthropic-version: 2023-06-01 ^ -H content-type: application/json ^ -d {\model\:\deepseek-chat\,\max_tokens\:16,\messages\:[{\role\:\user\,\content\:\ping\}]}如果能看到返回内容而不是连接错误说明网络和 Key 都正常。这里有个小经验如果你本机网络需要特殊配置才能访问外部 API先确认能直连 API 域名再继续往后走不然后续所有报错都会堆在“模型没响应”上很难排查。3. settings.json 配置让 DeepSeek 正式接管 Claude Code3.1 settings.json 放在哪里、加载优先级是什么Claude Code 的配置文件中最核心的就是settings.json而且它有多个层级。按优先级从低到高分别是配置文件路径作用范围全局配置C:\Users\你的用户名\.claude\settings.json所有项目项目配置项目根目录\.claude\settings.json当前项目本地配置项目根目录\.claude\settings.local.json当前项目且不入版本库很多人在 Windows 上找不到.claude目录是因为资源管理器默认隐藏了点开头文件夹。建议直接用记事本打开C:\Users\你的用户名\.claude\settings.json没有就新建这个文件。在配置策略上我会把 DeepSeek 相关配置放全局这样任何项目都能直接用。如果某个项目有特殊需求比如必须用deepseek-reasoner再在项目配置里覆盖模型名。Claude Code 实际是按 key 做合并的而不是整文件覆盖所以这样的配置方式不会互相干扰。3.2 关键 env 环境变量完整写法打开全局 settings.json最核心的配置是启动 Claude Code 时自动注入的环境变量。我的推荐写法如下{ env: { ANTHROPIC_BASE_URL: https://api.deepseek.com/anthropic, ANTHROPIC_AUTH_TOKEN: sk-你的密钥, ANTHROPIC_MODEL: deepseek-chat, ANTHROPIC_DEFAULT_OPUS_MODEL: deepseek-chat, ANTHROPIC_DEFAULT_SONNET_MODEL: deepseek-chat, ANTHROPIC_DEFAULT_HAIKU_MODEL: deepseek-chat } }我这里逐个解释因为这些变量很容易被忽略一两个。ANTHROPIC_BASE_URL是请求地址负责告诉 Claude Code 该把请求发到哪。ANTHROPIC_AUTH_TOKEN是鉴权凭证DeepSeek 兼容接口用这个变量认人不是ANTHROPIC_API_KEY。ANTHROPIC_MODEL是默认模型名告诉 Claude Code 用哪个模型干活。后面三个ANTHROPIC_DEFAULT_OPUS_MODEL、ANTHROPIC_DEFAULT_SONNET_MODEL、ANTHROPIC_DEFAULT_HAIKU_MODEL很多人不理解为什么要写。Claude Code 内部有模型映射逻辑很多操作会默认调用 Sonnet、Opus、Haiku 这几个名字对应的 Anthropic 模型。如果不把它们强制指向 DeepSeek一旦某个子场景请求了不存在的模型就会看到 400 报错而且报错信息还很容易误导人。我第一次配置时没写这三个变量结果 Claude Code 在处理某个工具调用时仍请求了 Sonnet 模型直接失败补上后就正常了。这个细节非常关键。3.3 模型选型deepseek-chat 还是 deepseek-reasonerDeepSeek 开放平台目前主要提供两个模型名deepseek-chat和deepseek-reasoner。deepseek-chat速度快延迟低适合写代码、重构、解释报错、写测试这些日常任务。deepseek-reasoner会在复杂逻辑上花更多时间做推理适合架构设计、长链路问题排查、复杂代码生成。我的经验是平时用deepseek-chat如果某个任务明显复杂比如要分析一个跨多个文件的数据流再临时切到deepseek-reasoner。切换方式很简单不用改配置文件在 Claude Code 交互界面里输入/model它会列出可用的模型选中就行只对当前会话生效不会污染全局配置。3.4 怎么确认配置真的生效配置写好后进入 Claude Codeclaude然后在交互界面里执行/status正常会显示当前模型和 API 端点信息看到api.deepseek.com就说明配置已经生效。另外还可以输入/config查看加载的配置路径和具体值。如果发现请求还是打到 Anthropic 域名可能的原因有三个settings.json 的 JSON 语法写错、env键名打错、配置文件路径不对。最多的是第三种用户把文件放到了当前项目目录但 claude 在别的目录启动两者不是一个.claude文件夹自然读不到。4. 完整实操从零跑到第一轮对话4.1 创建一个干净的测试项目建议先建一个与工作无关的测试目录比如D:\work\demo-ai。目录名尽量用英文别带中文和空格Windows 上中文路径会让很多终端工具在处理文件时变得异常Claude Code 也是这样。在测试目录里放一个小文件test.py内容随便写点有函数和注释的代码比如def calc_area(radius): # 计算圆面积 return 3.14159 * radius * radius def main(): for r in [1, 2, 3]: print(f半径 {r} 的面积是 {calc_area(r)})目的不是代码本身而是让 Claude Code 有一个真实的文件上下文可以读取。4.2 首次启动与绕过登录在项目目录打开终端执行claude如果你已经按照上一节配置好了 settings.json它不会再弹 Anthropic 的账号登录二维码也不会要求你用浏览器登录而是直接使用 DeepSeek 的鉴权完成连接。这是我判断配置是否真正生效的直观标准之一。如果启动后还是出现登录相关提示不用慌先按CtrlC退出检查全局 settings.json 是否真的存在以及env键里的ANTHROPIC_AUTH_TOKEN是否为完整的 DeepSeek Key。有些版本会把登录状态缓存在本地即使配置正确也会多问一句这种时候选择跳过即可。进入交互界面后可以试着提一个具体需求比如帮我解释一下这个函数的逻辑并补上参数类型注解Claude Code 会先读取当前目录下的test.py然后调用 DeepSeek 模型生成回答。如果涉及文件修改它会在执行前征求你的许可。第一次使用会有一个权限确认流程选择允许即可。4.3 日常高频命令除了自然语言对话Claude Code 的命令体系才是真正提升效率的地方。我常用的几个/status /model /compact /cost /clear/status查看当前连接信息、模型和配置情况/model切换模型/compact可以在对话上下文过长时压缩历史既减少 Token 消耗又避免模型被无关信息干扰/cost查看会话费用这个很有用能直观看到一次重构花了多少钱/clear清空当前会话开新任务前必用。这些命令不复杂但是很值得背下来尤其是/compact和/cost在长时间使用 Claude Code 时几乎每天都会用到。4.4 接入 VS Code 提升体验很多人不习惯在纯命令行里写代码所以 Claude Code 和 VS Code 的搭配是实际使用中很常见的场景。有两种用法第一种在 VS Code 的集成终端里直接执行claude这样代码编辑区在左对话终端在右切换文件不离开窗口。第二种安装 Claude Code 扩展在面板里交互。两种方式本质上都是调用同一个 Claude Code配置共用。我个人的习惯是用 VS Code 集成终端因为这样既能保留终端里的权限提示和命令历史又不用切窗口。如果你在系统里配置了复杂的网络环境变量注意 VS Code 启动的终端会继承 VS Code 的环境变量如果 Claude Code 请求失败先检查 VS Code 终端里执行env看到的 ANTHROPIC 变量是否和全局一致。4.5 一个真实任务完整演示假设我现在要在test.py里增加一个需求把calc_area改成支持传入多个半径批量返回面积列表。我给 Claude Code 的指令是把 calc_area 改成批量计算接收一个列表返回一个面积列表保留原有单值调用的兼容性并补充类型注解它大概会做这么几件事读取test.py确认当前函数结构决定是否新增函数而不是直接改旧函数然后生成修改代码请求执行权限。我允许后它会直接改文件。整个流程里对话、文件读取、文件修改都是 Claude Code 内部完成的模型引擎是 DeepSeek但交互方式完全不变。这个体验就是我认为这套组合最舒服的地方换模型不换工作流所有技能和习惯迁移成本为零。5. 常见问题与 Windows 专属避坑手册5.1 npm 安装失败和 Node 版本不兼容很多人卡在第一步npm install -g anthropic-ai/claude-code报错。常见原因和解决办法如下报错特征原因解决办法EACCES permission denied权限不足用管理员身份打开终端重试not found: claude全局目录不在 PATH把C:\Users\用户名\AppData\Roaming\npm加入系统 PATHnpm error code ERESOLVE依赖冲突先升级 npm 再重试安装过程卡住网络波动检查本机对 npm 源和外部 API 的连通性如果你同时装了 nvm-windows 之类的多版本管理工具更要注意当前npm是不是和node在同一个版本下。用where node和where npm看一下路径不一致就切换版本。5.2 settings.json 不生效的三个原因配置完成后/status显示的模型还是 Anthropic或者请求直接报 404优先查三个点第一JSON 语法。 settings.json 是严格 JSON 格式最外层必须是对象多一个逗号、少一个引号都会导致整个文件加载失败。建议把内容复制到支持 JSON 校验的编辑器里看一眼。第二键名大小写。ANTHROPIC_BASE_URL里的下划线和大小写都不能错写成anthropic_base_url或AnthropicBaseUrl都不行。第三配置文件路径。全局配置必须在C:\Users\你的用户名\.claude\settings.json项目配置必须在当前工作目录的.claude\settings.json。Claude Code 启动时会从当前目录向上查找.claude文件夹如果你从别的目录启动读到的配置完全不同。我在 Windows 上还遇到过一个比较隐蔽的问题C:\Users\用户名里的用户名如果包含中文或特殊字符某些旧版本会对路径解析出错。这种情况下可以考虑用管理员账户或新建一个纯英文的本地账户来跑。5.3 连接超时和鉴权失败如果你能看到报错信息里包含ECONNREFUSED ETIMEDOUT 401 Unauthorized 403 Forbidden按顺序排查先确认ANTHROPIC_BASE_URL没有拼错。顺手检查是不是多带了/v1正确地址是https://api.deepseek.com/anthropic再检查ANTHROPIC_AUTH_TOKEN是否完整特别要注意复制时有没有漏字符或者开头结尾多了空格。在 settings.json 里写 Key 时不要加引号额外嵌套直接写字符串。最后确认电脑到 API 域名的网络是通的。Windows 上可以用nslookup api.deepseek.com如果解析正常但请求超时那大概率是防火墙或本机安全软件阻断了 Node 进程的外连请求。Windows 防火墙偶尔会在安装新工具时弹一次授权如果当时选了取消后续所有请求都会失败。检查一下防火墙列表里 Node.js 的入站和出站规则即可。5.4 Windows 终端权限和路径编码问题Claude Code 在很多操作中会调用系统的差异对比、命令执行等功能这些在 Windows 上受终端状态影响很大。我遇到过的典型问题有几个PowerShell 执行策略如果被锁得很死一些辅助脚本跑不起来但不代表 Claude Code 主程序不能用。你真的遇到脚本相关报错时可以用管理员权限执行Set-ExecutionPolicy -Scope CurrentUser RemoteSigned这个命令的作用是允许本地脚本运行缓解因为执行策略导致的脚本拒绝问题但也要清楚放开执行策略会带来一定的安全风险改完确认没问题后可以再收回去改成Restricted。关于编码问题Windows 的 cmd 默认代码页可能是 936也就是 GBK中文内容输出会乱码。建议直接换 Windows Terminal设置里把默认编码切到 UTF-8对话里的中文、代码里的注释都会正常很多避免因为编码错乱出现解析失败。另外项目目录绝对不要放在带空格的路径下比如D:\My Projects\demo某些工具调用会把路径拆分错误。用D:\Projects\demo这种全英文字母路径最省心。5.5 费用控制与请求优化技巧Claude Code 这类工具在对话过程中会频繁读取文件、生成大量补丁Token 消耗速度比你心里预估的要快得多特别是分析大仓库的时候一个任务烧掉几十万 Token 很常见。DeepSeek 单价低但也不是零成本建议从一开始就养成习惯。用/cost实时盯费用每做完一个任务扫一眼。发现某个请求特别贵比如一次重构消耗十几万 Token就要看看是不是上下文里塞进了太多无关文件。清理项目目录不要随便把整个 node_modules 或 dist 目录交给 Claude Code 读取指定要操作的文件而不是让它探索全目录。对话时间长了用/compact压缩历史。这个操作相当于把前面的长对话总结成一段摘要保留关键信息去掉大量历史细节后面每轮请求的 Token 基数会明显下降。还有一个小技巧把常见的、重复性的任务写成独立脚本减少和 Claude Code 的长对话次数。比如格式化代码、批量改文件头注释这种事直接自己写脚本跑一遍效率更高也更省钱。5.6 关于多项目切换的配置实践再补充一个项目级配置的实用建议。因为我经常在多个项目之间切换不同项目可能用到不同模型我通常会在项目根目录的.claude/settings.json里写项目级的覆盖项比如{ env: { ANTHROPIC_MODEL: deepseek-reasoner } }这样不会影响全局默认的deepseek-chat但又能在特定项目里强制使用推理模型。这个覆盖粒度在工作流中很舒服推荐你按需使用。注意项目配置是不建议写敏感信息的比如 Key防止哪天误把整个项目推到公开仓库把密钥暴露出去。最后再分享一个我自己的经验。之前有段时间我总是把 DeepSeek 的 API Key 写在系统环境变量里后来换了一台电脑重装环境发现配了环境变量但 Claude Code 不认怎么看都找不到原因。仔细排查后才发现Claude Code 启动时被某个进程改变了工作目录全局 settings.json 的路径没有按预期读取。后来我统一把 DeepSeek 相关配置收敛到全局 settings.json并且关掉了终端里的“恢复上次会话”功能问题才彻底消失。如果你也遇到“环境变量明明有但 Claude Code 不生效”这种诡异问题优先查 settings.json 的 JSON 格式和最外层键是不是env别急着去改系统变量方向错了真的会浪费很多时间。