拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Windows下用DeepSeek驱动Claude Code:完整配置与避坑指南

Windows下用DeepSeek驱动Claude Code:完整配置与避坑指南

去年年底开始,我把日常工作流里几个 AI 工具重新组合了一遍。主力机型是一台 Windows 笔记本,终端里跑的是 Claude Code,模型后端换成了 DeepSeek。这个组合听起来有点“混搭”,但实际用下来,无论是日常写脚本、改配置、批量处理代码文件,还是让 AI 帮我梳理项目结构,都很顺手。关键是整个过程不复杂:装一个 Node.js 环境,安装 Claude Code 命令行工具,再写好 settings.json 把模型指向 DeepSeek 的接口就行。

真正的难点不在“安装”,而在“配置的细节”。比如 settings.json 放在哪里、环境变量该怎么写、为什么明明接了 DeepSeek 却一直报模型不存在、Windows 下执行脚本时各种权限报错怎么处理……这些问题网上信息很零散,我一边查一边试,踩了几天坑才把这套流程理顺。这篇文章就把完整链路串一遍,从零开始,直接照着操作,Windows 上也能顺利跑起来。

1. 思路拆解:为什么用 DeepSeek 驱动 Claude Code

1.1 这个组合解决了什么

先明确一点:Claude Code 是 Anthropic 推出的命令行编程助手,本身需要调用大模型接口才能干活;DeepSeek 是深度求索提供的大模型服务,开放了 API 接口,而且专门做了 Anthropic 协议的兼容层。所谓“用 DeepSeek 驱动 Claude Code”,就是让 Claude Code 这个“外壳”把请求发到 DeepSeek 的接口,由 DeepSeek 的模型完成实际推理。

这样做的直接好处是明显的。Claude Code 的交互体验是我用过最顺手的 AI 编程工具之一,比如它可以读写项目文件、自动补全多文件修改、在终端里逐步执行命令,这些能力依赖的是 Claude Code 本身的工具调用框架。但它的默认模型调用成本不算低,而 DeepSeek 在通用对话和代码生成场景下表现不错,价格又相对友好,API Key 申请流程也简单。把两者的优势拼在一起,等于保留了一个好用的“司机”,换了一台更省油的“发动机”。

我身边不少朋友也是这个思路:先有一个稳定的 AI 编程终端,模型可以按需切换。今天用这个模型,明天换那个模型,配置文件一改就切换,不用重新学一套工具。

1.2 整体调用链路

整个链路可以理解为三层:

  • 第一层是客户端:Claude Code CLI,负责接收你的指令、调度工具(读文件、写文件、执行命令)、把模型生成的文本渲染成交互界面。
  • 第二层是协议适配:Claude Code 默认按 Anthropic Messages API 格式发送请求。为了让请求能发到 DeepSeek,我们需要把接口地址(Base URL)指向 DeepSeek 提供的 Anthropic 兼容地址。
  • 第三层是模型服务:DeepSeek API 收到请求后,把模型输出返回给 Claude Code。

这里最关键的概念是“兼容接口”。DeepSeek 同时提供 OpenAI 格式和 Anthropic 格式两种接口。Claude Code 只认 Anthropic 格式,所以不能直接把地址配成普通 OpenAI 接口地址,否则请求格式对不上,会报 400、404 或者 JSON 解析错误。正确地址是https://api.deepseek.com/anthropic这种形式的兼容端点,Claude Code 会在这个地址后面拼接/v1/messages并发送请求。

一句话总结思路:安装 Claude Code,然后在配置里把“模型地址”重定向到 DeepSeek,并把模型名固定成 DeepSeek 能识别的模型 ID。后面所有配置都是围绕这件事展开的。

2. 环境准备:Windows 下把基础环境搭好

2.1 Node.js 与 npm

Claude Code 是一个 npm 包,所以最基础的前置条件是 Node.js 环境。Windows 上安装 Node.js 有几种方式,我建议按自己的习惯选:

  • 官网下载 LTS 安装包,一路下一步。这是最稳妥的方式,环境变量会自动配好。
  • 命令行安装:winget install OpenJS.NodeJS.LTS,适合习惯用 winget 管理软件的人。
  • 用 nvm-windows 管理多版本 Node,适合需要频繁切换 Node 版本的前端开发者。

