AI 工具 · 教程
Claude Code、Codex CLI、Gemini CLI 代理设置教程:终端怎么走代理
Claude Code、Codex CLI、Gemini CLI 都运行在终端里。终端不会自动使用浏览器的代理,这是「网页能用、命令行连不上」最常见的原因。
为什么终端不走代理
代理客户端开启「系统代理」后,修改的是操作系统的代理设置,浏览器会读取它,但大多数命令行程序不会。所以要让终端里的 AI 工具走代理,只有两种办法:
| 方法 | 原理 | 适合 |
|---|---|---|
| TUN 模式 | 客户端创建虚拟网卡,接管整台电脑的流量 | 新手、想一次搞定所有程序 |
| 环境变量 | 告诉当前终端把请求发给本地代理端口 | 只想让终端走代理、不方便装虚拟网卡 |
方法一:开启 TUN 模式(推荐新手)
以 Clash Verge Rev 为例:
- 打开「设置」,找到 TUN 模式(也叫虚拟网卡模式)。
- 首次开启需要安装服务模式,按提示授权。
- 打开开关,保持「规则」模式即可,AI 相关域名会自动走代理。
开启后不需要再设置任何环境变量,Claude Code、Codex CLI、Gemini CLI、npm、git 都会走代理。其他客户端的开启方法见 客户端教程。
方法二:设置 HTTPS_PROXY 环境变量
先在代理客户端里找到本地端口(Clash Verge Rev 默认 7897),下面的示例都以 7897 为准,请换成你自己的端口。
macOS / Linux(bash、zsh)
export HTTPS_PROXY=http://127.0.0.1:7897
export HTTP_PROXY=http://127.0.0.1:7897
export NO_PROXY=localhost,127.0.0.1
要长期生效,把这三行追加到 ~/.zshrc(macOS 默认)或 ~/.bashrc,然后重开终端。
Windows PowerShell
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
$env:HTTP_PROXY = "http://127.0.0.1:7897"
$env:NO_PROXY = "localhost,127.0.0.1"
要长期生效,运行 notepad $PROFILE,把这三行粘进去保存;如果提示文件不存在,先运行 New-Item -Type File -Force $PROFILE。
Windows CMD
set HTTPS_PROXY=http://127.0.0.1:7897
set HTTP_PROXY=http://127.0.0.1:7897
WSL
WSL 里的 127.0.0.1 默认指向 WSL 自己,不是 Windows。两种处理方法:
- 在 Windows 的
.wslconfig中开启镜像网络(networkingMode=mirrored),之后 WSL 可以直接用127.0.0.1:7897; - 或者在代理客户端里打开「允许局域网连接」,WSL 中把地址换成 Windows 主机的 IP。
安装阶段也要走代理
很多人卡在安装这一步,而不是使用阶段:
- 官方安装脚本(
curl ... | bash、irm ... | iex):需要能访问 claude.ai、chatgpt.com,先开 TUN 或设好环境变量再运行。 - npm 安装(
npm install -g @openai/codex、npm install -g @google/gemini-cli):npm 有自己的代理配置,环境变量不生效时可以单独设置:
npm config set proxy http://127.0.0.1:7897
npm config set https-proxy http://127.0.0.1:7897
各工具的官方安装命令见 Claude 下载与安装、Codex 下载与安装、Gemini 下载与安装。
怎么确认终端已经走代理
在同一个终端窗口里运行:
curl https://claude.ai/cdn-cgi/trace
返回结果中的 loc= 是你当前出口的国家代码。loc=US、loc=JP 说明已经走代理并且地区正确;loc=CN 说明没走代理;loc=HK 说明走了代理但节点在不支持的地区。把域名换成 chatgpt.com 可以检查 ChatGPT / Codex 的出口。
Windows PowerShell 里的
curl是别名,请输入curl.exe。
常见报错
| 现象 | 原因 | 解决 |
|---|---|---|
一直转圈后 ETIMEDOUT / 连接超时 |
终端没走代理 | 开 TUN,或检查环境变量是否在当前窗口生效 |
ECONNREFUSED 127.0.0.1 |
端口填错或客户端没开 | 对照客户端设置页的端口 |
地区不可用 / unsupported_country_region_territory |
出口在香港或中国大陆 | 换美国、日本节点,见 地区不可用怎么办 |
| 浏览器登录成功,终端里仍要求重新验证 | 浏览器和终端走了不同地区的节点 | 让两者使用同一个策略组和节点 |
| 回答输出到一半中断 | 线路丢包或节点不稳定 | 换延迟更低、更稳定的节点或专线机场 |
适合 AI 命令行的机场
命令行工具会长时间保持连接,对线路稳定性的要求比网页更高。建议选择官方说明支持 AI 平台、并且是专线的机场,固定一个美国或日本节点使用。完整对比见 ChatGPT 机场推荐 和 AI 可用机场推荐。
本文推荐的机场
常见问题
浏览器能打开 claude.ai,为什么 Claude Code 还是连不上?
浏览器会读取系统代理,终端程序默认不会。开启代理客户端的 TUN 模式,或在终端设置 HTTPS_PROXY 环境变量,命令行工具才会走代理。
TUN 模式和环境变量选哪个?
新手优先 TUN 模式,一次开启所有程序都走代理;不想接管全部流量、或公司电脑不方便装虚拟网卡时,用环境变量只让当前终端走代理。
HTTPS_PROXY 的端口填多少?
填代理客户端里显示的本地 HTTP 或混合端口。Clash Verge Rev 默认是 7897,其他客户端以设置页显示为准,填错端口会直接连接失败。
设置了环境变量,关掉终端就失效了?
直接在终端里设置只对当前窗口有效。要长期生效,写进 ~/.zshrc、~/.bashrc 或 PowerShell 的 $PROFILE 文件。