☰
比 iTerm2 更适合 Claude Code/Codex 的终端,我把配置改到 TaoToken 了
2026/10/1 14:29:24 网站建设 项目流程

1. 从 iTerm2 迁到 Ghostty:Claude Code 与 Codex 的终端侧 API 端点改造

用 Claude Code 或 Codex CLI 跑久了,终端就不再只是敲命令的地方,而是一个小工作台:左边 Agent 在输出,右边跑测试、看日志、处理 Git。iTerm2 当然能扛,但想调到顺手,字体、主题、快捷键、分屏得花不少时间磨。Ghostty 的吸引力在于下载下来就基本能用,配置是纯文本 key = value,改起来心里有数。

不过终端换掉只是第一步。真正影响日常的是 Claude Code、Codex 这类 CLI 工具背后的 API 端点与鉴权配置。以前我在 iTerm2 里散着放环境变量,换 Ghostty 之后顺手把端点统一收拢到 TaoToken 通道,好处是:终端配置和模型接入配置分开管理,换机器、换 shell、换终端都不用重新翻一遍。这篇就按「Ghostty 配置迁移 + TaoToken 接入」两条线走,给出可直接复制的配置文件片段、环境变量写法和一次能复现的连通性验证命令。

适合谁看:已经在用 Claude Code 或 Codex CLI、想从 iTerm2 换到 Ghostty 的人;或者终端已经换好,但 API 端点还散落在.zshrc、settings.json、auth.json里,想统一到一处的人。核心检索词就三个:Ghostty 配置、Claude Code 接入、Codex 端点迁移。

先说清楚边界:Ghostty 是终端模拟器,它不内置 AI,也不管你的模型请求发到哪。它负责窗口、字体、主题、分屏、Shell Integration。Claude Code 和 Codex 是跑在终端里的 CLI,它们读的是环境变量和各自的配置文件。TaoToken 是这两者之间的统一 API 通道。三者职责分开,排障时才不会互相甩锅。

我实测下来,最容易出问题的不是 Ghostty 本身,而是环境变量加载顺序。Ghostty 启动 shell 时读的是登录 shell 的配置,如果你在.zshrc里写export,但 Ghostty 用的是非交互 shell,变量可能根本没进来。所以下面会把「Ghostty 侧」和「CLI 侧」分开写,避免混在一起查。

2. TaoToken 前置准备:Base URL、API Key 与模型 ID 三件套

在动 Ghostty 配置之前,先把 TaoToken 侧的三件套准备好,后面所有配置都围绕它们展开。这三件套是:Base URL、API Key、Model ID。任何 CLI 接入出问题,先回头核对这三样,八成能定位。

Base URL 用https://taotoken.net/api。注意这里不带任何查询参数,就是干净的 API 根路径。很多 CLI 工具会在后面自动拼/v1/messages或/v1/chat/completions,所以你不要自己手动加/v1,否则会变成/v1/v1/...,直接 404。

API Key 在控制台的 API Keys 页面创建。创建时给它起个能认出来的名字,比如ghostty-claude-code,方便以后按终端或按工具区分。Key 只在创建时完整显示一次,复制走之后页面就不再展示全量,丢了只能重建。建议创建后立刻写进环境变量文件,别贴在聊天窗口或临时笔记里。

Model ID 取决于你用哪个 CLI。Claude Code 走的是 Anthropic 风格接口,模型 ID 形如claude-sonnet-4-5这类;Codex 走 OpenAI 风格接口,模型 ID 形如gpt-5-codex这类。具体可用列表以控制台或接入文档为准,别凭记忆写,写错了报错信息往往很含糊。

三件套准备好之后,先做一次最小验证,确认 Key 本身是通的,再去改 Ghostty。验证用 curl 最直接:

curl -sS https://taotoken.net/api/v1/messages \ -H "x-api-key: $TAOTOKEN_API_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字段,说明 Key 和端点都通。如果返回 401,先别怀疑 Ghostty,是 Key 或请求头的问题。这一步单独跑通,后面 Ghostty 里出问题就能快速排除掉「Key 本身不对」这个变量。

注意:API Key 属于敏感凭据,写进 shell 配置文件时确认文件权限是600,别用777。共享机器上尤其要注意。

拿到三件套后,建议先在普通终端里把环境变量 export 出来跑一次上面的 curl,确认无误,再进入 Ghostty 配置环节。这样每一步都有可回退的基线。

3. 可复制配置:Ghostty config.ghostty 与 CLI 环境变量写法

这一节是全文的核心,给出可直接复制的配置片段。分两块:Ghostty 的config.ghostty,以及 Claude Code / Codex 读的环境变量与配置文件。

先建目录并写 Ghostty 配置:

mkdir -p ~/.config/ghostty nano ~/.config/ghostty/config.ghostty

一份兼顾 Claude Code 长输出和分屏的配置:

