1. Windows 上跑 Claude Code,为什么总卡在鉴权这一步
Claude Code 是 Anthropic 推出的命令行编程助手,能在终端里直接读项目、改代码、跑重构,适合习惯用 CLI 的开发者。它本身不绑定操作系统,Windows 下用 PowerShell 或 Windows Terminal 都能跑起来。但真正让大多数人卡住的,不是安装,而是鉴权配置。
我见过太多人在 Windows 上装完 Claude Code,一运行就报Auth conflict,或者提示Invalid API key,然后开始怀疑是不是网络问题、是不是版本不对。其实核心矛盾只有一个:Claude Code 同时支持两种鉴权来源,而它强制只允许一种生效。
这两种来源分别是:
ANTHROPIC_AUTH_TOKEN:CLI 登录态,通过claude login走 OAuth 流程拿到,适合本地交互式开发。ANTHROPIC_API_KEY:API Key 方式,直接填一个密钥,适合脚本化、CI 或统一网关接入。
问题在于,Windows 的环境变量层级比 Linux/macOS 复杂得多。当前 PowerShell 会话、用户级、系统级三层都可能残留ANTHROPIC_*变量,再加上 Claude Code 自己在~/.claude下缓存了一份配置。你改了环境变量、重启了终端,缓存那份还在,冲突照旧。
所以这篇不是单纯讲“怎么装”,而是把 Windows 下从安装到跑通第一个对话任务的完整链路拆开,重点放在鉴权配置和验证动作上。如果你打算用 TaoToken 的统一 Key 和 API 通道来接入,那 Base URL、密钥、模型 ID 这三件套怎么填、填在哪、怎么验证,都会给到可复制的片段。
适合谁看:在 Windows 上第一次接触 Claude Code 的人;已经装了但一直报鉴权错误的人;想用统一 Key 管理多个模型通道、不想每个工具单独配一遍的人。
下面按“先清干净、再装、再配、再验证”的顺序走,每一步都有命令和预期结果。
2. 用 TaoToken 统一 Key 接入前的准备工作
在动手改配置之前,先把 TaoToken 这边的信息拿到手。TaoToken 的作用是提供一个统一的 API 通道,你只需要一个 Key 和一套 Base URL,就能在 Claude Code、Cline、Codex 等不同工具里复用,不用每个工具去单独申请和切换。
你需要准备三样东西:
第一,API Key。登录 TaoToken 控制台,在 API Keys 页面创建一个新的 Key。建议按用途命名,比如claude-code-win,方便后面排查是哪个 Key 出的问题。创建后立刻复制保存,页面刷新后通常不再完整显示。
第二,Base URL。TaoToken 的 API 入口是https://taotoken.net/api,注意这里不要加任何查询参数,直接用它作为 Anthropic 兼容端点的基础地址。Claude Code 在配置时会在这个地址后面拼接/v1/messages之类的路径,所以 Base URL 只写到/api为止。
第三,Model ID。Claude Code 默认会请求 Claude 系列模型,你需要确认当前通道支持的模型标识。常见的是claude-sonnet-4-5这类命名,具体以控制台模型列表为准。Model ID 填错会直接导致reading choices或 404 类错误,后面排障章节会细说。
拿到这三样之后,先别急着往 Claude Code 里塞。Windows 上最容易出问题的就是“旧配置没清干净,新配置又叠上去”。所以下一步是先做一次彻底清理,把环境变量和本地缓存都归零,再重新配。
这里有个认知点值得强调:Claude Code 的鉴权来源不止环境变量一处。它还会读~/.claude目录下的本地配置缓存。你在 PowerShell 里Remove-Item Env:ANTHROPIC_API_KEY只清了当前会话,用户级和系统级还在;就算三层都清了,~/.claude里的缓存还在,重启终端也没用。所以清理必须覆盖四个位置:当前会话、用户级、系统级、本地缓存目录。
清理命令用 PowerShell 执行,逐条跑:
Remove-Item Env:ANTHROPIC_API_KEY -ErrorAction SilentlyContinue Remove-Item Env:ANTHROPIC_AUTH_TOKEN -ErrorAction SilentlyContinue [Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", $null, "User") [Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", $null, "User") [Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", $null, "Machine") [Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", $null, "Machine") Remove-Item -Recurse -Force "$env:USERPROFILE\.claude" -ErrorAction SilentlyContinue Remove-Item -Recurse -Force "$env:USERPROFILE\.config\claude" -ErrorAction SilentlyContinue跑完之后,用Get-ChildItem Env: | Where-Object { $_.Name -like "ANTHROPIC*" }确认当前会话没有残留。如果输出为空,说明清理到位。这一步不做,后面 99% 会继续报Auth conflict。
清理完再装 Claude Code。现在官方已经从 npm 版切换到原生安装器,Windows 下直接跑claude install即可。如果你已经能运行claude并进入交互界面,说明安装已完成,不用回头重装。安装完成后,先不要claude login,因为我们要走的是 TaoToken 统一 Key 的 API 通道方式,而不是 CLI 登录态。
3. 可复制的 settings 配置片段与 Base URL 设置
Claude Code 在 Windows 下的配置入口主要有两个:环境变量和settings.json。推荐用settings.json来管理,因为它可复制、可版本化,换机器时直接带走,不用重新配环境变量。
配置文件路径是%USERPROFILE%\.claude\settings.json,也就是C:\Users\你的用户名\.claude\settings.json。如果.claude目录不存在,先手动创建。用记事本或 VS Code 打开这个文件,写入以下 JSON:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-5" } }这三行就是前面说的三件套:Base URL、Key、Model ID。注意ANTHROPIC_BASE_URL只写到https://taotoken.net/api,不要加/v1或结尾斜杠,Claude Code 会自己拼接路径。ANTHROPIC_API_KEY填你在 TaoToken 控制台创建的 Key,保留sk-前缀。ANTHROPIC_MODEL填控制台确认过的模型标识。
如果你更习惯用环境变量而不是 settings.json,也可以在 PowerShell 里设置用户级变量:
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://taotoken.net/api", "User") [Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-你的TaoToken密钥", "User") [Environment]::SetEnvironmentVariable("ANTHROPIC_MODEL", "claude-sonnet-4-5", "User")设置完需要新开一个 PowerShell 窗口才能生效,因为用户级变量不会自动刷新到当前会话。
两种方式选一种即可,不要同时用。同时用会出现“settings.json 里一套、环境变量里一套”的情况,Claude Code 读取优先级不明确,容易又绕回鉴权冲突。我的建议是统一用 settings.json,环境变量只作为临时覆盖手段。
这里要特别提醒一个 Windows 特有的坑:路径中的反斜杠和空格。%USERPROFILE%展开后可能是C:\Users\张三,如果用户名带空格或中文,某些工具读取路径会出问题。遇到这种情况,把.claude目录放到一个纯英文无空格的路径下,比如C:\dev\.claude,然后通过CLAUDE_CONFIG_DIR环境变量指向它。不过大多数情况下默认路径是能正常工作的,先按默认来。
配置写完后,不要急着跑对话。先做一次配置读取验证:在 PowerShell 里执行claude --version,确认 CLI 能正常启动。然后执行claude config list(如果版本支持),看它读到的 Base URL 和 Model 是不是你填的值。如果这一步就报错,说明 JSON 格式有问题,检查有没有多余的逗号或引号。
确认配置被正确读取后,再进入下一步的真实请求验证。
4. 一次真实请求验证:从启动到首个对话任务跑通
配置写完只是“看起来对了”,真正跑通要看一次完整请求。这一步的目标是:启动 Claude Code,发一个简单指令,看到模型正常返回,并且不报鉴权错误。
先新开一个 PowerShell 窗口,让用户级环境变量生效(如果你用的是 settings.json,这步可以跳过,但新开窗口没坏处)。然后进入一个测试目录,比如C:\dev\test-claude,执行:
cd C:\dev\test-claude claude如果配置正确,你会看到 Claude Code 的欢迎界面,类似:
/model to try Opus 4.5 > Try "refactor <filepath>" ? for shortcuts看到这个界面就说明鉴权已经通过,CLI 进入了工作态。注意,这不是报错,是正常的引导界面。很多人第一次看到以为卡住了,其实是在等你输入。
接下来发一个真实请求。在提示符后输入:
explain .这个指令让 Claude 读取当前目录并解释项目结构。如果目录是空的,它会告诉你没有文件;如果目录里有代码,它会开始分析。无论哪种,只要它开始输出内容而不是报鉴权错误,就说明请求链路通了。
更直接的验证方式是发一个纯对话指令:
用一句话说明什么是递归预期结果是模型返回一句解释。如果返回正常,说明 Base URL、Key、Model ID 三件套全部生效。如果报错,根据错误类型对照下一节排查。
验证通过后,你可以试试基础操作。查看当前目录用pwd,列出文件用ls,让 Claude 改代码用refactor src/index.ts,修 bug 用fix src/main.ts。切换模型用/model。这些指令都遵循一个原则:在现有内容基础上做修订,不是重来。amend是修补刚提交的成果,refactor是重组结构但不改语义,fix是修明确问题。理解这个语义,用起来会顺手很多。
如果你想让 Claude Code 长期跑编码任务或 Agent 流程,可以考虑 TaoToken 的 Coding Plan,它在统一 Key 的基础上做了额度管理,适合持续调用场景。验证模型是否可用则可以直接用模型对话页面快速试。
5. 常见报错排查:401、Auth conflict、reading choices 怎么解
配置过程中最容易撞上的几类错误,这里按真实报错对照给解法。
401 Unauthorized / Invalid API key
这个最直接,Key 不对或没生效。检查三处:settings.json 里的ANTHROPIC_API_KEY是不是完整复制了,有没有多余空格;TaoToken 控制台里这个 Key 是不是被禁用或删除了;环境变量里是不是还残留一个旧的ANTHROPIC_API_KEY覆盖了 settings.json。用Get-ChildItem Env: | Where-Object { $_.Name -like "ANTHROPIC*" }确认当前会话没有旧变量。
Auth conflict
这是 Windows 下最高频的错误,原因是同时存在ANTHROPIC_AUTH_TOKEN和ANTHROPIC_API_KEY。Claude Code 强制只允许一种。解法就是回到第 2 节的清理流程,把四个位置全部清空,然后只保留一种鉴权方式。如果你走的是 TaoToken 统一 Key,就只保留ANTHROPIC_API_KEY,不要claude login。如果你走 CLI 登录态,就只保留ANTHROPIC_AUTH_TOKEN,在claude login时看到Use API key?明确输入No。
local proxy failed / connection refused
这个通常不是鉴权问题,而是 Base URL 写错或网络不通。检查ANTHROPIC_BASE_URL是不是https://taotoken.net/api,有没有多写/v1或结尾斜杠。然后在 PowerShell 里跑curl https://taotoken.net/api看能不能通。如果 curl 都不通,说明本机网络到该地址有问题,换网络环境再试。
reading choices / 404 model not found
这个错误指向 Model ID 不对。Claude Code 请求的模型标识和你填的ANTHROPIC_MODEL不匹配,或者该模型在当前通道不可用。回到 TaoToken 控制台确认模型列表,把ANTHROPIC_MODEL改成列表里存在的标识。注意大小写和连字符,claude-sonnet-4-5和claude-sonnet-4.5是不同的。
OAuth 相关报错
如果你之前用过claude login,本地可能残留 OAuth token。即使清了环境变量,~/.claude里的凭证文件还在。解法是删掉%USERPROFILE%\.claude整个目录,然后重新用 settings.json 配置。删之前确认里面没有你要保留的其他配置。
改了配置但重启还是报错
这是认知点:重启只刷新当前会话、用户级、系统级三层环境变量,~/.claude里的本地缓存不会因为重启而清除。必须手动删目录。这也是为什么第 2 节的清理命令里包含了Remove-Item -Recurse -Force "$env:USERPROFILE\.claude"。
排查时建议按顺序来:先确认环境变量干净,再确认 settings.json 格式正确,再确认 Base URL 和 Model ID 无误,最后看网络连通性。大部分问题在前两步就能定位。
6. 把配置固化下来,下次换机器直接复用
跑通之后,最有价值的动作是把配置固化。Windows 下建议把%USERPROFILE%\.claude\settings.json纳入你的 dotfiles 管理,或者至少复制一份到云盘。换机器时,装完 Claude Code,把这个文件放回原位,新开终端就能用,不用重新走一遍清理和配置。
如果你同时用 Cline、Codex 等工具,TaoToken 的统一 Key 可以复用同一套 Base URL 和 Key,只是各工具的配置文件路径和字段名不同。Codex 用auth.json,Cline 在 MCP 配置里填 Base URL 和 Key,Claude Code 用settings.json。三件套不变:Base URL 写https://taotoken.net/api,Key 用同一个,Model ID 按各工具支持的填。
最后留一个实用习惯:每次改完配置,先跑claude --version确认 CLI 能启动,再跑一次纯对话指令确认鉴权通过,最后才进项目目录干活。这个顺序能帮你把配置问题和代码问题分开,省掉大量“到底是哪错了”的排查时间。