在国内使用 Claude Code 时,常见问题并不只出现在命令本身。终端可能提示登录失败、OAuth 页面无法打开、请求长时间停留在连接中,或者浏览器可以访问网页但 Claude Code 仍然返回网络错误。原因通常涉及三个环节:Clash Verge 是否正常运行,终端程序是否真正使用了 Clash 的代理端口,以及当前配置是否允许 Claude Code 所需的域名通过稳定节点访问。

Clash Verge 负责在本机提供代理入口,Claude Code 则是通过终端发起 HTTPS 请求。两者之间没有“自动识别”关系:即使 Clash Verge 已经连接节点,终端也不一定会主动使用代理。本文以 Windows、macOS 和 Linux 上常见的终端环境为例,从安装、订阅导入、系统代理,到环境变量和连通性检查,逐步完成一套便于排错的配置。使用相关服务时,还应遵守所在地区法律法规、服务条款和账号使用政策,不要共享账号或绕过服务方的安全限制。

一、Claude Code 为什么需要单独配置终端代理

Clash Verge 常见的工作方式是在本机监听一个或多个端口。HTTP 代理端口用于接收 HTTP 或 HTTPS 请求,SOCKS5 端口则适合支持 SOCKS 协议的程序,mixed-port 通常允许客户端同时处理 HTTP 与 SOCKS 请求。具体端口不能直接套用网上的固定数字,应以 Clash Verge 当前配置页面显示的值为准。

浏览器通常会读取系统代理设置,因此打开“系统代理”后,浏览器访问网站可能已经经过 Clash。但 PowerShell、Windows Terminal、macOS Terminal、VS Code 集成终端以及其他命令行程序,是否使用代理取决于程序自身的实现。很多 CLI 工具会读取 HTTP_PROXYHTTPS_PROXYALL_PROXY 和对应的小写变量;也有程序使用自己的配置文件,或者只支持其中部分变量。

Claude Code 的登录和接口请求都可能需要访问 HTTPS 服务。代理配置成功的判断标准不是“Clash Verge 显示已启动”,而是终端发出的实际请求能够出现在 Clash Verge 的连接日志中,并且请求可以完成 TLS 建连和响应。若日志中完全没有终端请求,通常说明终端没有使用代理,或者使用了错误的端口。

检查对象 主要作用 常见误区
Clash Verge 启动内核、加载订阅、监听本地代理端口 客户端启动不等于节点可用
系统代理 让遵循系统设置的桌面应用使用本地代理 终端不一定自动读取系统代理
终端环境变量 明确告诉命令行程序代理地址和协议 端口、协议或变量作用域写错
分流规则 决定目标域名走代理、直连或拒绝 规则命中后仍可能受到 DNS 和节点质量影响

还要区分“代理连通”和“业务可用”。一个测试网站能够打开,只能说明当前节点和本地代理基本工作,不能保证 Claude Code 的登录流程、API 请求、流式响应和长连接都没有问题。完成基础测试后,应在 Clash Verge 日志中观察 Claude Code 实际访问的域名和连接结果。

二、安装 Clash Verge 并导入订阅配置

先从可信来源获取与操作系统匹配的 Clash Verge 安装包。Windows 用户应注意安装包架构和系统安全提示,macOS 用户需要确认应用权限及芯片架构,Linux 用户则应结合发行版选择可用格式。安装完成后打开客户端,先不要急着启动 TUN 或修改复杂规则,优先确认图形界面能够正常运行。

导入订阅的基本步骤

  1. 打开 Clash Verge 的配置或订阅管理页面,找到添加订阅、导入 URL 或类似入口。
  2. 粘贴服务提供方生成的订阅链接,并为配置设置容易识别的名称。
  3. 执行拉取或更新操作,确认返回内容不是登录页面、错误文本或 HTML 文档。
  4. 选中刚刚导入的配置,将其设为当前运行配置。
  5. 查看代理组和节点列表,选择一个稳定节点进行延迟测试或连接测试。