安装完以后,打开 PowerShell 或 Windows Terminal,执行:

node -v npm -v

如果能正常输出版本号,说明 Node 环境没问题。我建议 Node 版本至少 18 以上,我本机用的是 20 LTS 版本,跑 Claude Code 没遇到兼容问题。如果你的系统里装了多个 Node 版本,注意把当前版本切到 18+ 再继续,否则后面安装包可能因为 engine 版本检查失败。

注意:Windows 下安装 Node.js 时会自动帮你把 Node 路径写入系统 PATH。如果你之前装过旧版本,卸载后重新安装,建议装完以后重启一次终端,让 PATH 生效。

2.2 安装 Claude Code

Node 环境就绪后,在终端里执行:

npm install -g @anthropic-ai/claude-code

这里用的是全局安装,安装完成后claude命令就会被注册到全局。执行:

claude --version

如果没报错,说明安装成功。这里有两个 Windows 特有的坑,我提前说一下:

第一,PowerShell 执行策略。有时候你运行claude,系统会提示“无法加载文件,因为在此系统上禁止运行脚本”。这是因为 PowerShell 默认执行策略比较保守。解决办法是以管理员身份打开 PowerShell,执行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

这个命令只对当前用户生效,不会影响系统全局安全策略,改完以后本机脚本和从网上下载的经过签名的脚本都能正常执行。

第二,npm 全局目录没在 PATH 里。如果你安装后运行claude提示“不是内部或外部命令”,那基本是 npm 的全局安装目录没被加入 PATH。可以执行:

npm prefix -g

这个命令会显示全局安装目录,比如常见的C:\Users\你的用户名\AppData\Roaming\npm。把这个目录加到当前用户 PATH 里,再重开终端即可。npm 也支持自己改全局目录,但对大多数用户来说没必要。

2.3 搞定 DeepSeek API Key

DeepSeek 的 API Key 在它的开放平台里申请,步骤很简单:注册账号、在控制台创建一个 API Key、往账户里充一点额度。创建 Key 的时候会显示一串以sk-开头的字符串,记得复制保存好,离开页面后就看不到了,只能重新创建。

拿到 Key 以后,我先建议你直接测一下接口通不通,不要等到配置完 Claude Code 再来排查。用 PowerShell 执行下面的命令(注意环境变量区分大小写、换行符要用 PowerShell 语法):

curl.exe -X POST "https://api.deepseek.com/anthropic/v1/messages" ` -H "Content-Type: application/json" ` -H "Authorization: Bearer sk-你的Key" ` -H "anthropic-version: 2023-06-01" ` -d '{"model":"deepseek-chat","max_tokens":64,"messages":[{"role":"user","content":"ping"}]}'

注意我特意写了curl.exe而不是curl。Windows PowerShell 里curl是Invoke-WebRequest的别名,参数语法完全不一样,直接用会报错。加上.exe才能调用真正的 curl 程序。

如果接口正常,你会收到一段 JSON 响应,里面有模型返回的文本内容。如果收到 401,说明认证头不对;如果收到 404,说明地址路径可能写错了。这一步调试好以后,后面 Claude Code 的配置就只是重复利用这些信息而已。

3. settings.json 配置详解:真正决定成败的地方

3.1 配置文件在哪里

Claude Code 的配置支持多种层级,最常用的是这两个:

  • 用户级配置:C:\Users\你的用户名\.claude\settings.json
  • 项目级配置:你项目目录\.claude\settings.json

其中用户级配置对所有项目生效,项目级配置只对当前项目生效,并且会覆盖用户级配置里的同名内容。除了标准的settings.json,还有settings.local.json,后者专门用来放个人本地配置,比如你自己的 API Key。它的优先级比同级的settings.json更高,适合放在 Git 仓库里让团队共享通用配置、又不用把自己的密钥提交上去。

配置文件本质上就是一个 JSON 文件,核心是定义“请求发到哪、用哪个 Key、让模型叫什么名”。手动编辑时建议先用claude跑一次,让程序自动创建好.claude目录,然后再去编辑文件,以免因为目录不存在导致写入失败。

3.2 核心字段逐个拆解

