小白安装Claude Code完整教程:Windows从零装好并接入Crazyrouter(附403解决方法)

小白安装Claude Code完整教程:Windows从零装好并接入Crazyrouter(附403解决方法)

第一次装Claude Code(一款在终端里工作的AI编码工具)的人,很容易卡在同一个位置:程序装完了,敲claude --version也能看到版本号,可一启动就弹出一行403。这一篇把从零安装到真正跑通的每个动作写清楚,按顺序做就行。

这篇写给谁看:用Windows电脑、没写过代码或刚开始学、想用Claude Code却一直连不上的人。

做完能得到什么:命令能执行、配置能解析、模型能回话、后台有记录。这四件事同时成立才算真的装好,只满足其中一件都不算。

全文以Windows 10/11和PowerShell为例。文中YOUR_CRAZYROUTER_API_KEY与YOUR_MODEL_ID都是占位符,执行前替换成你自己创建的值。

上图就是这篇要处理的情况:程序已经在电脑上了,请求却没被送去正确的地方。

开工前,先对着这张表检查一遍

要准备的东西 具体是什么 从哪里获取
一台Windows电脑 Windows 10或Windows 11都行 你自己的机器
一个终端窗口 系统自带的PowerShell 开始菜单搜索
Node.js 22或更高版本,只在npm路线下需要 Node.js官网下载页
一个可用邮箱 用来注册账号 你常用的邮箱
Crazyrouter的API Key 一串调用密钥 注册后在控制台创建

最后一项是全文最容易弄混的地方。登录密码、邮箱验证码、API Key是三样互不相同的东西,Claude Code只认最后这个,另外两个填进去都不会生效。

七个步骤,一步都别跳

每一步按同一套写法展开:先说要做什么,再给要敲的命令,最后写清应该看到的结果。上一步没出现预期结果,就先停下解决,别急着往下走。

第1步:打开PowerShell,弄清命令要输在哪里

在开始菜单里搜到PowerShell并打开;习惯用Windows Terminal的,新建一个PowerShell标签页也一样。看到形如PS C:\Users\你的用户名>的提示符,才是本文说的输入位置。提示符本身不用复制,只复制代码框里的内容,一次一条。

如果你此刻正停在Claude Code的聊天界面上,先退出回到普通PowerShell窗口。安装命令不是聊天内容,发给模型不会有任何作用。

第2步:安装Claude Code

两条路线任选一条走通就行,不要两条都装一遍。

路线一,官方原生脚本。 按当前官方安装文档,Windows下PowerShell的原生命令是:

powershell 复制代码
irm https://claude.ai/install.ps1 | iex

执行前先确认域名是claude.ai。原生安装不需要预先装Node.js,所以"没装Node.js就一定装不上"这句话只对下面的路线二成立。装完按提示处理PATH,必要时关掉窗口重开,再确认一次:

powershell 复制代码
claude --version

路线二,npm安装。 先到Node.js官网下载页取Windows的LTS安装包,按向导装完并重开终端。当前文档要求Node.js 22或更高版本,旧教程里的低版本别照搬。

powershell 复制代码
node --version
npm.cmd --version
npm.cmd install -g @anthropic-ai/claude-code
claude.cmd --version

包名结尾就是claude-code,-g与包名之间有一个空格。这里刻意写成npm.cmd和claude.cmd,是为了绕开Windows上一个小坑:npm会同时生成.cmd与.ps1两个包装器,PowerShell有时会选到.ps1,而它可能被执行策略拦下。写清楚.cmd,等于指定走命令解释器。

两条路线都可能碰到的报错,先放在一起看:

看到上面这一屏不必逐行找错。报错里出现的var、<script type="text/javascript">全是JavaScript和HTML的东西。毛病不在PowerShell身上,而在于有人让它去读一份网页源码。这通常说明你拿到的是被拦截后返回的页面,不是安装脚本。这条路线到此为止,改成路线二更省时间。

如果报错是E404,把报错里的包名一个字符一个字符读完。图里的包名是@anthropic-ai/claude-codenpm,末尾多挂了npm,原因是上一条命令和这一条粘成了同一行。这跟网络、跟镜像源都没关系,清空重敲即可。