订阅链接通常包含账号识别信息,不应发布到论坛、截图或公共代码仓库。若链接已经泄露,应尽快在服务提供方后台重置或生成新的订阅地址。订阅导入成功也不代表所有节点都能使用:节点协议、传输参数、证书验证和服务端状态都可能影响最终连接。

Clash Verge 的核心名称可能在不同版本或界面中显示为 Clash Meta、mihomo 或其他兼容实现。若订阅包含较新的协议、Reality、Hysteria2、TUIC 或特定扩展字段,应确认当前客户端使用的内核能够解析这些内容。配置载入失败时,先查看内核日志中的字段错误、协议不支持或证书错误,不要直接修改 Claude Code 的参数。

先用浏览器完成基础验证

打开 Clash Verge 的系统代理开关后,用浏览器访问一个普通 HTTPS 网站,再观察连接日志是否出现请求。随后在客户端中切换一个节点,重复测试。如果浏览器始终无法访问,说明问题还停留在 Clash 配置、节点、规则或系统代理层,应先完成这些基础排查。

三、在终端中设置 Claude Code 代理

完成 Clash Verge 基础验证后,再配置终端代理。下面示例使用本机回环地址和占位端口,实际操作时请将 7890 替换为 Clash Verge 设置页显示的 HTTP、mixed-port 或其他兼容端口。若使用 SOCKS5 端口,则协议前缀应写成 socks5://;HTTP 代理端口则使用 http://

Windows PowerShell 临时设置

在准备运行 Claude Code 的同一个 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:http_proxy=$env:HTTP_PROXY
$env:https_proxy=$env:HTTPS_PROXY
$env:all_proxy=$env:ALL_PROXY

macOS、Linux 与 Git Bash

在 Bash、Zsh 或兼容 shell 中,可以使用以下命令:

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 http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"

如果确认配置长期稳定,可以将相应内容加入 ~/.zshrc~/.bashrc 或其他实际使用的 shell 配置文件,然后重新打开终端。不要在共享电脑或公共脚本中写入包含用户名、密码或订阅信息的代理 URL。使用无认证的本机代理时,地址通常只需要回环地址和端口。

验证变量是否进入当前进程

PowerShell 可以执行:

Get-ChildItem Env:HTTP_PROXY,Env:HTTPS_PROXY,Env:ALL_PROXY

macOS 或 Linux 可以执行:

env | grep -i proxy

然后使用系统中已有的 HTTPS 测试工具访问一个你有权限访问的普通站点,并同时观察 Clash Verge 日志。例如:

curl -I https://example.com

如果 curl 请求能够完成,且日志中出现对应连接,说明当前终端至少能够通过本地代理发送 HTTPS 请求。若命令提示无法连接 127.0.0.1,应检查 Clash Verge 是否运行、端口是否正确以及本地防火墙是否拦截。若日志没有请求而命令却成功,可能是系统或工具使用了其他代理设置,不能据此判断 Claude Code 已经走同一条路径。

四、登录失败与请求超时时如何分流排查

Claude Code 的登录流程可能需要打开浏览器、完成授权,再将结果返回终端。此时应分别检查终端到服务端的请求,以及浏览器打开授权页面时使用的网络路径。浏览器能打开授权页面,不一定说明启动 Claude Code 的终端已经配置代理;反过来,终端能够访问某个接口,也不代表浏览器回调一定顺利。

登录页面打不开

  • 先确认 Clash Verge 已开启系统代理,并检查浏览器请求是否出现在连接日志中。
  • 确认系统默认浏览器没有单独启用另一个代理扩展或代理客户端。
  • 检查系统日期、时间和时区。TLS 证书校验依赖准确时间,时间偏差可能导致安全连接失败。
  • 不要把浏览器中的登录地址复制到公开场所,也不要将授权回调内容发送给他人。
  • 如果浏览器能打开而终端仍然失败,回到终端环境变量和当前 shell 进程检查。

