1. Windows 上 Claude Code 启动失败的真实场景
如果你在 Windows 上敲下claude之后,终端直接甩出一句Claude Code on Windows requires git-bash,或者跑到一半突然冒出API Error: Claude's response exceeded the 32000 output token maximum,那你不是一个人。这两个报错几乎覆盖了 Windows 用户 80% 的「跑不起来」体验,而且它们分属两个完全不同的层面:一个是启动链路问题,一个是输出上限问题。
先说清楚 Claude Code 是什么。它是 Anthropic 推出的命令行编程助手,能在终端里读你的项目、改代码、跑命令,适合习惯 CLI 工作流的开发者。它本身是 Node 程序,但在 Windows 上执行 shell 命令时依赖 Git Bash 提供的bash.exe,所以一旦找不到 bash,进程连初始化都过不去。而输出截断则是另一回事:模型单次回复有 token 上限,长文件重构、大段代码生成时很容易撞墙。
我试过在一台全新 Windows 机器上从零装 Claude Code,踩的坑基本就是这两类。下面按「先定位、再配置、后验证」的顺序拆开讲,每一步都给可复制的命令和配置片段。你不需要懂 Node 内部机制,照着做就能判断自己到底是路径缺失,还是 token 上限卡住了。
核心检索词先摆出来:Claude Code Windows 启动报错和CLAUDE_CODE_MAX_OUTPUT_TOKENS 输出截断,这两个是本文要解决的主线。适合人群是刚在 Windows 上接触 Claude Code、被环境变量绕晕的开发者,以及想把统一 Key 接进 CLI 工具的人。
2. 前置准备:git-bash 路径与 TaoToken 统一 Key
在动手改环境变量之前,先把两样东西备齐:一个可用的 Git Bash,一个能用的 API Key。很多人卡在第一步是因为 Git 装了但没进 PATH,第二步则是因为 Key 分散在多个工具里,改起来乱。
2.1 确认 git-bash 到底装在哪
Git for Windows 安装时默认会把bash.exe放在C:\Program Files\Git\bin\bash.exe,但如果你装到了 D 盘,或者用了便携版,路径就不一样。别猜,直接用命令查:
Get-Command bash.exe # 或者 where.exe bash如果两条命令都没输出,说明 Git Bash 根本没装,或者没进 PATH。这时候去 Git 官网下载 Windows 版装上,安装时保持默认选项即可,默认会把 Git 加进 PATH。装完重开终端再查一次。
如果where.exe bash有输出,但 Claude Code 还是报找不到,那就是 Claude Code 没读系统 PATH,需要你显式告诉它 bash 在哪,这就引出CLAUDE_CODE_GIT_BASH_PATH。
2.2 用 TaoToken 统一 Key,避免多工具各配一份
Claude Code、Cline、Codex 这些工具如果各自配一份 Key,改起来很痛苦。TaoToken 提供统一入口,一个 Key 走多个客户端。它的 API 地址是https://taotoken.net/api,官网在https://taotoken.net/?utm_source=taotoken_aicg_blog_end。
你需要准备三件套,后面配置里会反复用到:
| 配置项 | 值 | 说明 |
|---|---|---|
| Base URL | https://taotoken.net/api | 所有请求走这个入口 |
| API Key | 在控制台生成 | 形如sk-... |
| Model ID | 如claude-sonnet-4-5 | 按你订阅的模型填 |
Key 的生成入口在控制台的 API Keys 页面,模型对话可以在网页端先试跑,确认 Key 有效再往 CLI 里塞。这一步别省,很多人配置失败其实是 Key 本身没生效。
3. 可复制配置:settings.json 与 config.toml 骨架
这一节是全文最核心的部分,直接给能粘贴的配置。Claude Code 在 Windows 上读环境变量的方式有好几种,我按「临时验证 → 永久生效 → 工具内配置」三层来写,你按需选。
3.1 临时生效:先验证路径对不对
在 PowerShell 里临时设一个变量,只对当前窗口有效,用来快速验证 bash 路径是否正确:
$env:CLAUDE_CODE_GIT_BASH_PATH = "C:\Program Files\Git\bin\bash.exe" $env:CLAUDE_CODE_MAX_OUTPUT_TOKENS = "128000" claudeCMD 里写法不同:
set CLAUDE_CODE_GIT_BASH_PATH=C:\Program Files\Git\bin\bash.exe set CLAUDE_CODE_MAX_OUTPUT_TOKENS=128000 claude如果这样能起来,说明路径和 token 值都没问题,接下来做永久化。如果还报错,把路径换成你where.exe bash查到的真实路径。
3.2 永久生效:写进系统环境变量
按Win + S搜「环境变量」,点「编辑系统环境变量」→「环境变量」,在用户变量里新建两条:
CLAUDE_CODE_GIT_BASH_PATH = C:\Program Files\Git\bin\bash.exe CLAUDE_CODE_MAX_OUTPUT_TOKENS = 128000保存后必须关掉所有终端和 VS Code 再重开,否则旧进程读的还是老环境。这一步是高频翻车点,很多人改完没重启就测,以为没生效。
3.3 Claude Code 的 settings.json 骨架
Claude Code 支持在用户目录下放settings.json,路径通常是C:\Users\你的用户名\.claude\settings.json。如果目录不存在就手动建。骨架如下:
{ "env": { "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe", "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "128000", "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" } }注意 JSON 里反斜杠要转义成\\,这是 Windows 路径写 JSON 最容易错的地方。Base URL 和 Key 走 TaoToken,这样 Claude Code 的请求统一从https://taotoken.net/api出去。
3.4 VS Code 扩展里的 environmentVariables 写法
如果你用的是 VS Code 里的 Claude Code 扩展,配置项在claudeCode.environmentVariables数组里,格式和纯 JSON 不同:
"claudeCode.environmentVariables": [ { "name": "CLAUDE_CODE_GIT_BASH_PATH", "value": "C:\\Program Files\\Git\\bin\\bash.exe" }, { "name": "CLAUDE_CODE_MAX_OUTPUT_TOKENS", "value": "128000" }, { "name": "ANTHROPIC_BASE_URL", "value": "https://taotoken.net/api" }, { "name": "ANTHROPIC_API_KEY", "value": "sk-你的Key" } ]这段直接贴进 VS Code 的settings.json。改完重启 VS Code 窗口,扩展才会重新读配置。
3.5 config.toml 骨架(适用于支持 TOML 的客户端)
有些客户端用 TOML 配置,比如 Codex 系的config.toml,路径一般在C:\Users\你的用户名\.codex\config.toml:
model = "claude-sonnet-4-5" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "ANTHROPIC_API_KEY"对应的 Key 放在auth.json或环境变量里。三件套(Base URL + Key + Model ID)缺一不可,少任何一个都会在请求阶段报错。
4. 验证请求:逐步确认成功结果
配置写完不代表生效,得一步步验证。我按「先验 bash、再验 Key、最后验输出上限」的顺序给命令,每步都有预期结果。
4.1 验证 bash 路径能被读到
新开一个 PowerShell,直接 echo 变量:
echo $env:CLAUDE_CODE_GIT_BASH_PATH预期输出就是你设的路径。如果为空,说明环境变量没生效,回去检查是否重启了终端。再确认这个路径下文件真实存在:
Test-Path "C:\Program Files\Git\bin\bash.exe"返回True才算过。
4.2 验证 Key 与 Base URL 连通
用 curl 直接打一次接口,确认 Key 和地址都对:
curl https://taotoken.net/api/v1/messages \ -H "x-api-key: sk-你的Key" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model":"claude-sonnet-4-5","max_tokens":64,"messages":[{"role":"user","content":"ping"}]}'返回里带content字段就说明链路通了。如果返回 401,是 Key 问题;返回连接错误,是 Base URL 或网络问题。这一步能把「Key 无效」和「路径无效」彻底分开。
4.3 验证输出上限是否生效
启动 Claude Code 后,让它生成一段长内容,比如「把当前目录所有文件名列出来并逐个解释用途」。如果之前会截断,现在能完整输出,说明CLAUDE_CODE_MAX_OUTPUT_TOKENS生效了。你也可以在会话里直接问它当前配置,观察是否还报 32000 上限。
4.4 成功结果长什么样
一切正常时,claude启动后不会再有 git-bash 报错,长回复也不会中途断掉。终端里能看到它正常读文件、执行命令、返回结果。到这一步,两个高频问题就都解决了。
5. 本篇常见错排查:401、local proxy failed、reading choices
配置过程中最容易撞的几个报错,我按真实错误信息对照给排查方向。
401 Unauthorized:Key 无效或没带上。检查ANTHROPIC_API_KEY是否写对,有没有多余空格,Base URL 是否是https://taotoken.net/api。如果 Key 是在控制台刚生成的,确认复制完整。
local proxy failed / connection refused:通常是 Base URL 写错,或者本地网络到taotoken.net不通。先用 4.2 的 curl 单独测,curl 通而 Claude Code 不通,就是客户端配置没读到,检查 settings.json 路径和 JSON 转义。
Error reading choices / 返回结构解析失败:多半是 Model ID 填错,或者客户端把非 OpenAI 格式的响应按 OpenAI 格式解析。确认 Model ID 和你订阅的一致,Base URL 不要多加/v1后缀(除非文档明确要求)。
仍然报 git-bash 找不到:说明CLAUDE_CODE_GIT_BASH_PATH没被读到。检查是不是写在了系统变量但用的是另一个用户账户,或者 VS Code 扩展没重启。用 4.1 的 echo 命令确认变量在当前进程可见。
输出还是被截断:CLAUDE_CODE_MAX_OUTPUT_TOKENS值设太小,或者客户端有自己独立的上限配置覆盖了环境变量。把它设成 128000 再测,同时确认没有别的地方写死了 32000。
排查的核心思路就一句:先分清是启动链路问题还是请求链路问题。git-bash 报错属于前者,401 和截断属于后者,分开测就不会乱。
6. 把统一 Key 接进你的编码工作流
两个环境变量解决的是「能不能跑」和「跑得完跑不完」,但真正提升效率的是把 Key 统一管理。TaoToken 的 Coding Plan 适合长期编码和 Agent 场景,一个 Key 覆盖 Claude Code、Cline、Codex 多个客户端,改配置时只改一处。
如果你还在逐个工具配 Key,建议先把 Claude Code 的settings.json按第 3 节改好,跑通一次完整会话,再去控制台把其他工具的 Base URL 也指向https://taotoken.net/api。模型对话页面可以先用来验证 Key 和模型是否匹配,确认没问题再往 CLI 里接。
接入文档里有各客户端的详细配置示例,遇到本文没覆盖的客户端,对照文档改 Base URL 和 Key 两项基本就能通。最后提醒一句:改完任何环境变量或配置文件,重启终端和编辑器是必须动作,跳过这步会浪费大量排查时间。