Claude Code终端访问不稳定?用Clash Verge配置代理指南
浏览器能用,Claude Code 为什么仍会超时? 详解
在终端里运行 Claude Code,浏览器可以正常打开网页,却遇到登录转圈、请求超时或反复重试,并不一定说明代理节点不可用。关键区别在于:浏览器通常会遵循系统代理设置,而终端中的命令行程序是否使用代理,取决于它自己的网络实现、启动环境和系统网络配置。也就是说,Clash Verge 显示已开启系统代理,不代表当前 shell 启动的 Claude Code 一定经过了 Clash。
排查时先分清故障发生在哪一段。安装或更新阶段可能访问包管理器和其分发站点;首次认证可能打开浏览器,并通过本机回调完成登录;实际对话则需要连接 Claude 的服务端点。不同阶段访问的域名和错误表现并不完全相同。若只针对一个域名添加规则,可能出现登录完成但发送提示词失败,或 API 请求通了但更新仍然超时的情况。具体连接目标会随客户端版本和认证方式变化,最好以 Clash Verge 的连接记录和 Claude Code 自身报错为准。
还要注意错误类型的区别:连接超时、DNS 解析失败、TLS 握手失败属于网络链路问题的可能性较高;收到明确的 401、403 或配额提示时,连接可能已经到达服务端,应进一步核对账号、认证状态、组织策略或服务可用性。单纯换节点或不断重新登录,不仅不一定解决问题,也会让排查线索变得混乱。
先保护凭据:Claude Code 的登录信息、API Key 和订阅配置都应按敏感数据处理。不要把完整终端日志、环境变量输出或带令牌的配置文件发到公开论坛;分享日志前先检查并遮盖密钥、邮箱及本机路径。
先让 Clash Verge 配置处于可用状态 全面解析
在调整终端之前,先确认 Clash Verge 本身已经成功启动 Mihomo 内核,并且导入的配置文件没有报错。打开客户端后检查当前配置或订阅是否处于已选中状态,再进入代理页面确认策略组里确实有可选节点。若客户端正在使用规则模式,测试用的目标域名还必须匹配到代理策略;仅仅看到节点列表有内容,并不能证明 Claude Code 的请求会选中这些节点。
如果你刚更新订阅,先等待配置加载结束,再确认代理组没有停留在不可用节点,也没有因为测速失败而显示空组。首次排障时建议暂时手动选择一个已知可用的节点,不要一开始就使用自动测速组。自动选择适合日常使用,但节点变化、测速失败或连接复用可能让长请求的表现不稳定;固定节点更容易判断问题是否来自规则、端口或终端环境。
接下来查看 Clash Verge 使用的本地代理端口。不同版本、配置文件或用户自定义设置可能使用不同端口,因此不要只照抄网上的默认数字。客户端设置页面通常能找到 HTTP、SOCKS 或混合端口信息;若使用混合端口,它一般可同时处理常见的 HTTP 与 HTTPS 代理请求。记下实际端口,并确认 Clash Verge 正在运行,否则终端即使设置了代理变量,也只会连接到一个没有程序监听的本地端口。
模式也会影响结果。规则模式下,目标域名依据配置规则选择代理或直连;全局模式会把大多数流量交给所选代理,适合短时间验证「终端是否能通过本地代理发出请求」,但不宜当作长期排障的唯一方法。测试成功后应回到适合日常使用的规则模式,并按连接记录补充或修正规则。若使用 TUN 接管,也要先确认系统权限和路由已正常建立;不要同时反复切换系统代理、TUN 和多个网络工具,以免把故障来源叠在一起。
实用顺序:先在客户端确认内核、配置、节点和端口,再用终端显式指定代理做一次连通性测试。显式代理测试成功后,才继续判断 Claude Code 是否继承了该设置;这样可以把「Clash 没有通」与「应用没有使用代理」分开验证。
给当前终端设置代理并验证请求 一次讲透
最容易复现的办法,是在启动 Claude Code 的同一个终端会话中设置代理环境变量。以下示例假设本机混合端口是 7897;如果你在 Clash Verge 中看到的是其他端口,请替换成实际值。设置环境变量只影响当前 shell 及其启动的子进程,不会自动修改所有应用的系统代理,也不等于永久写入操作系统设置。
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897
export ALL_PROXY=http://127.0.0.1:7897
在 macOS、Linux 或常见的 Bash、Zsh 终端中,执行上面的命令后,可先用 curl 测试 HTTPS 请求是否能够建立连接。若终端提示代理连接被拒绝,优先核对端口和客户端状态;若代理连接已建立但目标请求超时,则继续查看节点、规则和 DNS。测试服务返回非成功状态码,并不必然代表代理失效:某些 API 地址不接受没有认证信息的普通探测请求,判断时要同时看是否出现了代理连接错误、TLS 错误或服务端响应。
curl -I --max-time 15 https://api.anthropic.com
Windows PowerShell 使用当前会话变量的写法不同。请在启动 Claude Code 的同一个 PowerShell 窗口中设置变量;若你从 Windows Terminal、IDE 内置终端或 WSL 启动程序,也要确认变量是在实际运行命令的那个环境中设置的。PowerShell 窗口中的设置不会自动传给已经打开的另一个终端,也不会回写到所有用户的永久环境变量。
$env:HTTP_PROXY = "http://127.0.0.1:7897"
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
$env:ALL_PROXY = "http://127.0.0.1:7897"
代理 URL 的协议应与 Clash Verge 中对应端口的类型匹配。若使用的是 HTTP 或混合端口,通常可按上例使用 http://;不要因为目标网站是 HTTPS,就擅自把代理地址改成 https://。代理协议描述的是终端如何连接本地代理服务,与最终访问的网站使用 HTTPS 是两件事。SOCKS 端口则应使用客户端支持的 SOCKS URL 格式,并以所用命令行程序对代理变量的支持情况为准。
完成基础测试后,再从同一终端启动 Claude Code。若通过环境变量启动后恢复正常,基本可以确认原先是终端进程没有继承代理设置。要让设置在以后打开终端时仍然生效,可以按实际使用的 shell,将命令写入相应的启动文件;但建议先确认当前会话确实可用,再做持久化。共享电脑、CI 环境或临时开发容器中,不要将代理地址和任何认证密钥一起写进可能被提交到版本库的脚本。
用连接记录定位规则、模式与环境问题 深入理解
终端测试不通时,不要只凭浏览器能不能打开网页下结论。先在 Clash Verge 的连接页面或日志页面观察你发起测试时是否出现对应连接,重点查看目标主机、命中的规则、所选策略组、最终节点和连接结果。不同内核或客户端版本显示的字段可能略有差异,但判断思路相同:如果完全没有相关记录,说明请求可能没有到达 Mihomo;如果有记录但走了直连或错误策略组,优先检查规则与模式;如果记录显示已选择节点但连接失败,再检查节点质量、DNS、TLS 和网络环境。
| 表现 | 优先检查 | 处理方向 |
|---|---|---|
| 连接本地代理时报拒绝连接 | 端口是否正确、Clash Verge 是否正在运行 | 对照客户端显示的端口重新设置环境变量,并确认监听端口类型。 |
| 浏览器正常,终端测试超时 | 终端变量是否设置在当前会话、应用是否支持代理变量 | 在启动 Claude Code 的同一个终端中显式设置代理后重试。 |
| 连接记录显示命中直连规则 | 当前是否处于规则模式、域名规则是否覆盖目标 | 根据真实连接记录修正规则,避免未经核实地堆入大量域名。 |
| 客户端显示已选择节点,但仍然超时 | 节点连通性、DNS 解析、目标服务响应 | 固定一个已知可用节点复测,并结合终端错误码判断是否已到达服务端。 |
| 登录成功,但发送请求失败 | 认证阶段和模型请求阶段的目标域名是否不同 | 在失败时查看连接记录,再针对实际请求检查分流,而不是只验证登录页面。 |
规则模式下,如果日志确认某个 Claude 请求被错误地直连,可以考虑在当前配置允许的情况下,为相关域名添加指向正确代理策略组的规则。常见写法的思路是使用域名后缀匹配 Anthropic 服务域名,并把它交给你实际存在的策略组;策略组名称必须与配置中的名称完全一致。不同订阅的规则顺序和策略组命名并不相同,新增规则应放在可能提前匹配该流量的兜底规则之前。若配置由订阅自动更新,优先使用 Clash Verge 提供的覆写或合并方式,避免直接修改远端订阅文件后被刷新覆盖。
不建议为了「省事」把所有流量长期切到全局模式,也不建议在没有日志依据时一次性加入许多认证、遥测和更新域名。过宽规则可能让本来应直连的服务绕行代理,也会使后续排障无法判断真正需要的范围。登录、更新和对话可能涉及不同请求;先分别复现,再从连接记录中确认实际域名,规则才更容易维护。若网络连接已经成功而服务端返回身份验证或权限错误,继续扩大代理规则通常不会解决问题,应转向检查账户和访问资格。
还需要留意启动方式带来的环境差异:从终端直接运行、从 IDE 集成终端运行、通过脚本或任务运行,可能使用不同的 shell 配置和变量继承链。先在启动 Claude Code 前检查代理变量是否存在,再观察客户端连接记录。排查完成后,若代理环境变量只为这次测试临时设置,可在关闭终端后自然清除,或在当前会话中删除对应变量;需要长期使用时,则记录清楚端口、启动方式和规则调整,方便日后恢复与复查。
有些命令行工具只遵循环境变量,有些则依赖系统网络代理或应用自身的代理选项,因此只在 Clash Verge 中打开「系统代理」未必足够;而单独设置环境变量又需要注意启动进程的终端范围。Clash Verge 的优势是能把本地端口、策略组和连接记录放在同一处检查,既可先用显式代理快速验证,也能在确认流量后回到规则模式按需分流。若你希望从可靠的客户端安装开始,减少端口、配置和日志排查中的不确定性,可以前往下载并按本文步骤逐项验证。