顺带说一句:按本次查到的文档,Windows版在没装Git for Windows时也能靠PowerShell执行Shell命令,需要拉仓库、管版本时再装,别把"先装Git"写进前置步骤。

第3步:注册Crazyrouter,创建一把API Key

用浏览器打开https://crazyrouter.com,按页面提示注册并登录。进控制台后找到密钥页面,新建一把Key。名字取一个以后能认出来的,比如claude-code-windows,顺手确认一下有效期、额度与可用模型范围,然后把Key复制下来存好------离开页面通常就看不全了。

这一步别跟登录密码、邮箱验证码混在一起,前面说过,Claude Code要的只是这串Key。

第4步:写配置文件,让Claude Code知道去哪儿找模型

用户级配置对任何目录启动的Claude Code都生效,路径固定是:

text 复制代码
%USERPROFILE%\.claude\settings.json

先确保目录存在,顺手给可能已有的旧配置留一份备份:

powershell 复制代码
New-Item -ItemType Directory -Path "$env:USERPROFILE\.claude" -Force | Out-Null
$cfgPath = Join-Path $env:USERPROFILE '.claude\settings.json'
if (Test-Path -LiteralPath $cfgPath) {
    Copy-Item -LiteralPath $cfgPath -Destination "$cfgPath.bak-$(Get-Date -Format 'yyyyMMdd-HHmmss')"
}
notepad.exe $cfgPath

把下面这段填进去。文件不存在就新建;保存时确认文件名是settings.json,别变成settings.json.txt。

json 复制代码
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://cn.crazyrouter.com",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_CRAZYROUTER_API_KEY"
  }
}

填的时候守三条规矩:字段名、网址、Key都用英文双引号包住;不要写//注释;最后一项后面不留逗号。文件里本来已经有env的,就在里面补,别弄出两个env。

这里有个细节值得单独讲:ANTHROPIC_BASE_URL的位置只写域名部分就够了,也就是https://cn.crazyrouter.com。后面的/v1和/v1/messages由客户端自己拼接,你一旦手动补上,实际请求路径会变成/v1/v1/messages这样的重复结构,回来的只有404。OpenAI兼容客户端的习惯正好相反(那边一般必须带/v1),照抄过来就会踩这个坑。这些机器调用的地址不要带UTM参数。

第5步:搞清楚403到底从哪儿来

真正造成"地址改完还是403"的,是变量名选错了。这两个变量发出去的请求头并不一样:

变量名 实际发出的请求头 面向的对象
ANTHROPIC_API_KEY x-api-key: <你的key> Anthropic官方API
ANTHROPIC_AUTH_TOKEN Authorization: Bearer <你的token> 自定义或兼容网关

一旦写的是ANTHROPIC_API_KEY,等于告诉客户端"我手里是官方密钥",它会继续沿官方通道走,此时ANTHROPIC_BASE_URL填得再准也拉不回来。这就是"地址明明改了却一直403"的成因。两把凭据不要为了保险同时塞进去。

想确认配置写得对不对,可以读一次文件:

powershell 复制代码
$ccJson = Get-Content -Raw -LiteralPath (Join-Path $env:USERPROFILE '.claude\settings.json') | ConvertFrom-Json
[pscustomobject]@{
    Endpoint   = $ccJson.env.ANTHROPIC_BASE_URL
    TokenReady = -not [string]::IsNullOrWhiteSpace([string]$ccJson.env.ANTHROPIC_AUTH_TOKEN)
}

看到正确的地址和TokenReady: True,只能说明文件语法没问题,不证明Key有效 。也不要整段打印$ccJson再截图,那会把真实Key亮在屏幕上。

第6步:给Claude Code指定一个模型

先把当前Key能用的模型列出来:

powershell 复制代码
$rootUrl = ([string]$ccJson.env.ANTHROPIC_BASE_URL).TrimEnd('/')
$authHdr = @{ Authorization = "Bearer $($ccJson.env.ANTHROPIC_AUTH_TOKEN)" }
$modelList = Invoke-RestMethod -Uri "$rootUrl/v1/models" -Headers $authHdr -Method Get -TimeoutSec 30
$modelList.data | Select-Object id

