1. Ubuntu 上装 Claude Code 到底卡在哪
如果你在 Ubuntu 上搜「Claude Code 安装」,大概率会看到两种结果:一种是官方文档里几行 npm 命令,另一种是各种「一键脚本」但跑完不知道发生了什么。真正动手时,问题往往不在安装本身,而在装完之后——Claude Code 默认要连 Anthropic 的服务,而你想让它调用智谱 GLM-4.7,就得改settings.json里的ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN。这两个值填错一个,终端就会一直转圈或者直接报鉴权失败。
更麻烦的是多模型场景。你可能同时想用 GLM-4.7 做代码生成、用别的模型做长文本总结,每个模型一套 Key、一套 Base URL,散落在不同的配置文件里,改一次要翻三个地方。这篇就聚焦 Ubuntu 环境,把 Claude Code 装好,再用 TaoToken 的统一 Key 把 GLM-4.7 接进来,最后给你一份可以直接复制的settings.json骨架和终端验证命令。适合已经在用 Ubuntu 做开发、想低成本试 Claude Code + 国产模型组合的人。
2. 前置准备:Node.js、npm 权限与 TaoToken Key
Claude Code 是 npm 包,所以第一步是确认 Node.js 版本。Ubuntu 自带的 Node 往往偏旧,建议 18 或更高。
node --version npm --version如果版本低于 18,用 NodeSource 的脚本装 LTS:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs装完再node --version确认一次。这一步网络耗时较长,属于正常现象。
接下来是 npm 全局权限。直接npm install -g在 Ubuntu 上大概率遇到EACCES: permission denied,因为全局包默认往/usr/lib/node_modules/写,需要 root。不要用sudo npm install -g,那样后续 Claude Code 读写配置会带 root 属主,反而添乱。正确做法是把 npm 全局目录指到用户目录:
mkdir -p ~/.npm-global npm config set prefix '~/.npm-global' echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc然后去 TaoToken 拿统一 Key。访问官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册后在控制台创建 API Key。这个 Key 的好处是:你不需要为 GLM-4.7 单独去智谱开一个 Key,TaoToken 把多家模型的鉴权统一到一把 Key 上,Claude Code 里只填一个ANTHROPIC_AUTH_TOKEN就行。创建入口在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。Key 只显示一次,复制后先存到密码管理器。
3. 安装 Claude Code 并写入 settings.json 骨架
安装命令就一行:
npm install -g @anthropic-ai/claude-code装完验证:
claude --version看到类似2.x.x (Claude Code)就说明二进制已经进 PATH 了。如果提示command not found,回头检查~/.npm-global/bin是否在echo $PATH里。
接下来是核心:配置文件。Claude Code 读两个位置,~/.claude/settings.json管环境变量,~/.claude.json管 onboarding 状态。先建目录:
mkdir -p ~/.claude然后写settings.json。下面这份骨架可以直接复制,只需要把sk-你的TaoTokenKey换成真实 Key:
{ "env": { "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoTokenKey", "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "API_TIMEOUT_MS": "3000000", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1 }, "model": "glm-4.7" }几个字段解释一下。ANTHROPIC_BASE_URL指向 TaoToken 的 API 入口,这样 Claude Code 发出的请求会走统一网关,再由网关路由到 GLM-4.7。API_TIMEOUT_MS设成 3000000 毫秒(50 分钟),是因为代码生成类请求偶尔会跑很久,默认超时太短会中途断掉。CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC设为 1,关掉非必要的遥测请求,减少干扰。model字段显式指定glm-4.7,避免它默认去调别的模型。
再写~/.claude.json,跳过首次启动的引导问答:
{ "hasCompletedOnboarding": true }保存退出。如果你用 nano,Ctrl+O回车保存,Ctrl+X退出。
4. 终端验证:确认 Claude Code 真的在调 GLM-4.7
配置写完别急着信,先cat一遍确认没有拼写错误:
cat ~/.claude/settings.json重点看ANTHROPIC_BASE_URL是不是https://taotoken.net/api,Key 有没有多余空格。
然后进一个测试目录启动:
mkdir -p ~/cc-test && cd ~/cc-test claude首次启动会问是否信任当前文件夹,选信任。进去之后先跑/status,看它显示的模型和接入点。如果显示的是glm-4.7且 base URL 指向 TaoToken,说明配置生效。
接着做一次真实对话测试,直接输入:
你好,请用一句话说明你当前使用的模型名称如果返回内容里提到 GLM 或 glm-4.7,链路就通了。再测一个代码生成:
帮我写一个 Python 函数,输入列表返回去重后的列表,保持原顺序正常会返回带dict.fromkeys或set方案的代码块。这一步能过,说明从 Ubuntu 终端 → Claude Code → TaoToken 网关 → GLM-4.7 的整条链路没有问题。
如果你更想先在网页端确认模型可用性,可以打开模型对话页 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 发一条同样的测试消息,对比终端返回是否一致。
5. 本篇常见报错排查
报错一:EACCES: permission denied出现在 npm install 阶段。说明你还在往系统目录写。回到第 2 节,确认npm config get prefix输出的是/home/你的用户名/.npm-global,而不是/usr。改完 prefix 后重新source ~/.bashrc,再装一次。
报错二:启动后提示Invalid API key或401。先cat ~/.claude/settings.json看 Key 有没有被截断。TaoToken 的 Key 通常以sk-开头,复制时容易漏掉尾部字符。另外确认ANTHROPIC_BASE_URL没有多写斜杠,正确值是https://taotoken.net/api,末尾不要加/v1之类。
报错三:改了 settings.json 但行为没变。Claude Code 在启动时读配置,运行中改文件不生效。完全退出(/exit或Ctrl+C),关掉当前终端窗口,重新开一个再claude。如果还不行,检查是不是同时存在~/.claude/settings.json和项目目录下的.claude/settings.json,后者会覆盖前者。
报错四:请求一直转圈最后超时。先确认网络能通到taotoken.net,用curl -I https://taotoken.net/api看返回码。如果网络没问题,把API_TIMEOUT_MS再调大,或者换一个更短的 prompt 测试,排除是单次请求内容过长导致。
报错五:claude: command not found但 npm 显示装好了。这是 PATH 没生效。执行echo $PATH | grep npm-global,如果没有输出,说明.bashrc那行没写进去或者没 source。手动补:
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc6. 长期编码场景下的 Key 管理与接入文档
如果你只是偶尔用 Claude Code 跑几个 prompt,上面这套配置就够了。但如果你打算把它当成日常编码助手,甚至接进 Agent 工作流,那 Key 的轮换和模型切换会变成高频操作。TaoToken 的统一 Key 在这里的价值就体现出来了:换模型时不用改ANTHROPIC_AUTH_TOKEN,只需要在网关侧调整路由,或者改settings.json里的model字段。
长期编码场景建议看一下 Coding Plan 的说明 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,里面讲了怎么把 Claude Code 这类终端工具和统一 Key 配合使用。接入细节和字段含义在文档里 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,遇到settings.json字段不确定时优先查文档而不是猜。
最后留一个我自己的习惯:把~/.claude/settings.json里的 Key 用环境变量引用,而不是明文写死。Claude Code 支持读环境变量,你可以在~/.bashrc里export TAOTOKEN_KEY=sk-xxx,然后 settings.json 里写"ANTHROPIC_AUTH_TOKEN": "${TAOTOKEN_KEY}"。这样配置文件可以安全地同步到别的机器,Key 本身不进版本库。改完记得重新 source 并重启 Claude Code,验证方式还是老一套:/status看模型,发一句话看返回。