先理解 Claude Code 为什么不会自动使用 Clash
在终端中运行 Claude Code,最容易遇到的误区是:只要 Clash Verge 已经启动,命令行程序就会自动走代理。实际上,Clash Verge 主要通过三种方式接管流量:修改系统代理、提供本地 HTTP/SOCKS 代理端口,以及通过 TUN 虚拟网卡接管更底层的连接。终端里的 Node.js、npm、Git、Python 或 Claude Code 是否使用代理,则取决于它们是否读取系统代理、是否识别代理环境变量,以及当前请求是否被 TUN 接管。
浏览器能够打开网页,不代表 Claude Code 一定可以完成登录。浏览器通常会读取操作系统代理设置,而终端工具可能完全忽略这些设置。即使终端已经设置了代理,也可能因为只配置了 HTTP_PROXY、没有配置 HTTPS_PROXY,或者把 Clash 的控制端口误当成代理端口,导致请求超时、TLS 连接失败或登录页面无法加载。
| 组件 | 常见地址或设置 | 主要作用 |
|---|---|---|
| Clash Verge 图形客户端 | 桌面托盘或主窗口 | 导入订阅、启动内核、切换代理组与模式 |
| HTTP 代理端口 | 127.0.0.1:7890 |
供浏览器、终端和支持 HTTP 代理的软件转发请求 |
| SOCKS5 代理端口 | 常见为 127.0.0.1:7891 |
供支持 SOCKS5 的应用使用,实际端口以配置为准 |
| 控制接口 | 常见为 127.0.0.1:9090 |
供客户端管理内核,不是终端代理地址 |
| 终端代理变量 | HTTPS_PROXY |
告诉命令行程序通过哪个 HTTP 代理建立 HTTPS 请求 |
安装 Clash Verge 并准备可用配置
开始配置前,先在本站的下载中心选择与系统匹配的 Clash Verge 或兼容客户端。Windows 用户要注意系统架构和安装包类型;macOS 用户需要区分 Apple 芯片与 Intel 版本;Linux 用户则应确认桌面环境、文件权限以及是否需要额外配置系统服务。首次启动后,不要立即运行 Claude Code,建议先验证 Clash 内核、订阅和普通 HTTPS 访问是否正常。
导入订阅并启动内核
- 打开 Clash Verge,在“配置”“Profiles”或类似的配置列表页面中找到 URL 导入入口。
- 粘贴服务提供方给出的 Clash、Clash Meta 或 mihomo 格式订阅链接。
- 等待配置下载完成,选择刚刚导入的配置作为当前配置。
- 启动内核,确认窗口中的运行状态、日志和本地端口均已出现。
- 在代理组中选择一个可以稳定访问目标服务的节点或自动选择策略。
不同版本的 Clash Verge 界面名称可能略有变化,但操作逻辑基本一致:订阅配置负责提供节点与规则,代理模式决定流量如何匹配,代理端口则负责接收本地应用的请求。若订阅导入后显示解析失败,先确认订阅返回的是 Clash YAML,而不是网页、JSON 错误信息或仅包含分享链接的纯文本。关于链接过期、状态码和更新间隔,可参考站内的订阅更新排查方法。
检查端口、模式与代理组
打开当前配置或内核信息,重点查看 mixed-port、port、socks-port 和 mode。推荐优先使用混合端口,因为它通常同时接受 HTTP 和 SOCKS 请求,终端配置更简单。若配置内容类似下面这样,说明本机 HTTP 代理端口是 7890:
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
allow-lan: false 表示只允许本机访问代理端口,适合个人电脑使用。除非确实需要让局域网设备共享代理,否则不建议随意开启局域网监听。若开启 allow-lan: true,还要检查监听地址、防火墙和访问控制,避免把本地代理暴露给不可信设备。
模式方面,建议先使用“规则”模式。这样普通国内网站可以直连,匹配到代理规则的请求则进入代理组,减少不必要的延迟。排障时可以临时切换到“全局”模式,用来判断问题究竟来自规则匹配还是节点连接;测试结束后再切回规则模式。不要把“全局”模式当成解决所有问题的固定方案,因为它可能让 npm 镜像、局域网地址和不需要代理的服务也经过远程节点。
| 设置 | 排障阶段建议 | 稳定使用建议 |
|---|---|---|
| 代理模式 | 先规则,必要时短暂测试全局 | 规则模式 |
| 本地地址 | 127.0.0.1 |
保持仅本机访问 |
| HTTP 端口 | 以当前 mixed-port 为准 |
固定记录,避免环境变量写错 |
| 代理节点 | 先选延迟低且日志稳定的节点 | 使用自动选择或手动固定节点 |
动手配置:让 Claude Code 使用 Clash Verge
下面是一套适用于本机代理端口为 7890 的通用配置。执行前请在 Clash Verge 中确认端口没有被其他程序占用,并通过日志观察请求是否进入内核。终端代理变量中的协议写成 http://,并不表示只能访问普通 HTTP 网站;HTTPS 请求会通过 HTTP 代理建立 CONNECT 隧道。
Windows PowerShell 配置
在 PowerShell 中,可以先设置当前窗口有效的代理变量:
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:ALL_PROXY = "http://127.0.0.1:7890"
$env:NO_PROXY = "127.0.0.1,localhost"
这些变量只对当前 PowerShell 窗口及其启动的子进程有效。设置后先用 curl.exe 测试,不要直接把所有问题归咎于 Claude Code:
curl.exe -I https://api.anthropic.com
curl.exe -I https://claude.ai
如果命令返回 HTTP 响应,或者至少能够完成 TLS 握手,说明终端已经能通过 Clash 发起请求。若显示“无法连接到代理”,重点检查端口;若返回超时或连接重置,切换代理节点并查看 Clash 日志;若返回 407 Proxy Authentication Required,说明当前代理端口启用了认证,需要按客户端实际要求填写用户名和密码,不能继续使用无认证地址。
希望每次打开 PowerShell 都自动设置时,可以将变量写入 PowerShell 配置文件,但不建议在共享电脑上无条件全局写入。更稳妥的方式是建立一个专门的启动脚本,用完后清理变量:
Remove-Item Env:HTTP_PROXY -ErrorAction SilentlyContinue
Remove-Item Env:HTTPS_PROXY -ErrorAction SilentlyContinue
Remove-Item Env:ALL_PROXY -ErrorAction SilentlyContinue
macOS 与 Linux 配置
macOS 的 Terminal、iTerm2 以及多数 Linux shell 都可以使用 export 设置环境变量:
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="http://127.0.0.1:7890"
export NO_PROXY="127.0.0.1,localhost,::1"
部分程序只读取小写变量,或者在大小写同时存在时优先使用其中一组。为了减少兼容差异,可以同时设置大小写版本:
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"
export no_proxy="$NO_PROXY"
如果确认这套配置长期使用,可以加入 ~/.zshrc、~/.bashrc 或其他实际使用的 shell 配置文件,然后重新打开终端。不要把订阅令牌、代理用户名或密码直接写进会同步到公开代码仓库的配置文件。Clash 本机无认证时,上面的地址不包含敏感凭据;如果代理启用了认证,应使用权限受控的本地文件,并避免把完整命令复制到公开日志中。
启动 Claude Code 前的检查顺序
- 确认 Clash Verge 内核处于运行状态,当前配置没有红色解析错误。
- 确认代理组已经选中实际节点,而不是停留在“DIRECT”或空策略。
- 确认
HTTP_PROXY与HTTPS_PROXY都指向 HTTP 或 mixed 代理端口。 - 使用
curl测试基础 HTTPS 连接,并在 Clash 日志中确认请求有记录。 - 在同一个终端窗口中启动 Claude Code,观察登录或初始化阶段是否仍然超时。
如果 Claude Code 需要在浏览器中完成授权,浏览器和终端必须尽量使用同一个网络出口。终端能够访问 API,但浏览器回调失败时,应检查浏览器系统代理、默认浏览器设置以及本机回环地址是否被错误地加入代理规则。localhost、127.0.0.1 和本地回调端口通常不应经由远程节点转发。
规则分流、TUN 与终端访问的选择
Claude Code 运行期间可能涉及登录页面、API 请求、版本检查、包管理器以及 Git 远程仓库。不同域名不一定由同一条规则处理,因此“网页能打开但 CLI 不稳定”经常与规则集、DNS 或代理模式有关。先使用 Clash Verge 的连接记录观察实际请求,再决定是否需要调整规则,不要一开始就大范围修改订阅。
| 方案 | 优点 | 限制 | 适用情况 |
|---|---|---|---|
| 环境变量 | 范围明确,容易开启和关闭 | 只对读取变量的程序有效 | 优先推荐给终端开发工作流 |
| 系统代理 | 浏览器和部分桌面程序可直接使用 | 命令行工具不一定读取 | 网页授权与普通桌面应用 |
| TUN 模式 | 可接管不读取代理变量的程序 | 需要系统权限,排障范围更大 | 环境变量无效且程序确实不支持代理时 |
| 全局模式 | 用于快速验证节点和链路 | 所有流量都可能经过代理 | 短时间定位规则问题 |
规则模式下的实用判断
在规则模式下,打开 Clash Verge 的连接或日志页面,启动一次 Claude Code,然后观察请求的域名、策略组和最终节点。如果请求显示为 DIRECT,但目标服务在当前网络环境下无法直连,说明规则没有命中或订阅规则不完整。此时可以暂时切换全局模式复测:全局模式成功而规则模式失败,问题大概率在规则;两种模式都失败,则更应检查节点、DNS、证书和本地端口。
DNS 也会影响终端连接。域名解析到不可达地址、IPv6 路由异常、系统 DNS 被污染或代理规则与 DNS 模式不一致,都可能表现为 API 超时。不要只根据浏览器结果判断,因为浏览器可能启用了独立的安全 DNS。若使用 TUN,可以先保持默认自动路由,确认基础连接后再尝试严格路由、IPv6 开关或 DNS 劫持等高级选项。一次只改变一个参数,便于回滚。
常见失败现象与排查顺序
遇到登录失败或请求超时时,建议保留终端中的完整错误类型和 Clash 日志时间点,但不要公开订阅链接、访问令牌、授权码或完整请求头。把错误分层后,通常比反复更换节点更快找到原因。
- 提示连接被拒绝:优先检查 Clash 内核是否启动、端口是否写错,以及是否有其他程序占用
7890。用netstat、系统资源监视器或客户端端口页面核对监听状态。 - 提示代理连接超时:检查代理组当前节点,观察连接日志是否出现请求;若没有日志,说明请求没有到达 Clash,重点检查环境变量是否在当前终端生效。
- 浏览器能登录,Claude Code 失败:确认终端是否设置了
HTTPS_PROXY,并检查终端启动的程序是否继承了当前 shell 环境。 - 登录页面打开但回调失败:确认本地回调地址没有被代理,检查防火墙、浏览器默认打开方式和本机端口占用。
- 出现证书或 TLS 错误:检查系统时间、系统根证书、节点链路和是否存在 HTTPS 中间人软件。不要为了“解决”错误而关闭证书校验。
- API 返回 401 或 403:这通常与账号认证、令牌、权限或服务端策略有关,不是换一个 Clash 节点就一定能解决。先确认账号状态和官方服务提示。
- npm 或 Git 也无法使用:这些工具可能有独立的代理设置。Claude Code 的环境变量生效,不代表 Git、npm 的全局配置也已经正确。
可以用下面的命令确认环境变量是否真的存在。输出代理地址时注意不要包含真实账号密码:
echo $HTTPS_PROXY
curl -v --proxy "$HTTPS_PROXY" https://api.anthropic.com
Windows PowerShell 对应写法如下:
echo $env:HTTPS_PROXY
curl.exe -v --proxy "$env:HTTPS_PROXY" https://api.anthropic.com
如果 curl 明确通过 127.0.0.1:7890 建立了连接,而 Claude Code 仍然失败,说明本地 Clash 代理链路基本可用,应转向检查 Claude Code 本身的版本、登录状态、认证流程和服务端返回。若 curl 也无法连接,则先不要修改 Claude Code 配置,继续处理 Clash 节点、规则、DNS 或本机防火墙。