从返回的ID里挑一个。不要拿营销名称或旧截图上的名字当ID,直接复制接口返回的那串字符。挑好之后写进配置:

json 复制代码
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://cn.crazyrouter.com",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_CRAZYROUTER_API_KEY"
  },
  "model": "YOUR_MODEL_ID"
}

保存后退出旧会话,重新开一个终端。

第7步:提一个最小的问题,验证真的接通了

先在个人目录下建一个练习文件夹,不要拿真实项目试:

powershell 复制代码
$probeDir = Join-Path $env:USERPROFILE 'cc-selftest'
New-Item -ItemType Directory -Force -Path $probeDir | Out-Null
Set-Location $probeDir
claude -p "请回一个OK就行,别读文件、别跑命令。"

用npm方式装的人,把命令里的claude改成claude.cmd再执行,预期输出一个干净的OK。

拿到OK之后,回控制台的使用日志按时间和Key名字筛一次:时间对不对得上、模型是不是你选的那个、有没有请求记录和用量。客户端有回答、后台有记录,才叫接通;只有一边,都还不能下结论。

附录一:命令与配置速查

用途 命令或内容
查环境 node --version / npm.cmd --version / claude --version
原生安装 `irm https://claude.ai/install.ps1
npm安装 npm.cmd install -g @anthropic-ai/claude-code
升级 npm.cmd update -g @anthropic-ai/claude-code
卸载 npm.cmd uninstall -g @anthropic-ai/claude-code
配置文件 %USERPROFILE%\.claude\settings.json
模型清单 https://cn.crazyrouter.com/v1/models
对话接口 https://cn.crazyrouter.com/v1/messages

卸载只会移除命令行工具,配置文件还留在%USERPROFILE%\.claude\目录里,需要彻底清理时再手动删除,删之前先把有用的配置抄出来。

附录二:报错对照表

看到的现象 大概哪里出了问题 先做哪个动作
提示找不到claude 命令没装好或PATH没生效 重开终端,检查PATH
npm报E404 包名敲错或两条命令粘连 逐字符读完报错里的包名
JSON粘进PowerShell报ParserError 操作位置不对 JSON属于文件,不属于命令行
报错里出现api.anthropic.com 请求没走你配的地址 检查ANTHROPIC_BASE_URL与变量名
401或403 变量名用错 核对是不是用了ANTHROPIC_AUTH_TOKEN
ConnectionRefused 请求被本地代理挡下 查被拒的主机与端口
模型不存在、无可用渠道 模型ID或额度有问题 核对精确ID、协议与额度

关于403,当时的报错原文是:

text 复制代码
Failed to connect to api.anthropic.com: Status 403

这行字读三点就够:看到403,说明请求已经到达服务端、被对方明确回绝(网络不通拿到的是超时,不会有状态码);看到主机名是api.anthropic.com,说明请求压根没走Crazyrouter;再加上"版本号正常"这个前提,结论就很清楚------问题不在安装本身,而在请求的落点和身份。

如果报错指向127.0.0.1或localhost上的某个端口,多半是本地代理没在监听。把示例里的7890换成你自己报错里的真实端口:

powershell 复制代码
Test-NetConnection 127.0.0.1 -Port 7890
Test-NetConnection cn.crazyrouter.com -Port 443

TcpTestSucceeded=False只说明这条TCP连接没建立起来,它连远端都还没碰到,自然不能拿来证明Key有问题。这两条命令也只测通断,不验证TLS、密钥与模型权限。

本次实测记录

下面这组数字来自2026年9月28日本机的实际运行:

观察项 数值
系统与终端 Windows 10、Windows PowerShell
运行时 Node.js v22.22.2、npm 10.9.7
客户端 Claude Code 2.1.281
配置文件 settings.json解析通过,只用ANTHROPIC_AUTH_TOKEN
模型清单接口 HTTP 200,共161个ID
对话接口 HTTP 200,内容为OK,stop_reason=end_turn
响应标识 msg_011CfVJqbN2DVuqoYqgLcdNE
用量 输入18、输出4
耗时 直连11569 ms、客户端5103 ms
客户端结果 exit 0、is_error=false、subtype=success
会话 a7a76f08-fa36-4a36-8787-3f2b24dad626

最小核验使用的请求体是这样的:

json 复制代码
{
  "model": "claude-fable-5-1",
  "max_tokens": 32,
  "messages": [
    { "role": "user", "content": "Reply with exactly OK." }
  ]
}

这段JSON是HTTP请求体,不要存成settings.json,也不要直接丢进PowerShell执行。测试用的是隔离的配置目录、凭据只经进程环境传入,所以它证明的是"这套配置当时能通"。模型ID和价格会随渠道变化,以你查询时的/v1/models与控制台为准。

附录三:不想动配置文件时,先在当前窗口试一次

有时候你只是想确认地址和Key到底通不通,还没打算长期配置。这时可以不碰settings.json,直接在这个PowerShell窗口里临时塞两个变量:

powershell 复制代码
$env:ANTHROPIC_BASE_URL = 'https://cn.crazyrouter.com'
$env:ANTHROPIC_AUTH_TOKEN = 'YOUR_CRAZYROUTER_API_KEY'
claude -p "请回一个OK就行,别读文件、别跑命令。"

这样设置的变量只在当前窗口里存在,窗口一关就没了,不会写进系统设置,也不会污染已经配好的长期配置。它适合做一次快速对照:如果这样能出OK,说明地址和Key都没问题,再去第4步写文件;如果这样也报403,就说明问题出在凭据本身,而不是配置文件。执行期间别运行会打印这两个变量的命令,免得Key被亮在屏幕上。

附录四:配置到底该放在哪一层

新手装完之后,最容易遇到的下一个困惑是"我明明改了配置,为什么没生效"。原因通常是这台机器上有不止一份配置。按作用范围,可以分成三种:

放在哪里 具体位置 生效范围与优先级
临时 不写文件,用$env:在当前窗口临时设置 窗口关掉就失效,优先级最高
用户级(本文推荐先配这个) %USERPROFILE%\.claude\settings.json 这台电脑的任何目录都能读到
项目级 项目根目录下的.claude\settings.json 只对该项目生效,优先级高于用户级

第一次安装,把用户级配好就够了,不需要三层都动。等你以后手上有多个项目、想给某个项目单独换模型或换端点时,再加项目级的那份。排查"改了不生效"的时候,顺序是:先看命令行有没有临时的$env:变量盖在上面,再看当前工作目录下是不是躺着一份项目级配置,最后才回头看用户级的那份。三种配置改完之后,都要重开会话才会重新读取。

参考资料

免责声明:本文为个人安装与排错的经验记录,不是官方文档。软件版本、第三方服务、模型名称与价格都会随时间变化,请以你使用时各平台的官方页面为准;接口地址与配置路径同样以官方最新说明为准。全文不含佣金、返利或商业赞助。

相关推荐
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(82):ReasoningBank——从成功与失败经验中沉淀可复用的推理记忆
论文阅读·人工智能·学习·开源·github
XMAIPC_Robot1 小时前
为什么大型储能需要边缘 AI 协调控制器?RK3588+FPGA 高速采集方案
人工智能·嵌入式硬件·fpga开发·arm+fpga·rk3588+fpga·协调控制器
xx_xxxxx_1 小时前
论文阅读-CoTTA
人工智能·深度学习·机器学习
2601_962780911 小时前
用户研究校招备考路线|问卷、访谈、可用性测试项目与数据分析工具
数据挖掘·数据分析·可用性测试
RPAdaren1 小时前
金融政企高合规场景,该选现场编排还是流程库调用型 AI Agent
人工智能
泥人张1 小时前
踩坑无数换来的教训:指挥AI开发App,这几点你必须知道
人工智能
蓝速科技1 小时前
政务自助终端信创选型与无人值守落地方案
android·大数据·数据库·人工智能·科技·技术分享·政务
“AI国潮设计-小江”1 小时前
[AIGC实战] 基于Stable Diffusion的潮汕非遗IP自动化生成工作流(附Python批量处理脚本)
开发语言·人工智能·python·prompt·aigc
szxinmai主板定制专家1 小时前
RK3576+CODESYS+RK182X+FPGA异构架构:半导体精密设备一体化控制器方案
人工智能·fpga开发·架构·rk3576+codesys