Claude Code、Codex、Gemini CLI 怎么走代理?终端代理设置完整教程
Claude Code、OpenAI Codex CLI、Gemini CLI 这类 AI 编程工具都跑在终端里。一个常见的困惑是:Clash 开着、浏览器能用,但终端里的工具就是连不上。
原因是 Clash 的「系统代理」只修改了操作系统的代理设置,而大多数命令行程序不会去读它。解决办法有两种。
方法一:设置代理环境变量(推荐)
绝大多数命令行工具会读取 HTTPS_PROXY、HTTP_PROXY 这两个环境变量。Claude Code 的官方文档明确支持这种方式。
第 1 步:查看 Clash 的端口
打开 Clash 客户端的「设置」,找到 混合端口(Mixed Port)。下面的例子用 7897,请换成你自己的。
Clash Verge Rev 托盘菜单里一般有「复制环境变量」之类的选项,可以一键复制下面的命令。
第 2 步:在终端设置
macOS / Linux(zsh、bash):
export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897
Windows PowerShell:
$env:HTTPS_PROXY="http://127.0.0.1:7897"; $env:HTTP_PROXY="http://127.0.0.1:7897"
Windows CMD:
set HTTPS_PROXY=http://127.0.0.1:7897
set HTTP_PROXY=http://127.0.0.1:7897
这样设置只对当前终端窗口有效,关闭后失效。
第 3 步:验证
curl -s https://ipinfo.io
返回结果里的 country 如果是 US、JP、SG 等,说明终端已经走代理,并且出口地区正确。如果是 HK,请在 Clash 里换节点——香港不在多数 AI 服务的支持地区内。
让设置永久生效
macOS / Linux:把下面几行加到 ~/.zshrc(或 ~/.bashrc)末尾,然后执行 source ~/.zshrc:
# Clash 代理开关
proxy_on() {
export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897
echo "代理已开启"
}
proxy_off() {
unset https_proxy http_proxy all_proxy
echo "代理已关闭"
}
以后在终端输入 proxy_on / proxy_off 即可切换。不建议直接写死 export,否则 Clash 没开时所有终端命令都会连不上网。
Windows:在「系统属性 → 环境变量」中添加 HTTPS_PROXY 和 HTTP_PROXY 用户变量,重新打开终端生效。
方法二:开启 Clash TUN 模式
TUN 模式会创建一块虚拟网卡,接管整台电脑的流量,不需要给每个程序单独设置。
- Clash Verge Rev:「设置 → 虚拟网卡模式」,Windows 首次使用需先安装服务模式;
- 开启 TUN 后,建议关闭方法一里的环境变量,避免绕两次。
TUN 适合同时有很多工具需要代理的情况,比如 Docker、IDE 插件、包管理器。原理见 Clash 代理模式与 TUN 模式详解。
三个工具的注意事项
Claude Code
- 支持
HTTPS_PROXY/HTTP_PROXY环境变量; - 需要出口在 Claude 支持的地区,香港不行;
- 一次任务可能持续很久,用固定节点,不要用自动测速组。节点选择见 Claude 用什么节点。
OpenAI Codex CLI
- 通常会读取同样的环境变量;如果设置后仍然连接失败,改用 TUN 模式;
- 出口地区需在 OpenAI 支持范围内。
Gemini CLI
- 设置环境变量后先用
curl验证出口地区; - 如果提示地区不可用,参考 Gemini 地区不可用怎么办。
常见报错对照
| 现象 | 可能原因 | 解决 |
|---|---|---|
连接超时 / ETIMEDOUT |
终端没走代理 | 设置环境变量或开 TUN |
ECONNREFUSED 127.0.0.1:7897 |
端口填错,或 Clash 没运行 | 核对混合端口,确认 Clash 已启动 |
地区不支持 / unsupported_country |
出口是香港等不支持地区 | 换美 / 日 / 新节点 |
| 任务执行到一半断开 | 节点被自动切换或丢包高 | 改用手动选择组,换低丢包的专线节点 |
| 证书错误 | 公司网络或安全软件拦截 HTTPS | 关闭 HTTPS 扫描,或联系网管 |
选什么机场
AI 编程工具对丢包很敏感:一次长任务中只要连接断一次,就可能前功尽弃。优先选专线、丢包低、对应 AI 平台有实测的机场,见下方对照表和 机场推荐。
本站收录机场的 AI 可用性
「实测」= 第三方在美 / 日 / 新节点完成注册、登录与长对话验证;「宣称」= 机场自述、未经实测;「—」= 暂无数据。数据截至 2026-09-21,来源见各机场评测页。
完整套餐和测速数据见 机场推荐。
常见问题
开了 Clash 系统代理,为什么 Claude Code 还是连不上?
系统代理主要对浏览器和遵守系统设置的软件生效,终端程序通常不读取它。需要在终端设置 HTTPS_PROXY 环境变量,或开启 Clash 的 TUN 模式。
环境变量和 TUN 模式选哪个?
只有几个命令行工具需要代理时,用环境变量更精确;如果还有 Docker、IDE 插件等多个程序需要代理,开 TUN 模式更省事。
端口是 7890 还是 7897?
不同客户端默认端口不同,以你自己客户端设置页里显示的「混合端口 / Mixed Port」为准。