前言:浏览器能用,终端为什么仍会超时?
使用 Claude Code 时,常见情况是浏览器可以打开网页,终端里的命令却一直等待、请求超时,或者提示无法连接。这通常不是客户端本身故障,而是因为浏览器和终端程序使用代理的方式不同:Clash Verge 开启系统代理后,浏览器通常会自动读取系统设置;但命令行程序不一定遵循系统代理,仍可能直接连接网络。
解决问题的关键,是先确认 Clash 的本地代理端口正在监听,再让启动 Claude Code 的终端明确使用这个端口。之后还要检查规则模式是否把相关请求送入代理策略组,并通过命令行工具验证连接。本文以 Clash Verge 和 Mihomo 为例说明;不同版本的界面名称可能略有差异,配置逻辑相同。
先了解边界
代理配置只能改善网络连接路径,不能保证 Claude Code 在所有地区、账户或网络环境中都可用。请确认你符合 Claude 服务的适用地区、账户要求及使用条款;不要把连接成功等同于服务资格已获确认。
1检查 Clash 的本地代理端口
终端需要连接的是运行在本机上的 Clash 入站端口,而不是订阅服务商提供的远程节点端口。在 Clash Verge 中打开设置或常规设置,找到 端口(Port)、混合端口(Mixed Port)或 HTTP 代理端口。常见值是 7890,但端口可能被修改,必须以客户端当前显示的数值为准。
混合端口通常同时接受 HTTP 和 SOCKS 代理连接,便于不同工具使用。若客户端只显示 HTTP 端口,后续环境变量应使用 http://;不要因为节点使用 VLESS、Trojan 等协议,就把节点协议填进终端代理地址。终端连接的是本机 Clash 提供的代理入口,由 Clash 再根据配置选择远程节点。
A确认运行状态与代理模式
- 在 Clash Verge 中启用配置,确认当前配置已成功载入,且至少有一个可用节点。
- 在代理页面选择一个可用策略组和节点。若策略组名称为“自动选择”或其他自定义名称,确保该组当前没有失效或超时。
- 优先保持规则模式(Rule)。全局模式可用于短暂对比测试,但不建议把它作为长期修复手段。
- 核对 HTTP、Mixed 或 SOCKS 端口,以及监听地址。大多数桌面场景使用
127.0.0.1连接本机即可。
不要混淆端口
订阅节点的远程端口与 Clash 本地入站端口用途不同。误把远程节点地址或端口写入 HTTPS_PROXY,通常会导致连接被拒绝或持续超时。
B先测试本机代理是否可连接
在 macOS、Linux 或 Windows 的终端中运行以下命令。示例使用常见的 7890,如果你的客户端使用其他端口,请替换数字。命令能连接本机代理,只代表入口可达,不代表目标服务一定可用。
如果出现 Could not connect to server 或类似连接拒绝提示,先回到 Clash 检查端口、核心运行状态和监听地址。如果能收到 HTTP 响应,即使状态码是 401、403 或 404,也说明请求可能已经到达目标服务器;这类响应不等同于 Claude Code 登录成功,应继续查看状态码含义并按服务提示处理。
2为终端设置代理变量
环境变量要设置在启动 Claude Code 的同一个终端会话中。Clash Verge 的“系统代理”开关不一定会自动为 shell 设置 HTTP_PROXY 或 HTTPS_PROXY;因此,即使浏览器已经走代理,命令行仍可能直连。推荐先在当前窗口临时设置,确认有效后再考虑持久化。
AmacOS 与 Linux:当前终端临时设置
在 Bash、Zsh 等 shell 中执行以下命令。代理协议写成 http://,即便访问的是 HTTPS 网站也通常如此:这是本地代理入口的类型,并不表示目标网站改用 HTTP。
如果你已经在该终端里启动了 Claude Code,设置变量不会追溯影响正在运行的进程。退出程序后,在完成设置的终端里重新启动。若不希望让所有命令都走代理,可以只为一次启动设置变量:
BWindows PowerShell:设置当前会话
在 Windows 上,先确认 Clash Verge 正在运行,再于 PowerShell 中设置环境变量并启动 Claude Code:
这种写法只对当前 PowerShell 窗口及其启动的子进程生效。关闭窗口后,变量通常不会保留。建议先用这种临时方式验证连接,不要一开始就写入系统级环境变量,避免其他程序受到意外影响。
macOS 或 Linux 可运行 env | grep -i proxy;PowerShell 可运行 Get-ChildItem Env:*proxy*。检查结果中应能看到代理地址和端口。分享终端输出前,先删除用户名、密码、令牌等敏感信息;如果代理地址带有认证凭据,不要公开粘贴。
3检查分流规则并排查连接问题
设置代理变量后,请求仍会经过 Clash 当前启用的规则。若规则将相关域名匹配到 DIRECT,或落入不合适的策略组,终端仍可能超时。Claude Code 的服务域名和网络依赖可能随产品版本变化,建议先在 Clash 的连接记录中观察实际请求域名,再按当前配置的规则格式处理,不要盲目套用过时的域名清单。
A为相关域名选择合适的策略组
如果确认请求被错误地直连,可将明确需要代理的服务域名放到规则列表靠前的位置,并指向配置里真实存在的策略组。以下仅为格式示例:将 Proxy 替换为你配置中的策略组名称;若名称不存在,配置可能无法通过校验。
在 Clash Verge 中,配置覆盖或合并规则的入口会因版本而异。若你使用 Mihomo 配置文件,应先备份原文件,再添加规则并检查 YAML 缩进及规则顺序。规则通常按从上到下匹配,因此相关规则必须位于会提前命中的宽泛规则之前。配置变更后重新载入,并在连接记录里确认实际命中的策略组。
谨慎使用通用规则
不要随意把所有流量设置为代理,也不要为了“让请求成功”而删除已有安全规则。精确检查目标域名和命中策略,能减少对其他应用的影响;服务端拒绝访问时,单纯增加域名规则也无法解决账户或资格问题。
B根据现象定位问题
| 现象 | 优先检查 | 处理方向 |
|---|---|---|
| 连接被拒绝 | 本地端口、Clash 核心、监听地址 | 确认端口与实际配置一致,并重新运行本机代理测试。 |
| 一直超时 | 环境变量、节点连通性、规则命中 | 确认 Claude Code 从设置变量的终端启动,并查看 Clash 连接记录。 |
| 返回 401 或登录失败 | 账户会话、登录状态、服务端响应 | 按客户端提示重新认证;不要将网络连通误判为认证完成。 |
| 浏览器正常但终端失败 | 终端是否读取代理变量 | 在当前 shell 设置变量,然后从同一个窗口重新启动程序。 |
排查时一次只改一个变量:先验证本机端口,再验证代理请求,最后检查规则与 Claude Code 本身。若 curl 也无法通过代理访问目标,重点检查 Clash 节点、网络连接及域名分流;若 curl 已收到服务端响应而 Claude Code 仍报错,则进一步检查登录状态、客户端版本、账户权限及服务端返回信息。更新客户端或重新登录前,注意保存正在进行的工作。
推荐的完成顺序
确认 Clash 正常运行 → 核对本地代理端口 → 在终端设置变量 → 用 curl 测试 → 查看规则命中 → 从同一终端启动 Claude Code。按顺序检查,比直接切换全局模式更容易找到真正原因。