1. 为什么 Windows 上装 ClaudeCode 总在第一步卡住
ClaudeCode 是一个跑在终端里的 AI 编码助手,能读你本地的项目文件、执行命令、按你的描述改代码。它适合谁?适合已经在用 PowerShell 或 CMD 做开发、想让 AI 直接进到工程目录里干活的 Windows 用户。但它跟普通 npm 包不太一样:它依赖 Node.js 运行时,启动时还要读一组环境变量来决定「把请求发到哪个模型通道」。这两件事任何一件没弄对,你敲claude之后看到的不是对话界面,而是一串报错或者一直转圈。
我见过最多的三类翻车现场:第一,Node.js 装了但 npm 全局目录没权限,npm install -g直接 EPERM;第二,装完了却不知道 ClaudeCode 默认要连官方通道,国内网络下请求发不出去;第三,环境变量只在当前窗口生效,关掉 PowerShell 再开就「失忆」,于是每次都要重新配。
这篇就按「从零到能对话」的顺序走一遍:先用 PowerShell 把 node.js / npm 检查干净,再设好 npm 全局目录避免权限坑,然后给出接入 TaoToken 统一 Key/API 通道的 settings.json 骨架,最后实打实启动一次验证。全程命令可直接复制,配置项我会解释每个字段在干嘛,方便你换成 DeepSeek 等其他模型时知道改哪里。
2. 前置环境:用 PowerShell 把 node.js 与 npm 检查到位
2.1 确认 PowerShell 与执行权限
先以管理员身份打开 Windows PowerShell。不是必须管理员才能装 Node,但设全局目录、改执行策略时省事。检查当前执行策略:
Get-ExecutionPolicy如果返回Restricted,npm 的全局脚本可能跑不起来,改成当前用户级别即可,不用动系统全局:
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedRemoteSigned的意思是:本地写的脚本可以直接跑,从网上下载的脚本需要签名。对日常开发够用,也比Unrestricted稳妥。
2.2 检查 node.js 与 npm 版本
node -v npm -v正常会分别打印类似v20.11.1和10.2.4。如果提示「无法将 node 识别为 cmdlet」,说明没装或没进 PATH。去 Node.js 官网下载 LTS 版.msi,双击安装时保持默认路径C:\Program Files\nodejs\,一路 Next 即可。安装完关掉当前 PowerShell 重新开一个,PATH 才会刷新。
版本要求上,ClaudeCode 需要 Node 18 以上,建议直接用 20 LTS 或更高。Node 24 也能跑,但如果你公司内网有老项目依赖,装 20 LTS 兼容性更稳。
2.3 设置 npm 全局目录,绕开 EPERM
默认情况下 npm 全局包会装到C:\Program Files\nodejs\node_modules,这个目录普通用户没写权限,npm install -g就会报EPERM: operation not permitted。解决办法是把全局目录挪到用户目录下:
npm config set prefix "$env:USERPROFILE\.npm-global"然后把该目录加进当前会话的 PATH:
$env:Path += ";$env:USERPROFILE\.npm-global"想永久生效,用setx写进用户环境变量(注意setx有 1024 字符长度限制,PATH 太长会截断,建议先echo $env:Path备份):
setx PATH "$env:Path;$env:USERPROFILE\.npm-global"验证一下配置是否落盘:
npm config get prefix返回C:\Users\你的用户名\.npm-global就对了。这一步做完,后面npm install -g @anthropic-ai/claude-code才不会因为权限中断。
3. 接入 TaoToken 统一通道:settings.json 骨架与字段说明
3.1 为什么用统一 Key/API 通道
ClaudeCode 默认走 Anthropic 官方端点。如果你手上有 DeepSeek、通义、Kimi 等多个模型的 Key,一个个配环境变量会很乱。TaoToken 提供统一 Key 和 API 通道,把不同模型的接入收敛到一个 base URL 加一个 Key 上,切换模型只改模型名,不用重配整套环境。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点是 https://taotoken.net/api 。
先去控制台建一个 Key:打开 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,在 API Keys 页面创建,复制保存好,后面 settings.json 要用。Key 只在创建时完整显示一次,丢了只能重建。
3.2 settings.json 放哪、写什么
ClaudeCode 读取用户级配置的位置在用户目录下的.claude文件夹。先建目录:
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude"然后创建settings.json。用记事本或 VS Code 都行,路径是C:\Users\你的用户名\.claude\settings.json。骨架如下:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "deepseek-chat", "ANTHROPIC_SMALL_FAST_MODEL": "deepseek-chat" } }字段逐个说清楚:
ANTHROPIC_BASE_URL决定请求发到哪。填 TaoToken 的 API 地址,ClaudeCode 就会把对话请求送到统一通道,而不是官方端点。
ANTHROPIC_AUTH_TOKEN是你的鉴权凭证。注意这里用的是AUTH_TOKEN而不是API_KEY,两者在 ClaudeCode 里的读取逻辑不同,用错字段会出现「请求发出去了但 401」。
ANTHROPIC_MODEL是主模型,负责实际写代码、分析文件。示例填deepseek-chat,你也可以换成通道里支持的其他模型名。
ANTHROPIC_SMALL_FAST_MODEL用于轻量任务,比如生成标题、判断意图。填同一个模型最省心,想省钱可以填更小的模型。
注意:settings.json 里不要留中文注释,JSON 不支持注释,会导致解析失败。密钥属于敏感信息,别把这个文件提交到 Git 仓库。
3.3 环境变量与 settings.json 的关系
ClaudeCode 启动时,进程环境变量的优先级高于 settings.json。也就是说,如果你之前在 PowerShell 里$env:ANTHROPIC_BASE_URL = "..."设过,它会盖掉配置文件里的值。排查问题时先确认当前会话有没有残留变量:
Get-ChildItem Env: | Where-Object { $_.Name -like "ANTHROPIC*" }有输出就说明当前窗口有临时变量。想以 settings.json 为准,关掉窗口重开,或者手动清掉:
Remove-Item Env:ANTHROPIC_BASE_URL -ErrorAction SilentlyContinue Remove-Item Env:ANTHROPIC_AUTH_TOKEN -ErrorAction SilentlyContinue4. 安装 ClaudeCode 并完成一次启动验证
4.1 全局安装
前置都就绪后,安装命令就一行:
npm install -g @anthropic-ai/claude-code装完检查版本:
claude -v能打印版本号说明可执行文件已进 PATH。如果提示找不到命令,回到 2.3 确认npm config get prefix的路径在 PATH 里,然后重开 PowerShell。
4.2 启动并验证模型调用
进一个测试目录,避免 ClaudeCode 扫描到无关的大项目:
mkdir $env:USERPROFILE\cc-test cd $env:USERPROFILE\cc-test claude首次启动会进入交互界面。直接输入一句简单的话,比如「用一句话说明这个目录里有什么」。如果配置正确,你会看到模型返回内容,而不是报错。
想更明确地验证通道是否通,可以在对话里让它执行一个只读命令,比如「列出当前目录的文件」。ClaudeCode 会请求执行ls或dir,你确认后它返回结果。这一步同时验证了两件事:模型能收到请求,工具调用链路也正常。
如果你更想先在网页里确认 Key 和模型名没问题,可以打开模型对话页面 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 发一条消息,能正常回复说明 Key 有效、模型名拼写正确,再回到终端排查 ClaudeCode 侧的问题会快很多。
4.3 长期编码场景的配置建议
如果你打算把 ClaudeCode 当日常编码助手长期用,建议去了解一下 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。它针对高频编码、Agent 类调用做了额度与通道优化,比按次零散调用更划算。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,里面有各模型名对照和参数说明,换模型时照着改ANTHROPIC_MODEL即可。
5. 本篇常见报错排查
5.1 npm install -g 报 EPERM
现象:EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_modules\...'。
原因:全局目录在受保护路径。回到 2.3 设npm config set prefix,确认npm config get prefix返回用户目录,再重装。如果之前装过一半,先npm uninstall -g @anthropic-ai/claude-code清掉残留。
5.2 claude 命令找不到
现象:claude : 无法将“claude”项识别为 cmdlet。
原因:全局 bin 目录不在 PATH。检查npm config get prefix的返回值,把该路径加进 PATH。注意setx改完要重开终端,当前窗口不会自动刷新。
5.3 启动后一直转圈或超时
现象:输入消息后长时间无响应,最后报连接超时。
原因:base URL 没生效,请求还在往官方端点发。检查三处:settings.json 的ANTHROPIC_BASE_URL是否为https://taotoken.net/api;当前会话有没有残留的ANTHROPIC_BASE_URL环境变量覆盖它;网络能否正常访问该地址。用Get-ChildItem Env:确认没有多余变量。
5.4 返回 401 未授权
现象:模型返回鉴权失败。
原因:字段名用错或 Key 无效。ClaudeCode 读的是ANTHROPIC_AUTH_TOKEN,不是ANTHROPIC_API_KEY。确认 settings.json 里字段名拼写正确,Key 没有多余空格,且没有过期。可以先去模型对话页面用同一个 Key 测一条消息,排除 Key 本身的问题。
5.5 模型名报错 model not found
现象:提示模型不存在或不可用。
原因:ANTHROPIC_MODEL填的模型名不在通道支持列表里。对照接入文档里的模型名清单,确认拼写。DeepSeek 系列常用deepseek-chat,别写成deepseek或带版本号的错误格式。
5.6 改了 settings.json 不生效
现象:修改配置后行为没变化。
原因:环境变量优先级更高,或者改错了文件位置。确认文件在C:\Users\你的用户名\.claude\settings.json,不是项目目录下的同名文件。清掉当前会话的 ANTHROPIC 变量后重开终端再试。
6. 配好之后,从一次真实对话开始
整套流程的核心就三件事:Node 环境干净、npm 全局目录有写权限、ClaudeCode 的请求指向统一通道。这三件做完,剩下的就是模型名和 Key 的细节。
给你一个我常用的自检顺序,出问题时按这个走能省不少时间:先node -v和npm -v确认运行时;再npm config get prefix确认全局目录;然后Get-ChildItem Env:看有没有残留变量;最后去模型对话页面用同一个 Key 发一条消息,确认通道和 Key 本身没问题。四步下来,问题基本能定位到具体环节。
配置文件和命令都给你了,直接复制改 Key 就能跑。真正开始用之后,你会发现 ClaudeCode 的价值在于它能进到你的工程目录里读文件、改代码,而不是在网页里来回粘贴。把 settings.json 一次配好,后面换模型只改一个字段,这才是统一通道省事的地方。