1. Ubuntu 22 上装 Claude Code,为什么总卡在官方引导
Claude Code 是 Anthropic 推出的命令行编程助手,能在终端里直接读写项目文件、跑命令、改代码,适合习惯在 Linux 下干活的开发者。它的安装本身不复杂,一条 npm 命令就能搞定,但真正让人头疼的是首次启动:它会弹出一段交互式引导,要求你登录 Anthropic 账号、走 OAuth 授权、确认一堆条款。在 Ubuntu 22 这种纯终端环境里,尤其是服务器或 WSL 里,这个引导经常卡住——要么浏览器打不开,要么回调地址连不上,要么干脆一直转圈。
我试过在一台干净的 Ubuntu 22.04 云主机上装,npm 装完执行claude,屏幕就停在 "Welcome to Claude Code" 那一步,按回车没反应,Ctrl+C 退出后重进还是老样子。后来才搞明白,这个引导流程依赖一个叫hasCompletedOnboarding的状态标记,只要提前把这个标记写进配置文件,启动时就会直接跳过引导,进入正常对话界面。
这篇就按「装好 → 跳过引导 → 配好通道 → 验证连通」的顺序走一遍,重点给出可复制的settings.json骨架,以及用 TaoToken 统一 Key 接入的方式。目标是一次性把环境跑通,不用反复折腾登录。
2. 前置准备:Node 环境与 TaoToken 通道
Claude Code 是 Node 写的 CLI,所以第一步是把 Node.js 装到位。Ubuntu 22 自带的 Node 版本偏旧,建议用 NodeSource 源装 22.x。同时把 Git 装上,Claude Code 在项目里操作文件时会用到。
sudo apt update && sudo apt upgrade -y curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt-get install -y nodejs git node -v # 应输出 v22.x npm -vNode 就绪后,全局安装 Claude Code:
npm install -g @anthropic-ai/claude-code claude --version能打印出版本号就说明 CLI 装好了。接下来是通道问题。Claude Code 默认走 Anthropic 官方接口,但国内直连经常超时,而且官方引导又强制你登录。这里用 TaoToken 做统一入口:它提供一个兼容 Anthropic 协议的 API 地址和一把 Key,你只要把ANTHROPIC_BASE_URL指向它、ANTHROPIC_AUTH_TOKEN填上 Key,Claude Code 就会把请求发到 TaoToken,由它转发到模型。
先去 TaoToken 控制台拿 Key:打开 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ,登录后创建一个 API Key,复制出来备用。这个 Key 就是后面配置里的ANTHROPIC_AUTH_TOKEN。如果你还没注册,从官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 进去即可。
注意:Key 只显示一次,复制后先存到安全的地方,别直接提交到 Git 仓库。
3. 可复制配置:settings.json 骨架与跳过引导
Claude Code 的配置分两层:一层是跳过引导的状态文件,一层是模型通道的settings.json。很多人只改了其中一个,结果要么引导还在,要么引导跳过了但请求发不出去。
先处理跳过引导。Claude Code 会在用户目录下读~/.claude.json里的hasCompletedOnboarding字段。直接写进去:
echo '{"hasCompletedOnboarding": true}' > ~/.claude.json如果你之前已经跑过claude生成了配置目录,也可以写到~/.claude/config.json:
mkdir -p ~/.claude echo '{"hasCompletedOnboarding": true}' > ~/.claude/config.json两个位置写一个就行,~/.claude.json优先级更高。写完可以用cat确认一下内容是不是合法 JSON,少个引号都会导致解析失败、引导照旧弹出。
然后是通道配置。Claude Code 支持通过settings.json声明环境变量,文件放在~/.claude/settings.json。下面这份骨架可以直接复制,把sk-开头那串换成你自己的 TaoToken Key:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514", "ANTHROPIC_SMALL_FAST_MODEL": "claude-3-5-haiku-20241022" }, "hasCompletedOnboarding": true }几个字段说明一下。ANTHROPIC_BASE_URL固定填https://taotoken.net/api,注意这里不带任何查询参数,就是纯 API 根地址。ANTHROPIC_AUTH_TOKEN填你在控制台拿到的 Key。ANTHROPIC_MODEL是主模型,ANTHROPIC_SMALL_FAST_MODEL是处理轻量任务(比如生成标题、补全)时用的快模型,两个都配上能省不少额度。
| 配置项 | 作用 | 建议值 |
|---|---|---|
| ANTHROPIC_BASE_URL | API 入口地址 | https://taotoken.net/api |
| ANTHROPIC_AUTH_TOKEN | 鉴权 Key | 控制台创建的 sk- 开头 Key |
| ANTHROPIC_MODEL | 主对话模型 | claude-sonnet-4-20250514 |
| ANTHROPIC_SMALL_FAST_MODEL | 轻量任务模型 | claude-3-5-haiku-20241022 |
| hasCompletedOnboarding | 跳过引导标记 | true |
写完后确认文件权限,避免被其他用户读到 Key:
chmod 600 ~/.claude/settings.json如果你不想写文件,也可以直接用环境变量,效果一样,但每次开新终端都要重新 export,不如写进settings.json省事。环境变量方式如下,仅作对照:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="sk-你的TaoToken密钥"4. 启动与连通性验证
配置写好后,直接在项目目录里执行claude。正常情况下不会再出现欢迎引导,而是直接进入交互界面,底部显示当前模型和 token 用量。如果它还是弹引导,先别急,往下看排错部分。
进入界面后,先做一次最小验证:输入一句你好,请回复 ok,看是否有正常响应。有响应说明通道通了。如果想在命令行里做非交互式验证,可以用管道喂一条 prompt:
echo "回复 ok" | claude -p-p是 print 模式,执行完直接输出结果并退出,适合脚本里做连通性检查。实测下来,第一次请求会稍微慢一点,因为要建立连接,后面就快了。
再验证一下模型是否真的走的是你配的通道。可以在对话里问它当前使用的模型名,或者直接看返回内容是否符合预期。如果返回报错401或invalid api key,说明 Key 填错了或者没生效;如果报connection timeout,多半是ANTHROPIC_BASE_URL写错了,检查是不是多写了斜杠或路径。
对于长期在终端里写代码、跑 Agent 任务的场景,如果调用量比较大,可以了解一下 TaoToken 的 Coding Plan,它按编码场景做了额度优化,比单次调用更划算:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。日常零散用的话,直接用 API Key 按量走就行。
5. 本篇常见错排查
引导还是弹出来。最常见的原因是~/.claude.json和~/.claude/settings.json里的hasCompletedOnboarding没同时生效,或者 JSON 格式有误。用python3 -m json.tool ~/.claude.json校验一下,能正常输出就说明格式没问题。另外确认一下当前用户是不是你写配置的那个用户,sudo跑claude会读 root 的配置目录,自然找不到你写的标记。
报Unable to connect to Anthropic services。这个错误说明请求根本没发出去。先确认ANTHROPIC_BASE_URL是不是https://taotoken.net/api,别写成带/v1的路径。然后用curl直接测一下通道:
curl -s -o /dev/null -w "%{http_code}" https://taotoken.net/api返回 200 或 401 都说明网络能到,401 只是没带 Key。如果 curl 都超时,那就是本机网络到 TaoToken 的问题,检查 DNS 和出网策略。
Key 明明填了却报鉴权失败。检查ANTHROPIC_AUTH_TOKEN的值有没有多余空格或换行,settings.json里字符串不能断行。另外确认 Key 没有过期或被禁用,去控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 看一眼状态。
权限报错。如果提示无法写入~/.claude目录,执行:
sudo chown $USER:$USER ~/.claude* -R把配置目录的属主改回当前用户即可。这个在从 root 切换回普通用户后经常遇到。
模型名报错。如果提示模型不存在,说明ANTHROPIC_MODEL填的模型名 TaoToken 不支持。去接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 查一下当前可用的模型列表,换成文档里列出的名字。
6. 装完之后怎么用起来
环境跑通只是第一步。Claude Code 真正的价值在于它能直接操作你的项目:让它读某个文件、改某个函数、跑测试、解释报错,都比在网页里复制粘贴高效。建议在项目根目录建一个CLAUDE.md,把项目结构、技术栈、常用命令写进去,Claude Code 启动时会自动读这个文件,回答会更贴合你的项目。
如果你主要用 Claude Code 做日常编码和 Agent 任务,走 Coding Plan 更合适;如果只是想先试试模型对话效果,可以打开模型对话页面直接体验:https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 。接入过程中遇到鉴权或配置问题,优先看接入文档,里面把 Base URL、Key 位置、常见返回码都列清楚了。
最后提醒一句:settings.json里存的是明文 Key,别把这个文件传到公开仓库。团队协作时用环境变量注入,或者把 Key 放在 CI 的 secret 里,比写死在文件里安全。