请求超时或连接被重置

超时不一定代表节点完全不可用。Claude Code 可能需要较稳定的 HTTPS 连接,流式输出期间还需要连接持续一段时间。可以在 Clash Verge 中更换一个延迟较低、丢包较少的节点,并观察日志中是 DNS 超时、TCP 连接失败、TLS 握手失败,还是远端主动关闭连接。

如果只有某个域名失败,可以检查规则是否将其错误地匹配为 DIRECTREJECT 或不可用的策略组。规则匹配顺序通常是从上到下,前面的规则命中后,后面的规则不会继续处理。修改规则前应备份当前配置,并优先使用客户端提供的配置覆写能力,避免每次订阅更新都丢失手工修改。

终端提示代理协议错误

常见原因是把 SOCKS 端口写成 HTTP,或把带认证信息的远程代理地址误填为本机端口。可以分别尝试 Clash Verge 的 HTTP 或 mixed-port,并保持变量格式一致。若某个程序只支持 HTTP 代理,就不要直接填入只监听 SOCKS5 的端口;若程序明确要求 SOCKS5,再使用对应协议前缀。

现象 优先检查 处理方向
浏览器和终端都无法访问 节点、订阅、内核、系统代理 先恢复 Clash 基础连通性
浏览器正常,终端无日志 环境变量、终端窗口、端口 在启动 Claude Code 的同一窗口设置变量
终端有日志但请求超时 节点质量、规则、DNS、TLS 查看具体失败阶段并更换稳定节点
登录页面成功但回到终端失败 浏览器回调、账号状态、进程环境 重新在同一终端启动登录流程

五、让日常使用更稳定的配置建议

完成一次登录后,不建议立即把所有流量都切换到 TUN 模式或复杂的全局代理。Claude Code 主要是终端网络请求,先用环境变量和明确的代理端口验证最容易定位问题。只有当其他不遵循系统代理的开发工具也需要代理时,再考虑启用 TUN,并重新检查 DNS、局域网访问和本地开发服务是否受到影响。

为开发环境保留清晰的代理边界

  • 终端工具:通过环境变量明确指定代理,避免依赖不确定的系统代理继承行为。
  • 浏览器:使用系统代理或单独代理设置,但排查时尽量不要叠加多个代理扩展。
  • 本地服务:localhost127.0.0.1 和内网地址加入适当的直连范围,避免本地开发接口被送入远程节点。
  • 代码仓库和包管理器:分别确认 Git、npm、pip 或其他工具是否读取环境变量,有些工具还保存了独立代理配置。
  • 日志与隐私:分享错误信息前,删除订阅 URL、账号标识、访问令牌、完整请求头和可能包含个人信息的域名。

如果不希望每次打开终端都启用代理,可以保留一个专用脚本或 shell 函数,在需要使用 Claude Code 时手动加载。这样做比永久修改全局系统代理更容易控制,也能减少其他软件意外经过代理的情况。退出代理时,应确认取消变量或关闭专用终端,避免后续命令继续使用已经失效的本地端口。

# 临时取消当前 shell 中的代理变量
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
unset http_proxy https_proxy all_proxy

Windows PowerShell 中可以使用:

Remove-Item Env:HTTP_PROXY,Env:HTTPS_PROXY,Env:ALL_PROXY -ErrorAction SilentlyContinue
Remove-Item Env:http_proxy,Env:https_proxy,Env:all_proxy -ErrorAction SilentlyContinue

最后,建议保留一份“可工作的最小配置”:一个已确认稳定的节点、一个明确的本地代理端口、一组终端环境变量,以及一次成功的 HTTPS 测试结果。以后遇到 Claude Code 无法连接时,先恢复这套最小配置,再逐项加入自动测速、复杂规则、TUN 或其他代理链路,排查效率会明显高于直接重装所有软件。

选择客户端并继续配置

先获取适合当前系统的 Clash 客户端,再回到快速上手页完成订阅导入、系统代理和终端环境设置。