# 字体 font-family = "JetBrainsMono Nerd Font Mono" font-size = 14 font-thicken = true font-codepoint-map = U+2E80-U+9FFF,U+F900-U+FAFF,U+FF00-U+FFEF=PingFang SC # 主题 theme = Catppuccin Mocha # 窗口 window-padding-x = 12 window-padding-y = 10 window-save-state = always background-opacity = 0.95 # 光标与滚动 cursor-style = bar cursor-style-blink = true scrollback-limit = 10000000 scrollbar = never # Shell Integration shell-integration = detect shell-integration-features = cursor,sudo,title # 分屏 split-divider-color = #45475a unfocused-split-opacity = 0.92 # 剪贴板 copy-on-select = false clipboard-paste-protection = true

scrollback-limit单位是字节不是行数,10000000约 10 MB,每个分屏单独算。跑 Claude Code 时输出很长,这个值给大一点省得翻不回去。

接下来是 CLI 侧的环境变量。推荐单独建一个文件,别全塞进.zshrc:

nano ~/.config/taotoken.env

内容:

export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_API_KEY="sk-你的Key" export ANTHROPIC_BASE_URL="$TAOTOKEN_BASE_URL" export ANTHROPIC_API_KEY="$TAOTOKEN_API_KEY" export OPENAI_BASE_URL="$TAOTOKEN_BASE_URL/v1" export OPENAI_API_KEY="$TAOTOKEN_API_KEY"

然后在.zshrc末尾加载它:

[ -f ~/.config/taotoken.env ] && source ~/.config/taotoken.env

Claude Code 的settings.json里也可以显式写端点,路径通常是~/.claude/settings.json:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key", "ANTHROPIC_MODEL": "claude-sonnet-4-5" } }

Codex 的auth.json路径通常是~/.codex/auth.json,里面放 Key:

{ "OPENAI_API_KEY": "sk-你的Key" }

Codex 的config.toml路径通常是~/.codex/config.toml,指定端点和模型:

model = "gpt-5-codex" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api/v1" env_key = "OPENAI_API_KEY"

三件套在这里体现得很清楚:Base URL 是https://taotoken.net/api(Codex 的base_url因为走 OpenAI 风格,补了/v1),Key 走环境变量或auth.json,Model ID 在settings.json或config.toml里指定。三处对齐,CLI 才知道请求发去哪、用什么身份、调哪个模型。

注意:ANTHROPIC_BASE_URL和OPENAI_BASE_URL不要同时指向带/v1的路径又让 CLI 自己再拼一次,容易双写。Claude Code 用不带/v1的根路径,Codex 用带/v1的,按上面写就行。

改完 Ghostty 配置,macOS 按Cmd + Shift + ,重载;环境变量改动需要新开一个 Ghostty 窗口或source ~/.zshrc才生效。透明度这类窗口项不一定热更新,没变化就完整重启 Ghostty。

4. 验证请求:一次可复现的连通性检查与成功结果

配置写完必须验证,不然等到跑 Agent 时才发现端点不对,排查成本高得多。这一节给一套可复现的检查流程,从环境变量到实际请求逐层确认。

第一步,确认环境变量在当前 Ghostty 窗口里真的加载了:

echo $ANTHROPIC_BASE_URL echo $OPENAI_BASE_URL echo ${ANTHROPIC_API_KEY:0:8}

第一条应输出https://taotoken.net/api,第二条应输出https://taotoken.net/api/v1,第三条输出 Key 的前 8 位。如果为空,说明.zshrc没被加载,或者 Ghostty 启动的不是登录 shell。检查 Ghostty 配置里有没有覆盖command,或者手动source ~/.config/taotoken.env再试。

第二步,用 curl 打一次 Claude 风格请求:

curl -sS "$ANTHROPIC_BASE_URL/v1/messages" \ -H "x-api-key: $ANTHROPIC_API_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": "say ok"}] }' | head -c 400

成功时返回 JSON,里面有content数组,type是text,text字段是模型回复。看到这个就说明端点、Key、模型 ID 三者都对上了。

第三步,验证 Codex 侧:

curl -sS "$OPENAI_BASE_URL/chat/completions" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "content-type: application/json" \ -d '{ "model": "gpt-5-codex", "messages": [{"role": "user", "content": "say ok"}] }' | head -c 400

成功时返回choices数组,message.content是回复内容。如果这里报reading 'choices'之类的错,通常是返回体不是预期结构,多半是端点拼错或模型 ID 不存在。

第四步,直接在 Ghostty 里跑一次 Claude Code 的轻量命令,比如让它读一个文件或回答一个问题,观察是否有流式输出。这一步是端到端验证,前面 curl 通了这里一般也通。

实测下来,只要前三步都过,Claude Code 和 Codex 在 Ghostty 里的接入就稳了。分屏布局建议:Cmd + D左右分屏,光标放右侧再Cmd + Shift + D上下分屏。左侧跑 Claude Code,右上跑测试,右下看日志。输出太长按Cmd + Shift + Enter临时放大当前分屏。