下面这份是我在 Windows 上实际能跑通的配置:

{ "env": { "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic", "ANTHROPIC_AUTH_TOKEN": "sk-你的DeepSeek密钥", "ANTHROPIC_MODEL": "deepseek-chat", "ANTHROPIC_SMALL_FAST_MODEL": "deepseek-chat", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-chat" }, "permissions": { "allow": [ "Read", "Glob", "Edit", "Bash(npm run build)" ], "deny": [] } }

逐个解释一下这些字段的用途:

ANTHROPIC_BASE_URL是最核心的一项。它告诉 Claude Code 把所有 Anthropic 格式的请求发到哪个地址。DeepSeek 的 Anthropic 兼容地址就是刚才说的https://api.deepseek.com/anthropic。这里有个极其容易踩的坑:不要在地址结尾加/v1/messages。Claude Code 本来就默认会在 Base URL 后面拼接这个路径,你如果自己加上去,最终请求地址会变成.../anthropic/v1/messages/v1/messages,结果就是 404。我在第一次配置时把官方文档里的完整请求地址直接抄成了 Base URL,排查了好久才发现是路径重复问题。

ANTHROPIC_AUTH_TOKEN是认证令牌。Claude Code 读取这个变量后,会在请求头里加一个Authorization: Bearer sk-xxx的认证信息。为什么不推荐用ANTHROPIC_API_KEY?因为这个变量走的是另一种请求头格式(x-api-key),很多第三方兼容服务对认证头的解析没那么统一,用 Bearer 方式兼容性更好。如果你用ANTHROPIC_API_KEY反复遇到 401,换成ANTHROPIC_AUTH_TOKEN往往就好了。

ANTHROPIC_MODEL是主模型名。Claude Code 默认会请求像 Sonnet、Opus、Haiku 这类 Anthropic 模型名,但 DeepSeek 接口并不认识这些名字。DeepSeek 的模型 ID 是deepseek-chat(对应 DeepSeek-V3,通用对话)和deepseek-reasoner(对应推理模型,思考链更长)。我们必须显式把主模型固定成deepseek-chat,否则大概率会收到“模型不存在”的报错。

另外两个ANTHROPIC_SMALL_FAST_MODEL和ANTHROPIC_DEFAULT_HAIKU_MODEL是辅助模型配置。Claude Code 在处理标题生成、对话摘要、快速分类等轻量任务时,可能会调用较小的模型。如果不把这些变量也统一指过去,DeepSeek 服务可能收到一个它不认识的 Haiku 模型名,导致某个子功能报错。把这三个模型变量统统指向deepseek-chat,是最省心的做法。

最后是permissions字段。Claude Code 在运行时要调用各种工具,比如读文件、编辑文件、执行命令。默认情况下它会逐次询问你是否允许,这在交互模式里没问题,但有点烦。你可以在allow列表里把高频操作提前授权,比如Read(读文件)、Glob(搜索文件)、Edit(编辑文件),以及你常用的构建命令。deny列表则用来强制禁止某些危险操作。注意权限规则的写法可能随版本变化,第一次配置时可以先留空allow,跑几轮以后再根据常见操作把许可加上。

3.3 用命令配置还是要手写文件

Claude Code 本身也提供命令行配置方式,比如:

claude config set --global env.ANTHROPIC_BASE_URL "https://api.deepseek.com/anthropic"

这个命令会自动帮你更新配置文件,理论上比手写 JSON 更安全,因为它会保证 JSON 格式正确。但我个人建议你明白两件事。第一,命令配置和手写文件最终作用在同一个文件上,所以不要一会儿用命令、一会儿手写,容易造成配置被覆盖。第二,配置文件是标准的 JSON,不能写注释。如果你从网上复制了一段带//注释的配置,Claude Code 解析时会直接报错,而且报错信息往往不够直观。所以稳妥的路径是:先熟悉文件结构,用编辑器打开配置,按 JSON 格式手写一遍;想确认某项配置是否正确时,再借助claude config get之类的命令查看。

4. 完整实操:从空环境到跑通一次对话

4.1 最小可用配置

我把整个流程按顺序拆成下面几步,每一步做完可以立即验证,避免到最后来一次性排查。

第一步:确认 Node 环境。

node -v npm -v

第二步:安装 Claude Code。

npm install -g @anthropic-ai/claude-code claude --version

第三步:创建配置文件。先手动创建.claude目录并打开配置文件:

mkdir $env:USERPROFILE\.claude notepad $env:USERPROFILE\.claude\settings.json

把前面那份最小配置写进去,保存退出。注意把sk-你的DeepSeek密钥替换成你真实的 API Key。如果用的是 PowerShell,这个路径写法没问题;用 CMD 的话可以写成%USERPROFILE%\.claude\settings.json。

第四步:启动 Claude Code。

claude

启动后你就进入了交互式终端,可以像聊天一样输入指令。先让它做个简单的文件操作测试,比如“用 Python 写一个读取 CSV 文件的脚本,保存到当前目录”。如果配置正确,Claude Code 会调用 DeepSeek 的模型,响应你的请求,并且把文件写出来。

4.2 用非交互模式快速验证

交互模式下如果配置有问题,你可能要等半天才看到报错。更快的验证方式是使用 Claude Code 的 print 模式。在终端里执行:

claude -p "用一句话解释什么是 REST API"

-p参数的意思是 print,非交互式地执行一次请求,然后直接输出结果。这个模式不进入交互界面,只发起一次标准请求。如果这个命令能正常返回一段文字,说明 Base URL、鉴权、模型名这几个核心配置全部正确。之后再去交互模式下验证工具调用能力,排查范围会小很多。

我甚至建议你把最终板配置放到一个共享文档里,以后换电脑、重装系统时照着做,五分钟就能恢复环境。Windows 上很多环境问题都是“第一次没跑通、第二次已经会了”。

4.3 在 VSCode 里用上 Claude Code

很多用 Claude Code 的人不会只开一个独立终端窗口,而是希望在 VSCode 里直接配合项目代码使用。最简单的方式不是安装额外插件,而是在 VSCode 的集成终端里运行claude。点开 VSCode 的终端面板(快捷键Ctrl+`),切到 PowerShell,进入项目目录以后执行claude,它就能直接读取项目上下文,并与 VSCode 的文件系统协同工作。

有一点需要提醒:项目里的.claude/settings.json和用户级~/.claude/settings.json会同时生效,项目级优先。如果你在用户级配置里写了 DeepSeek 的密钥,又在项目级配置里写了一遍其他的 Key,实际生效的是项目级内容。为了避免密钥被 git 提交到仓库,建议在项目里只放一个团队共享的settings.json(不含密钥),密钥放到settings.local.json,同时把.claude/settings.local.json写进.gitignore。我在一个多人协作的项目里见过直接把 API Key 写进项目配置的人,提交以后半天才意识到,只能紧急撤销并重新生成密钥。这种事能提前预防就提前预防。

5. 常见问题与排查记录

5.1 模型名报错

典型表现:请求发出后很快返回 400,错误信息里出现model not found或Unknown model。

排查思路:先看ANTHROPIC_MODEL是否被设置成了deepseek-chat。很多人只设置了 Base URL,忽略了模型名。Claude Code 默认发送的是 Anthropic 的模型名,DeepSeek 不可能认识。还有一个隐蔽的原因:Claude Code 在版本更新后可能会改变默认模型名,如果你以前能跑通,某天突然开始报 Unknown model,可以检查是不是配置被覆盖、或者新增了一个辅助模型变量(比如ANTHROPIC_DEFAULT_HAIKU_MODEL)没有被指定。

处理办法:打开settings.json,确认环境变量里模型相关的三个值都指向deepseek-chat。如果你想用推理模型,也可以把主模型改成deepseek-reasoner,但注意推理模型的响应时间更长,在需要频繁调用工具的代码任务里,整体节奏会比deepseek-chat慢不少。

5.2 鉴权失败 401/403

典型表现:AuthenticationError,或者提示invalid x-api-key、invalid authorization token。

排查思路:先确认 Key 本身有没有权限、账户余额是否充足。然后看认证头用的是哪一个环境变量。如果你用的是ANTHROPIC_API_KEY,但 DeepSeek 的兼容接口用的是Authorization: Bearer头,两者就对不上。

处理办法:统一改成ANTHROPIC_AUTH_TOKEN。另外还要检查 Key 前面有没有带多余的空格、引号,尤其是从网页复制到配置文件时,很容易粘进去不可见的空格字符,导致请求头变成Bearer sk-xxx这种中间有双空格的形式。这算是我见过最低级也最隐蔽的错误之一。

5.3 Windows 特有:执行策略与 PATH

PowerShell 执行策略问题前面提过,这里列成速查表:

症状原因解决
运行claude提示禁止运行脚本PowerShell 执行策略限制Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
提示claude不是内部或外部命令npm 全局目录不在 PATH执行npm prefix -g找到目录,加入用户 PATH
安装时报EPERM或EACCESnpm 全局目录权限不足以管理员身份运行终端,或重新安装 Node 到当前用户目录
终端中文乱码代码页不对在终端里执行chcp 65001切到 UTF-8 代码页

另外,Windows 防火墙首次运行 Node.js 时可能弹窗询问是否允许网络访问。如果配置没问题但请求一直超时,去防火墙设置里确认 Node.js 有没有被放行,常有杀毒软件会把 Node 的对外请求拦下来。

5.4 长任务与上下文超限

Claude Code 在处理复杂项目时,可能需要上下文很长,或者在执行工具调用过程中多次往返请求。DeepSeek 的上下文长度足够大多数代码任务用,但如果你一次性塞入大量文件内容,仍可能触发“上下文长度超限”之类的报错。

我自己的处理习惯是:控制单次请求携带的文件范围。不要让 Claude Code 一次性读取整个超大目录的所有文件,而是先把目录结构给它,让它自己挑需要看的文件看。遇到批量修改任务,拆成几轮来做,每一轮明确告诉它这一轮处理哪些文件、改动范围是什么,反而比一口气全交给它更可靠。也可以在交互界面里开启/compact(压缩历史)或手动清理上下文,但这些操作在不同版本里入口位置略有差别,以命令行提示为准。

5.5 其他几个容易踩的坑

还有一个常见问题是settings.json格式错误。很多人喜欢在 JSON 里加注释,比如:

{ "env": { // 这里填DeepSeek地址 "ANTHROPIC_BASE_URL": "..." } }

把这一行注释去掉,否则 Claude Code 启动时可能直接静默跳过配置,或者报错说配置无法解析。配置类文件和写代码不一样,JSON 本身就是标注格式,不额外支持注释。

另一个坑是 Base URL 端口和协议。确保是https://,不要写成http://,除非你本地搭了一个代理服务做调试。协议写错,报错信息通常是连接被拒或者证书错误。

最后,如果 DeepSeek API 偶尔返回 503 或 429,那是服务端限流或临时过载。Claude Code 本身有自己的重试机制,但遇到持续 429 时,最直接的办法是停一停、降低请求频率。不要反复重试大规模任务,那样限流会更严重。

6. 我的最终建议与使用心得

整套流程跑通以后,我最大的体感是“配置思路比具体命令更重要”。命令就那么几条,但想清楚 Base URL、鉴权 Token、模型名这三个变量是如何配合的,遇到任何报错都能快速定位。Windows 上的坑无非就是执行策略、PATH、curl 别名这几个,踩过一次以后基本就是常识了。

我现在的工作习惯是:重装系统后用自带的初始化脚本一键装好 Node 环境,然后照着这份配置三分钟接好 Claude Code。日常开发中,我把 DeepSeek 的deepseek-chat作为默认模型,代码重构、脚本编写、文件批量修改都用它。遇到复杂推理任务时,临时切到deepseek-reasoner,用完再切回来。这个组合也让我养成了一个新习惯:任何新工具接到本地以后,先写一个最小验证用例,而不是直接上复杂任务。这种“把链路拆到最短再验证”的思路,帮我在各种环境问题里少花了很多时间。

最后分享一个配置上的小技巧:如果你有多个模型服务需要切换,可以分别写成几个配置片段,放在文档里保存。换服务时只需要改ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN两个变量,三十秒就能切完。这也是 Claude Code 这套配置体系最值钱的地方:它把你对模型的选择彻底解耦成了配置文件里的几个字段,想用哪家模型,改配置就行,完全不需要换工具。

返回列表