前言:浏览器能用,终端为何超时?
在浏览器中打开 Claude 没问题,不代表 Claude Code 也能正常连接。浏览器通常会读取 Clash 设置的系统代理,而 Claude Code 是从终端启动的命令行工具;它发起请求时,可能只读取当前进程的代理环境变量。如果终端没有这些变量,请求就可能直接访问网络,最终出现连接超时、登录失败、模型列表加载不出等情况。
排查时不要一上来就改订阅或重装客户端。更有效的顺序是:先确认 Clash 正在运行且本地代理端口可用,再检查终端是否能通过该端口访问网络,最后核对目标请求是否被规则分流到合适的节点。只要逐层验证,就能区分是终端没有使用代理、规则走错,还是当前节点或账户本身有问题。
排查思路
浏览器正常只能说明浏览器链路可用;本文将分别检查 Clash 端口、终端环境变量、规则命中和 Claude Code 登录状态,避免把不同原因混为一谈。
1先确认 Clash 与本地代理端口
Claude Code 需要连接到 Clash 在本机开放的代理端口。常见端口包括 HTTP/Mixed 的 7890 和 SOCKS 的 7891,但它们不是所有配置的固定值。请先在 Clash Verge、Clash Verge Rev、Mihomo 或其他客户端中查看当前配置的端口;如果你使用的是自定义端口,后续命令也必须对应修改。
同时确认客户端处于运行状态,配置已经加载,代理模式不是“直连”。如果使用规则模式,规则最终仍可能让某个域名走 DIRECT;如果使用全局模式,也不能弥补终端没有连接本地代理端口的问题。系统代理开关可以打开,但它不保证每个命令行程序都会自动继承系统设置。
用终端测试本地端口
在 macOS、Linux 或 Windows 的终端中,可以使用 curl 显式指定 Clash 的 HTTP 代理进行测试。以下示例假设端口为 7890:
如果能收到 HTTP 响应,说明终端到本地代理以及代理到目标站点这条链路大概率已建立。出现 401、403 或其他非成功状态码,并不等同于网络超时:它们可能表示服务器已响应,但请求没有认证信息、访问被限制,或该路径不提供所请求的方法。若提示无法连接 127.0.0.1,优先检查 Clash 是否运行、端口是否填错,以及本地代理监听是否被关闭。
不要混淆代理端口
HTTP、SOCKS 和 Mixed 端口用途不同。将 SOCKS 端口当成 HTTP 代理使用,或把客户端的实际端口误写成默认值,通常会导致连接失败。排查时先以 Clash 当前显示的端口为准。
2给 Claude Code 设置终端代理
终端环境变量通常只影响当前终端会话及从该会话启动的程序。下面以本机 HTTP/Mixed 代理端口 7890 为例。请先关闭已经打开的 Claude Code 会话,再在设置变量的同一个终端中重新启动它,确保新进程继承变量。
在当前终端执行:
不少 HTTPS 请求会通过 HTTP_PROXY 或 HTTPS_PROXY 指定的 HTTP 代理转发。这里的 http:// 表示客户端连接本机代理时使用的协议,并不意味着目标网站改用不安全的 HTTP。若只想临时测试,直接在当前终端执行即可;确认有效后,再考虑将变量写入 ~/.zshrc、~/.bashrc 等 shell 配置文件,并重新打开终端。
在启动 Claude Code 的同一个 PowerShell 窗口中执行:
PowerShell 的变量写法与传统命令提示符不同,不要把 $env: 语法直接粘贴到 CMD 中。如果你从 VS Code、Windows Terminal 或其他集成终端启动 Claude Code,应在对应的终端会话中设置变量;只在另一个窗口设置,对已经运行的进程不会生效。
检查变量是否生效
启动程序前,可以用以下命令检查当前终端的变量值。macOS 或 Linux 执行 env | grep -i proxy;PowerShell 执行 Get-ChildItem Env:*proxy*。结果应指向本机正确端口。若系统或 shell 中已经存在其他代理地址,也要留意它是否覆盖了当前设置。
如果设置变量后反而连接失败,可以先清除变量再重试,以判断是否是代理地址写错或代理类型不匹配。macOS 或 Linux 可执行 unset HTTP_PROXY HTTPS_PROXY ALL_PROXY;PowerShell 可执行 Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:ALL_PROXY。完成测试后,再根据结果重新设置。
3核对分流规则并定位登录失败
当显式代理测试成功、Claude Code 仍然超时时,下一步要检查 Clash 实际处理的连接。打开客户端的连接记录或日志,在 Claude Code 发起请求时观察相关域名的规则命中结果、策略组和出站节点。不要只根据浏览器当前显示的节点名称判断:命令行请求可能命中另一条规则,也可能因为域名规则缺失而走直连。
可以先确认与 Claude 服务相关的域名是否按你的网络需求走了可用策略组。若现有规则没有覆盖目标域名,可在配置允许的情况下添加针对性规则,并放在会提前匹配的规则之前。不要机械复制来源不明的完整规则集;不同订阅的策略组名称并不相同,写入不存在的策略组会造成配置校验失败。修改后先检查配置能否正常加载,再通过连接记录确认规则确实命中。
分层判断故障位置
本地端口连不上,检查客户端和端口;curl 经代理超时,检查节点、规则和目标可达性;curl 能响应但 Claude Code 失败,则重点检查环境变量继承、登录凭据、软件版本和账户权限。
| 现象 | 优先检查 | 处理方向 |
|---|---|---|
| 连接 127.0.0.1 失败 | Clash 运行状态、代理端口 | 确认客户端启动且使用正确端口 |
| curl 通过代理持续超时 | 节点状态、分流结果、网络限制 | 更换可用节点并查看连接日志 |
| 浏览器正常,Claude Code 超时 | 终端环境变量及进程启动方式 | 在当前终端设置代理后重新启动程序 |
| 网络有响应,但登录失败 | 账户状态、认证方式、系统时间 | 重新登录并核对账户及客户端提示 |
登录失败不一定是 Clash 故障。若日志显示服务器已返回明确的认证或权限错误,应按提示检查登录状态、账户可用性和认证流程,而不是不断更换代理变量。若切换节点后问题消失,可能是原节点不稳定、出口受限或目标服务无法通过该线路访问;若所有节点都能访问普通网站,却无法连接 Claude 相关服务,则需要进一步检查服务可用性和账户所在区域的支持情况。
完成排查后,建议只保留实际需要的环境变量,并记录代理端口、规则命中和测试结果。使用共享电脑或脚本时,不要把 API 密钥、登录令牌等凭据写进公开配置、截图或日志。若你在多个终端之间切换,记得分别确认各自的环境变量;终端关闭后,临时设置通常也会随会话结束而失效。
需要安装或更换 Clash 客户端时,可先查看适合自己平台的版本: