在终端里运行 Claude Code 时,浏览器能打开网页并不代表命令行请求也已经走代理。桌面应用通常可以使用系统代理设置,而由 Terminal、PowerShell 或 VS Code 集成终端启动的进程,未必会自动继承相同的网络配置。于是就会出现看似矛盾的情况:Clash Verge 已经启动,浏览器访问正常,Claude Code 却一直等待、报连接超时,或者在登录和模型请求阶段失败。本文以 Clash Verge 为代理入口,依次说明订阅与节点准备、终端代理变量设置、连接验证和常见故障排查,并介绍规则模式与 TUN 模式分别适合哪些开发场景。
开始之前,请确认你已经安装 Claude Code,并拥有可正常使用的 Anthropic 账户或相应访问权限;同时准备好由你信任的代理服务所提供的订阅或配置。Clash Verge 是本地代理客户端,不会提供 Anthropic 账户、API 额度或模型访问权限。代理只能改善客户端到目标服务之间的网络路径,不能代替账户授权,也无法绕过服务本身的地区、配额或使用政策。使用服务与代理时,请遵守所在地区的法律法规以及组织的网络管理要求。
先弄清楚 Claude Code 的请求为什么会失败
Claude Code 是从 shell 中启动的开发工具,它需要通过网络完成登录、请求模型、传输对话内容以及获取工具相关信息。实际请求可能涉及 api.anthropic.com、账户登录相关页面或其他服务端主机;具体连接会因版本、登录方式和功能而变化。因此,排障时不宜只凭一份网上流传的域名列表下结论,最好在 Claude Code 发起请求的同时查看 Clash Verge 的连接记录,确认本机究竟请求了哪些主机、命中了什么策略。
错误信息可以帮助缩小范围,但不能单独证明原因。ETIMEDOUT、连接长时间无响应或 TLS 握手失败,通常值得先检查终端流量是否进入代理;401 或 403 更可能与身份验证、账户权限或服务策略有关;请求频率或额度相关错误,则应核对账户状态与使用限制。若 Claude Code 能启动,但某一步骤偶尔停住,也要区分网络中断、服务端响应较慢和本地工具等待时间过短,不要一开始就同时更换节点、订阅和客户端设置。
建议按「客户端是否运行—终端是否连接本地代理—目标请求是否命中代理策略—账户请求是否成功」的顺序检查。每次只改变一个条件,并在连接列表中观察变化。这样既能判断故障属于本机代理,还是账户与服务端,也能避免因同时切换多个选项而丢失可复现的线索。
anthropic 或连接记录中显示的实际主机名。先看连接有没有出现,再看策略是 DIRECT 还是代理策略组;这比仅凭浏览器能否打开网页来判断终端代理是否生效更可靠。
在 Clash Verge 导入配置并确认代理端口
如果 Clash Verge 尚未配置可用节点,先在客户端中导入你有权使用的订阅或本地配置。订阅链接通常带有账户标识,应当像密码一样妥善保管,不要贴到公开 issue、截图或共享文档中。打开 Verge 后进入配置管理页面,添加订阅链接并等待客户端拉取配置;已有 YAML 文件的用户,也可以按当前版本提供的导入入口载入本地配置。界面名称可能随版本调整,关键是确认配置已经成功解析,并且当前启用的是预期配置。
接着进入代理或设置页面,确认 HTTP 代理端口。常见配置会提供 mixed-port,也可能分别显示 HTTP 和 SOCKS 端口。终端变量中的端口必须与本机实际配置一致,不能因为网上示例使用了某个数字,就假设自己的客户端也使用同一个端口。以下示例中的 7890 只是占位示例;如果 Verge 显示的是其他端口,应将命令中的端口替换为实际值。
- 打开 Clash Verge,确认配置状态正常,且已选择可用的策略组或节点。
- 在代理设置中确认 HTTP 或 mixed-port,并记录端口号。
- 启用 Verge 的系统代理开关,以便遵循系统设置的应用使用代理。
- 打开连接面板,确认客户端处于运行状态;不要在代理核心未启动时就开始测试终端。
系统代理开关对浏览器和部分桌面应用有帮助,但不应当被当作终端代理已配置好的证明。即使系统托盘显示代理已启用,shell 启动的程序仍可能直接连接网络。接下来需要在实际运行 Claude Code 的那个终端会话中显式设置代理变量,然后用简单的网络请求验证本地端口是否可用。
为当前终端设置 HTTPS_PROXY
对于大多数 Claude Code 命令行使用场景,先在启动程序的 shell 中设置代理环境变量,是容易检查也容易撤销的做法。通常可以通过 HTTPS_PROXY 指定 HTTPS 请求使用的 HTTP 代理,并根据工具兼容情况补充 HTTP_PROXY。变量值应指向本机回环地址和 Verge 的 HTTP 或 mixed-port,例如 http://127.0.0.1:7890。这里的 http:// 描述的是本地代理入口协议,不表示 Claude API 请求本身不使用 HTTPS。
在 macOS 或 Linux 的 zsh、bash 终端中,可以先为当前会话设置变量:
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1,::1
然后仍在同一个终端窗口中运行 Claude Code。验证变量是否已进入当前 shell,可以执行 env | grep -i proxy。若希望每次打开终端都自动设置,可以将需要的配置加入对应 shell 的启动文件;不过,团队电脑或经常使用直连网络的设备更适合按需启用,避免把代理设置无意中带入其他项目、容器或公司内网命令。
Windows PowerShell 的环境变量写法不同,可以在当前会话中设置:
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:NO_PROXY = "localhost,127.0.0.1,::1"
设置后可用 $env:HTTPS_PROXY 检查当前值,再从同一 PowerShell 窗口启动 Claude Code。环境变量通常只影响当前进程及其子进程;从开始菜单启动的应用、另开的终端标签页、IDE 后台任务或 CI 服务,可能没有继承这组设置。尤其在 VS Code 中,集成终端、任务、扩展宿主和外部终端并不总是共享同一环境,因此应当在实际发起请求的执行入口内检查变量。
NO_PROXY 用于声明不经过代理的本机或内网地址。若将过多域名或通配规则写入其中,目标请求可能被排除在代理之外;反过来,如果企业内部服务必须直连,也可在遵守组织要求的前提下加入相应地址。配置代理变量后,先观察连接日志中的目标请求是否出现,不要因为变量已经显示在环境里,就断定 Claude Code 一定采用了它:不同运行环境、网络库或启动方式可能有不同处理方式。
验证链路,并为开发流量选择分流方式
设置环境变量之后,建议先做一个独立的连通性检查,再启动 Claude Code 执行实际任务。可以使用支持代理参数的 curl,明确指定本地代理入口访问 Anthropic API 主机:
curl -I -x http://127.0.0.1:7890 https://api.anthropic.com
如果返回 HTTP 响应,即使状态码不是代表登录成功的状态,也通常说明 DNS、TCP、TLS 和代理转发这几段链路至少已经建立到能够收到服务端响应。这个检查不验证 API 密钥、账户状态或 Claude Code 登录流程;若命令显示连接被拒绝,先确认 Verge 正在运行、端口正确且监听本机。如果请求一直超时,则回到连接面板检查请求是否被观察到,以及当前选择的节点是否可用。不要把一次 HEAD 请求的状态码直接当作 API 功能测试结论。
接下来从设置过代理变量的同一终端启动 Claude Code,并在它发出请求时观察 Verge 的连接列表。若看到相关目标且策略为代理策略组,说明终端请求至少进入了 Mihomo 处理流程;若策略显示 DIRECT,应检查配置中的规则顺序、规则集和策略组选择。订阅模板可能已经包含较宽泛的规则,因此新增规则要结合现有配置审慎处理,避免简单追加后仍被前面的规则抢先匹配。
为 Anthropic 流量选择策略时,优先使用客户端中明确可选、当前可用的代理策略组,而不是将规则固定指向一个可能改名或被删除的节点。若配置支持自定义规则或覆写,可基于连接记录里的实际主机添加精确匹配规则,并放在会先于宽泛直连规则生效的位置。修改后重新发起请求,检查最终命中策略是否符合预期。不要为了让一个 API 可用,就把所有流量永久设为全局代理;这会让代码仓库、包管理器、内网服务等不相关请求也改变出口,给日常开发增加不必要的变量。
一般可以从下列两种方式中选择:
- 规则模式加终端环境变量:适合希望只让 Claude Code 等特定请求走代理、同时保留其他开发流量原有路径的用户。它更易定位问题,也便于在工作与个人网络之间切换。
- TUN 模式:适合有程序不遵循 HTTP 代理环境变量、或需要在网络层接管更多进程流量的场景。它可能涉及系统权限、路由和 DNS 行为,也可能与其他 VPN、虚拟网卡或企业网络客户端冲突,应在了解影响后逐项启用测试。
如果规则模式下连接面板完全看不到目标请求,而明确设置了代理的 curl 可以连通,问题更可能出在 Claude Code 的启动环境、变量继承或该执行方式的代理支持上。此时可以先退出并从当前 shell 重新启动,确认命令没有被包装脚本清理环境变量;只有在确实存在不受代理变量控制的流量时,再考虑 TUN。TUN 不是所有连接问题的通用修复按钮,启用后若出现本地网络、DNS 或其他 VPN 异常,应先关闭它并恢复到可对照的基线状态。
常见故障排查与安全注意事项
浏览器正常,Claude Code 超时:优先在启动 Claude Code 的终端检查 HTTPS_PROXY,并确认其值与 Verge 当前端口一致。然后查看连接面板有没有相关请求。如果面板没有记录,先检查进程是否继承环境变量、是否从另一个终端或 IDE 任务启动;如果有记录但显示 DIRECT,再检查规则命中;如果命中代理却仍超时,则尝试同一策略组中的其他可用节点,并确认目标服务是否出现暂时性故障。
本地代理连接被拒绝:这通常意味着端口不对、代理核心未运行,或本地服务没有在预期地址监听。重新从 Verge 设置页核对端口,不要在 HTTP、SOCKS 和 mixed-port 之间混用。若电脑同时运行另一款代理软件,也要留意端口冲突,以及系统代理开关究竟由哪个客户端控制。
连接显示代理但请求仍失败:查看错误属于网络层还是账户层。若 TLS 连接已经建立,随后返回身份验证或权限错误,应按 Claude Code 与 Anthropic 账户的官方流程检查登录状态、访问权限和配额,而不是不断更换代理端口。若失败发生在 TLS 阶段,则检查节点质量、系统时间、证书环境和目标策略;在公司网络中,还应确认是否存在合规要求下的 TLS 检查或出站访问限制。
终端变量已经设置,IDE 中仍失败:在 IDE 的集成终端运行环境检查命令,并与外部终端输出对比。终端 shell 初始化文件可能因交互模式不同而没有加载,任务运行器也可能使用单独的环境配置。需要在 IDE 任务或启动配置中设置变量时,避免把包含敏感令牌的内容写入会提交到仓库的文件。代理地址本身通常不等同于凭据,但订阅链接、API 密钥和认证令牌应避免出现在日志、截图与公开脚本中。
启用 TUN 后其他网络异常:先关闭 TUN,恢复为规则模式和显式环境变量,再逐项排查 DNS、路由、系统 VPN 与虚拟网卡冲突。一次只改变一个设置,并记录恢复步骤。开发设备上常有 Docker、虚拟机、公司 VPN 和安全代理同时运行;多个组件争用路由或 DNS 时,症状可能表现为 Claude Code 超时,但根因并不在 Claude Code 本身。
对日常开发而言,比较稳妥的维护方式是保留一套最小可用配置:Clash Verge 使用清晰的策略组,终端只在需要时设置代理变量,并通过连接面板核对真实命中结果。遇到订阅更新、客户端升级或网络环境改变后,再用 curl 与 Claude Code 各做一次验证。这样的流程比长期依赖全局代理更容易回滚,也能减少 Git、包管理器和企业内网请求受到意外影响的机会。
有些只提供系统代理开关的桌面工具,遇到不读取系统设置的 CLI 时,往往还得额外寻找环境变量入口;而手动为每个应用配置独立代理,又容易出现端口和规则不一致。Clash Verge 将节点选择、规则命中与连接记录集中在一处,并能配合终端的 HTTPS_PROXY 逐步验证链路,方便开发者把问题定位到具体环节。如果你希望按自己的设备选择客户端,可以先查看可用版本与平台信息。