1. 内网机器上跑 Claude Code,卡在哪一步
很多公司的开发机是隔离网络,能装 Node、能跑 npm,但访问不了外网 registry,也连不上模型服务。这时候你想用 Claude Code 做代码补全、重构、写测试,第一步就卡住了:npm install -g @anthropic-ai/claude-code直接超时,claude命令根本不存在。
我试过的思路是:把 Claude Code 拆成两件事看——程序本体怎么进内网,和程序进来后怎么连上模型。前者靠离线包搬运,后者靠一个统一的 API 通道把 Key 和地址配好。这两件事分开解决,整个流程就清晰了。
这篇聚焦的是第二件事,也就是离线安装完成之后,怎么用 TaoToken 的统一 Key 把模型调用跑通。适合已经在内网机器上放好了claude.exe、node也能用的同学。如果你连 exe 都还没搬进去,文里也会顺带把离线包的关键步骤串一遍,保证你能从零到一次跑通。
核心检索词先摆出来:Claude Code 离线安装、npm pack 打包、node 运行时、claude.exe 自包含、settings.json 配置、TaoToken 统一 Key、连通性验证命令。下面按“先解决程序、再解决通道、最后验证”的顺序走。
2. 离线安装的关键:claude.exe 是自包含的
2.1 为什么不用装主包
@anthropic-ai/claude-code主包在安装时会跑install.cjs,去 registry 拉平台包、写 npm shim、配缓存。内网环境下这些步骤全会失败。但平台包@anthropic-ai/claude-code-win32-x64里那个约 296 MB 的claude.exe是自包含原生可执行文件,不依赖 Node 运行时,也不需要 npm 的 shim。你只要把它放到 PATH 目录里,命令就能用。
这个认知很关键:离线安装的本质是搬一个 exe,不是装一个 npm 包。绕开 registry 和缓存,问题就简单了。
2.2 在外网机器上打包
先确认内网机器的架构。在内网电脑上跑:
node -e "console.log(process.arch)"输出x64就用 win32-x64 包,输出arm64就换成@anthropic-ai/claude-code-win32-arm64。然后在外网机器上执行:
cd C:\cc-packs npm pack @anthropic-ai/claude-code-win32-x64得到anthropic-ai-claude-code-win32-x64-2.1.228.tgz,约 296 MB。这个 tgz 里就是一个文件夹一个文件,正好方便你单独放。
2.3 搬进内网并配 PATH
把这一个 tgz 拷到内网机器,用 zip 解压工具解到C:\Users\{用户名}\.local\bin目录下,把claude.exe同层的所有文件都复制到 bin 目录。然后在环境变量 Path 里加上C:\Users\{用户名}\.local\bin,保存后开新 cmd:
claude --version能显示版本号,说明程序本体就位了。这一步过了,才轮到下面配 Key 和通道。
3. TaoToken 前置:统一 Key 与 API 通道
3.1 为什么需要一个统一通道
Claude Code 默认要连 Anthropic 的官方端点,内网出不去。你需要把请求指向一个可达的 API 通道,同时把鉴权信息填对。TaoToken 在这里扮演的就是这个通道角色:一个统一 Key,一个 API 地址,Claude Code 通过它完成模型调用。
先拿到两样东西:
- 统一 Key:在控制台的 API Keys 页面创建,形如
sk-... - API 地址:
https://taotoken.net/api
控制台入口:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite
API Keys 页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite
注意:Key 只创建一次就够,多个工具可以共用同一个统一 Key,不用每个工具单独申请。
3.2 环境变量与配置文件的分工
Claude Code 读取配置有两个层面:环境变量负责“连哪里、用什么 Key”,配置文件负责“模型行为、工具权限”。离线环境下建议两者都写死,避免每次开终端都要手动 export。
环境变量层面,核心是这几个:
| 变量名 | 作用 | 示例值 |
|---|---|---|
| ANTHROPIC_BASE_URL | API 通道地址 | https://taotoken.net/api |
| ANTHROPIC_API_KEY | 统一 Key | sk-你的Key |
| ANTHROPIC_MODEL | 默认模型 | 按需填写 |
配置文件层面,Windows 下 Claude Code 读settings.json,部分场景还会读config.toml。下面给骨架。
4. 可复制配置:settings.json 与 config.toml
4.1 settings.json 骨架
路径一般在C:\Users\{用户名}\.claude\settings.json。没有就新建:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的统一Key", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "permissions": { "allow": [], "deny": [] } }env块里的三个变量就是接入的核心。ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址,ANTHROPIC_API_KEY填统一 Key,ANTHROPIC_MODEL按你实际要用的模型填。permissions先留空,跑通后再按需收紧。
4.2 config.toml 骨架
如果你的版本读config.toml,路径通常在C:\Users\{用户名}\.claude\config.toml:
[api] base_url = "https://taotoken.net/api" api_key = "sk-你的统一Key" model = "claude-sonnet-4-20250514" [behavior] auto_approve = false两个文件不冲突,哪个生效取决于你的 Claude Code 版本。稳妥做法是两个都写,内容保持一致。
4.3 环境变量兜底
如果配置文件没被读到,用环境变量兜底。在 cmd 里临时设置:
set ANTHROPIC_BASE_URL=https://taotoken.net/api set ANTHROPIC_API_KEY=sk-你的统一Key要永久生效,就在“系统属性 → 环境变量”里加,或者用setx:
setx ANTHROPIC_BASE_URL "https://taotoken.net/api" setx ANTHROPIC_API_KEY "sk-你的统一Key"setx写的是用户级变量,新开的终端才生效。
5. 验证请求:一条命令跑通
5.1 连通性验证命令
配置写完后,开一个新的 cmd,先确认环境变量读到了:
echo %ANTHROPIC_BASE_URL% echo %ANTHROPIC_API_KEY%然后直接用 Claude Code 发一个最小请求:
claude -p "回复 ok 两个字"-p是 print 模式,发一次请求就退出,适合做连通性验证。如果返回ok,说明从 exe 到 API 通道整条链路通了。
5.2 成功结果长什么样
正常输出类似:
ok如果模型有额外说明,可能会多几行,但核心是你能看到模型返回的内容,而不是报错。这一步过了,就可以进交互模式:
claude进去后随便问一句,确认多轮对话也正常。
5.3 用模型对话页面交叉验证
如果命令行返回异常,想确认是不是 Key 或通道的问题,可以到模型对话页面直接发一条消息。同一个 Key、同一个通道,网页能通说明配置没问题,问题在本地环境;网页也不通,就回头检查 Key 和地址。
模型对话入口:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite
6. 本篇常见错排查
6.1 claude 不是内部或外部命令
说明 PATH 没配好,或者配了但没开新终端。检查C:\Users\{用户名}\.local\bin是否在 Path 里,claude.exe是否真的在这个目录下。改完环境变量必须重开 cmd。
6.2 请求超时或连接被拒
先确认ANTHROPIC_BASE_URL拼写正确,结尾不要多斜杠。再确认内网机器能访问taotoken.net。如果公司有出口白名单,把域名加进去。
6.3 401 或鉴权失败
多半是 Key 填错或带了多余空格。重新复制一次统一 Key,注意sk-前缀完整。如果 Key 被禁用或额度用尽,到 API Keys 页面确认状态。
6.4 模型名不识别
ANTHROPIC_MODEL填的模型名要和通道支持的列表一致。不确定就先不填这个变量,用默认模型跑通,再逐步指定。
6.5 配置文件不生效
Windows 下路径容易写错,注意.claude前面有个点。用dir C:\Users\{用户名}\.claude确认文件存在。JSON 格式错误也会导致整个文件被忽略,可以用在线 JSON 校验工具过一遍。
6.6 长期编码场景的配置建议
如果你不只是验证,而是要长期用 Claude Code 做项目开发、跑 Agent 任务,建议把配置固化下来,并关注 Coding Plan 的额度与模型选择。Coding Plan 入口:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
接入文档里有更细的参数说明,遇到拿不准的字段可以对照:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
7. 把配置固化,下次直接跑
离线环境最怕的是“这次跑通了,下次又不行”。我的做法是把settings.json和config.toml一起放进版本管理,环境变量用setx写死,换机器时只改 Key 和路径。这样每次新开终端,claude -p "回复 ok"能直接返回,不用再翻文档。
如果你还要在离线机器上跑 ClaudeCodeAnthropic 相关的自动化脚本,把ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY作为脚本的环境变量传入即可,不用改脚本逻辑。接入文档里对这块有示例,照着改就行。
最后留一个实用习惯:每次改完配置,先跑claude -p "回复 ok 两个字",再进交互模式。这一条命令能帮你省掉大量“以为配好了其实没生效”的排查时间。