Claude Code 能打开网页,为什么终端仍会超时
Claude Code 运行在终端中,发起模型请求的进程与浏览器不是同一个网络客户端。即使浏览器已经通过 Clash 访问外部网站,命令行进程也未必自动使用系统代理:有的终端只继承启动它的进程环境变量,有的编辑器集成终端则要在重启后才读取新的设置。因此,「浏览器正常、Claude Code 请求超时」并不能直接说明节点失效,更常见的是终端流量没有进入 Clash,或者规则把相关请求送到了不合适的出站策略。
Claude Code 的使用链路也不止一次模型请求。首次登录可能涉及浏览器授权、回调和账户服务;后续对话则会访问 Anthropic 的接口,客户端版本或启用功能不同,还可能出现其他相关主机名。只检查一个网页是否能打开,很难判断整条链路是否畅通。排查时应把登录、启动、发送提示词和工具调用分开观察,再结合 Clash 的连接记录核对目标域名、命中规则和实际出站节点。
先准备 Clash:确认内核、端口与代理模式
开始改终端变量之前,先确认客户端加载了有效配置,核心处于运行状态,并且代理端口确实正在监听。Clash Verge、Clash Verge Rev、Mihomo Party 等客户端通常可以在设置、配置详情或内核信息页面查看 HTTP、SOCKS 或 mixed-port;不同版本的菜单名称和默认端口可能不同,不能仅凭网上示例认定本机一定使用 7890。若配置里启用了 mixed-port,它通常同时接受 HTTP 代理和 SOCKS 请求;若只配置了单独的 HTTP 或 SOCKS 端口,则按实际类型设置。
日常可先使用规则模式,并在 Proxies 页面为 Anthropic 相关规则选择合适的策略组。规则模式下,命中目标域名的连接由配置决定走代理还是直连;全局模式会影响更多程序,不适合作为长期排查的第一步。连接记录里如果完全没有 Claude Code 对应的新连接,优先检查终端代理变量、端口和进程启动方式;如果有记录但策略显示为 DIRECT 或落到错误组,再检查规则顺序和策略组选择。
配置来源若是远程订阅,先确认当前启用的是你正在编辑的那份配置。订阅更新可能覆盖本地改动,客户端的覆写功能也可能把本地规则插入到特定位置。改规则前备份配置,保存后查看核心是否重新载入成功;若界面报 YAML 解析错误,不要继续叠加规则,先恢复备份并检查缩进、逗号与策略组名称。
让 Claude Code 所在终端使用 Clash 代理
对从 Shell 启动的 Claude Code,最直接的检查办法是在同一个终端会话中设置代理环境变量,再启动程序。下面以 HTTP 代理 mixed-port 为例,端口仅作示意,应替换为 Clash 当前实际监听的端口。代理地址通常写作 http://,因为本机代理入口接收 HTTP 代理请求;这不等于目标网站使用明文 HTTP,HTTPS 流量会通过代理隧道建立连接。
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
claude
在 Windows PowerShell 中,可先为当前会话设置变量,再从这个 PowerShell 窗口运行 Claude Code:
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
claude
如果你使用单独的 SOCKS 端口,可根据客户端与当前 Claude Code 版本支持情况设置 ALL_PROXY,例如指向本机 SOCKS 入口。采用 socks5h 时,域名解析通常交由代理侧处理;采用普通 SOCKS 地址时,解析行为可能因客户端实现而异。不要把 HTTP 端口误当成 SOCKS 端口,也不要同时设置多个互相矛盾的代理变量后再据此判断故障。
变量只对其所在终端及其子进程生效。若你在终端设置变量后从桌面 Dock、开始菜单或其他已运行的 IDE 启动 Claude Code,新进程可能没有继承这些设置。可先关闭相关终端或 IDE,再从已经配置变量的 Shell 启动;在 VS Code 等编辑器中,也要确认使用的是正确的集成终端。如果当前 Claude Code 版本对某种代理变量的处理方式发生变化,应查看该版本文档,并以 Clash 连接记录为准,不要把「变量已设置」等同于「请求已走代理」。
规则分流:先覆盖实际请求,再按日志补齐
当终端已连接到代理端口,下一步才是核对域名规则。Anthropic 服务端点可能随产品版本、登录流程和功能调整而变化,因此规则不宜只凭旧文章中的固定清单一次写死。可以先检查连接记录中 Claude Code 实际访问的主机名,再决定是否将其加入 Anthropic 相关策略。若配置已有供应商规则集或 AI 服务规则组,优先复用现有结构,避免新增名称相近、实际出站却不同的多个组。
以下片段仅用于说明规则结构。ANTHROPIC 必须替换为配置中真实存在的策略组名称;若使用的是订阅生成的组,应保持大小写和拼写一致。把规则放在会提前匹配目标流量的位置,并确认它位于宽泛的兜底规则之前;如果规则被更早的匹配项截走,新增在文件末尾的条目可能根本不会生效。
rules:
- DOMAIN-SUFFIX,anthropic.com,ANTHROPIC
- DOMAIN-SUFFIX,claude.ai,ANTHROPIC
- MATCH,PROXY
这只是示意,不代表每个人都需要原样添加所有后缀,也不意味着所有相关连接都必然属于同一域名。应依据日志中实际出现的主机名确认规则是否命中,并检查账户登录、API 请求及其他功能是否使用不同的服务端点。若命中后仍然超时,可临时在策略组中选择一个稳定节点进行对照;若切换节点没有改善,而日志显示连接根本没有走预期规则,就应继续修正匹配逻辑,而不是无止境地测速。
按现象排查超时、登录失败与连接中断
如果 Claude Code 启动时提示连接超时,先在 Clash 中确认核心是否正常、目标端口是否监听,再检查当前终端的代理变量有没有拼错端口。可用系统的端口检查工具确认本机端口状态,但仅仅看到端口开放仍不足以证明远端访问成功;最终还应同时观察 Claude Code 的报错和 Clash 的连接日志。若日志没有对应请求,问题更可能发生在进程未使用代理、代理变量未继承或本机代理无法接收请求的环节。
如果网页登录成功,但终端仍停在授权或初始化阶段,应关注授权流程中的浏览器与 CLI 是否使用了不同网络路径。浏览器可能受系统代理控制,CLI 却仍然直连;反过来,CLI 走代理而浏览器回调受企业网络策略限制,也可能导致登录没有闭环。此时先从同一终端重试并检查新连接,再确认回调页面是否完成、终端是否收到结果。不要反复删除凭据或重装程序来掩盖网络路径不一致。
若连接日志显示命中了预期策略组但请求依然失败,可换一个已知可用的出站做对照,并检查节点连通性、DNS 解析、系统时间以及本机防火墙或安全软件是否拦截了进程。开启 TUN 可以让不读取代理变量的程序也经由系统级虚拟网卡处理,但它会影响更多应用,排查难度和权限要求也更高。使用前应确认没有与其他 VPN、公司设备管理策略或现有网络过滤器冲突,首次验证建议先用系统代理或终端变量完成。
若错误是认证、账户或权限提示,而非网络超时,不能默认通过更换节点就能解决。确认账户状态、API 或订阅配置、服务可用范围以及 Claude Code 当前版本要求;公司或学校网络还需遵守相应管理规定。反复出现 TLS 证书错误时,不要关闭证书校验来求快,应检查系统时间、代理链路、证书拦截策略和安全软件配置。定位过程最好一次只变更一个因素,并记录变更前后的规则命中、节点与错误信息,才能避免把多个问题混在一起。
建立可复现的 Claude Code 代理工作流
稳定使用的关键不是把所有流量长期切到全局代理,而是让配置路径清楚、修改可回滚、故障可观测。建议先固定一个正在使用的 Clash 配置和策略组,为 Claude Code 保留一组明确的终端启动方式;确认运行正常后,再决定是否将环境变量写入 Shell 配置文件。写入启动文件前,先在临时终端验证代理地址和端口正确,避免导致其他命令行工具也访问一个已经变更的本地端口。
需要暂时关闭代理时,可以在当前会话中清除相关变量,或关闭 Clash 系统代理;但应确认两种设置不会相互覆盖。设置了 NO_PROXY 时,只把确实需要绕过代理的本地主机或内网地址加入列表,不要使用过于宽泛的值,否则可能让本应走代理的请求意外直连。容器、远程 SSH 和 Dev Container 也各自拥有独立的网络环境:宿主机上的 127.0.0.1 通常指向宿主机自身,而容器中的同一地址指向容器本身,不能直接照搬本机配置。
与只提供简单系统代理开关、缺少可读连接日志的客户端相比,Clash 系客户端配合 Mihomo 内核,可以更直观地查看规则命中、策略组和出站连接;但具体功能取决于客户端版本、内核与配置,并非每个界面都完全相同。按照本文先验证端口、再设置终端变量、最后核对规则日志的顺序,比盲目切换全局模式更容易定位 Claude Code 的连接问题。若你希望用统一界面管理配置并查看连接状态,可前往下载 Clash V.CORE 适配的客户端,并根据自己的系统与使用场景选择合适方案。