5. 本篇常见错排查:401、local proxy failed 与 reading choices

接入过程里报错信息往往很含糊,这一节按真实遇到的错误逐条对照。先记住一个原则:报错先分层,是 Ghostty 的问题、shell 环境变量的问题,还是 CLI 请求的问题。

401 Unauthorized。最常见。原因通常是 Key 没加载、Key 写错、或者请求头字段不对。Claude 风格用x-api-key,OpenAI 风格用Authorization: Bearer。如果你把 Claude 的 Key 拿去打 OpenAI 端点,或者反过来,也会 401。排查:echo ${ANTHROPIC_API_KEY:0:8}确认变量非空,再确认请求头字段和端点风格匹配。

local proxy failed / connection refused。这个报错说明 CLI 尝试连的地址根本不通。常见原因是ANTHROPIC_BASE_URL或OPENAI_BASE_URL写成了http://localhost:xxxx之类的本地地址,或者环境变量里残留了旧的代理配置。检查env | grep -i proxy,如果有HTTP_PROXY、HTTPS_PROXY指向不可用地址,清掉再试。另外确认 Base URL 没有多余斜杠,https://taotoken.net/api/和https://taotoken.net/api在拼接时行为可能不同。

reading 'choices' / cannot read properties of undefined。这是 Codex 侧典型报错,意思是返回体里没有choices字段。原因通常是端点路径不对,比如base_url写成了https://taotoken.net/api但没补/v1,请求打到了错误路径,返回的是错误 JSON。对照第 3 节的config.toml,base_url应该是https://taotoken.net/api/v1。

OAuth 相关报错。Codex 某些版本会尝试走 OAuth 登录流程,如果你已经用 API Key 接入,需要在配置里明确用env_key指定 Key 来源,避免它去走 OAuth。config.toml里的env_key = "OPENAI_API_KEY"就是干这个的。如果仍然报 OAuth,检查auth.json里有没有残留的旧 token 字段,清掉只留OPENAI_API_KEY。

配置不生效。Ghostty 配置有两个可能路径:~/.config/ghostty/config.ghostty和 macOS 的~/Library/Application Support/com.mitchellh.ghostty/config.ghostty。两处都有时后者覆盖前者。跑ghostty +validate-config校验语法,注释必须是#,不能写=== 字体 ===这种分隔符。

字体变方块。ghostty +list-fonts | rg -i "JetBrains|Mono|Nerd"确认字体名命中。写了font-family = JetBrains Mono但本机没装,会 fallback 到中文字体,英文变丑。装brew install --cask font-jetbrains-mono-nerd-font,或者改成 Ghostty 实际识别到的 family 名。

Quick Terminal 快捷键没反应。查三件事:配置里有没有global:前缀,系统辅助功能权限是否给了 Ghostty,快捷键是否被其他软件占用。macOS 上改quick-terminal-position后需要完整重启。

排障时如果拿不准,回到第 2 节的 curl 最小验证,先确认 Key 和端点本身通不通,再往 CLI 配置里查。分层排查比一次性改一堆配置高效得多。

6. 把终端与模型接入分开管理:TaoToken 统一通道的日常用法

Ghostty 换掉 iTerm2 之后,我最大的感受不是界面好看,而是配置可读。config.ghostty就是一份 key = value 文本,出问题打开看一眼就知道哪行不对。同样的思路用在模型接入上:把 Base URL、Key、Model ID 三件套收拢到~/.config/taotoken.env和各自的 CLI 配置文件里,终端配置和接入配置各管各的,互不干扰。

日常用法上,Claude Code 适合长上下文的重构和代码理解,Codex 适合快速补全和单文件改动。两者共用同一个 TaoToken 通道,Key 只需要维护一份。换机器时,把taotoken.env、settings.json、auth.json、config.toml四个文件带过去,Ghostty 配置复制一份,十分钟就能恢复工作环境。

如果你还在犹豫要不要从 iTerm2 换,我的建议是先用 Ghostty 默认配置跑一天,别一上来抄几百行配置。默认的 JetBrains Mono 和内置主题已经够用,分屏快捷键Cmd + D、Cmd + Shift + D用顺了,再考虑 Quick Terminal 和自定义 keybind。终端配置越长,出问题越难查,Ghostty 值得用的一点就是可以少配。

接入侧同理,先把三件套跑通,再考虑多模型切换、按项目分 Key 这些进阶玩法。需要创建 Key 或查看可用模型,去控制台和接入文档对照;想先验证模型对话是否正常,用模型对话页面发一条消息最快;如果打算长期在终端里跑 Agent 和编码任务,Coding Plan 会更省心。把终端和接入这两层都理顺,Claude Code 和 Codex 在 Ghostty 里才算真正顺手。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询