Claude Code 是 Anthropic 面向终端工作流推出的 AI 编程工具,可以在项目目录中理解代码、协助修改文件并执行开发任务。对国内开发者来说,安装后常见的障碍未必是命令本身:浏览器能打开网页,终端里的 Claude Code 却登录失败、请求超时,或者长时间停在等待响应。一个常见原因是桌面代理只影响系统代理感知应用,终端进程并没有自动使用代理。本文以 Clash Verge 为例,带你按「确认端口、启用代理、设置环境变量、验证请求」的顺序排查,并说明分流规则、节点选择与常见错误的处理方法。

本文讨论的是本机网络配置,不提供账号注册、地区限制规避或服务可用性保证。请先确认你所在地区能够合法使用相关服务,并遵守 Anthropic 的服务条款、所在单位的网络政策及当地法律法规。Clash Verge 的不同版本和配置模板在界面名称、端口与规则上可能有所差异;下文出现的端口仅作示例,实际设置应以你自己的客户端为准。

先分清问题在哪:Claude Code、终端与 Clash Verge

Claude Code 从终端启动后,会以当前用户和当前 shell 会话的环境运行。它发出的网络请求是否经过代理,取决于程序对代理环境变量的支持、启动时继承到的变量,以及 Clash Verge 是否正在监听对应端口。仅仅在托盘或主界面看到「系统代理已开启」,不能证明每个命令行程序都走了代理;浏览器能登录,也不代表终端中的 CLI 自动使用了相同路径。

建议先把故障拆成三层。第一层是本机代理是否可用:Clash Verge 是否已启动、配置是否加载、端口是否正在监听。第二层是终端是否把请求交给代理:Claude Code 所在的 shell 是否读取了代理变量,IDE 集成终端是否继承了相同环境。第三层才是策略组与远端服务:请求是否命中预期规则、节点是否能建立 TLS 连接,以及服务端是否返回认证或限流错误。按这个顺序排查,比一开始不断更换订阅、节点和应用版本更容易定位问题。

表现 优先检查 通常意味着什么
浏览器正常,CLI 超时 终端环境变量、shell 会话 终端可能没有使用系统代理
连接面板看不到相关请求 端口、变量值、进程启动方式 请求可能没有进入 Clash Verge
面板显示 DIRECT 规则顺序、规则集与覆写 请求进入内核,但被分配到直连
返回 401、403 或限流提示 账号状态、授权与服务端响应 不一定是代理链路故障

开始操作前,打开 Clash Verge 的设置页,找到当前配置使用的 HTTP 或 mixed-port。常见示例是 7890,但配置可能改成其他数字;不要照抄示例端口。mixed-port 通常同时接受 HTTP 与 SOCKS5 入站连接,便于不同命令行工具使用。若当前配置只开放 SOCKS 端口,环境变量协议也要与之匹配,不能把一个 SOCKS 端口直接写成 HTTP 代理地址。

在 Clash Verge 中启用代理并确认端口

先在 Clash Verge 中导入你有权使用的配置或订阅,并确认配置已经成功更新。随后选择合适的代理模式。一般排障可以先从规则模式开始:国内常用站点按现有规则直连,需要代理的目标由策略组处理。全局模式会让更多流量统一经过代理,适合短时间做对照测试,但不建议在不了解影响范围时长期当作默认设置。不同版本的 Verge 可能把模式入口放在首页、代理页或设置区,名称略有不同。

  1. 确认 Clash Verge 正在运行,且当前配置不是空配置或已过期配置。
  2. 查看端口设置,记下 HTTP 或 mixed-port 的实际端口号,并确认监听地址可供本机访问。
  3. 打开连接或日志面板,后续启动 Claude Code 时观察是否出现新连接以及对应的策略结果。
  4. 如果日志显示请求命中错误策略,先检查规则与策略组,再考虑更换节点;避免同时大幅修改多个设置。

通常本机使用 127.0.0.1 作为代理地址。不要为了让本机终端使用代理而随意把监听地址开放到局域网;扩大监听范围可能让同一网络中的其他设备也能访问代理端口。只有在明确需要其他设备连接、理解防火墙与访问控制影响时,才调整监听地址,并限制可访问来源。

排障提示:记下「代理协议、主机、端口、当前模式」四项。例如 mixed-port 为 7890 时,HTTP 代理地址才可能是 http://127.0.0.1:7890。如果你的配置端口不同,就使用实际值;连接面板中能看到请求,只能说明请求到达了 Clash 内核,还要继续核对策略是否符合预期。

设置终端环境变量:让 Claude Code 使用本机代理

在 macOS、Linux 或类 Unix shell 中,可以先在当前终端临时设置代理,再从同一个终端启动 Claude Code。以下示例假设你的 mixed-port 是 7890;请替换为 Verge 设置页显示的端口。

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=http://127.0.0.1:7890

通常 HTTPS 请求会读取 HTTPS_PROXY,但不同运行时和依赖库读取变量的方式不完全相同,因此可以同时设置大写与小写形式,提升兼容性:

export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"

设置后,在当前终端里执行 env | grep -i proxy,确认变量存在且端口正确,再启动 Claude Code。若只想验证一次,不希望变量留在当前 shell,可以使用命令前缀的方式:

HTTPS_PROXY=http://127.0.0.1:7890 \
HTTP_PROXY=http://127.0.0.1:7890 \
claude

不同安装方式下启动命令可能不同;如果你使用的命令不是 claude,请保留自己的实际启动命令。需要长期使用时,可以把变量放进 ~/.zshrc、~/.bashrc 等 shell 配置文件,再打开新终端或重新加载配置。不要把带有账号凭据的代理 URL 写入公开仓库、项目配置或截图;也要留意环境变量可能被子进程继承。

Windows PowerShell 可以在当前窗口中临时设置环境变量,端口同样要替换成实际值:

$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:ALL_PROXY = "http://127.0.0.1:7890"
claude

PowerShell 关闭后,这些临时变量通常不会保留。若你从 VS Code、其他 IDE 或任务计划中启动 Claude Code,IDE 可能在环境变量设置之前就已运行,因而它创建的集成终端不会自动获得后来添加的变量。可以完全退出并重开 IDE,或直接在已设置变量的终端中运行命令。Windows 命令提示符使用的临时变量语法与 PowerShell 不同,不要把两种 shell 的写法混用。

NO_PROXY 用于指定不应经过代理的地址,适合本机回环、开发服务器或明确需要直连的内网域名。例如:

export NO_PROXY=localhost,127.0.0.1,::1
export no_proxy="$NO_PROXY"

如果把过宽的域名或通配符写入 NO_PROXY,可能导致本应代理的请求绕过 Clash;反过来,内网服务没有排除时,访问本地开发环境也可能变慢或失败。先只保留确有需要的例外。遇到认证问题时,不要通过把密钥或密码拼进代理 URL 来试错,也不要在终端输出中公开令牌。

验证连通性与分流:看变量、请求和策略结果

完成变量设置后,不要马上把「命令能启动」当作链路正常。先核对变量值,再用你信任的 HTTPS 测试地址检查代理端口是否能响应。测试站点的可达性会受地区、DNS 和站点状态影响,因此单个站点失败不能单独证明 Clash 故障。更可靠的方法是结合命令行结果与 Clash Verge 连接面板判断:发起请求时是否出现连接、连接是否命中预期策略组、是否完成 TLS 建连。

如果本机安装了 curl,可通过其代理参数做基础连通性测试。示例仍使用 7890 端口,并将测试地址替换为你平时能够正常访问、且允许用于连通性检查的 HTTPS 地址:

curl -I --proxy http://127.0.0.1:7890 https://example.com

测试过程中观察几种结果:连接被拒绝通常指向端口错误、Clash 未启动或监听地址不匹配;长时间等待更可能涉及节点链路、DNS 或策略;若能收到 HTTP 响应,说明这条测试请求至少通过代理建立了连接,但并不能证明 Claude Code 的所有请求都已成功。此时应启动 Claude Code 并查看面板实际出现的主机名与策略,不要仅凭预设域名列表写规则。服务端域名、登录流程和依赖请求可能随着版本改变,实际连接记录才是当前环境的依据。

规则模式下,优先使用订阅已有的策略组与规则,不要把宽泛的域名后缀规则随意插到规则列表最前面。若确认 Claude Code 发出的请求在连接面板中被送往 DIRECT,再依据日志中的实际主机名,在受支持的规则覆写入口中添加精确规则,并指向合适的代理策略组。规则类型、语法与覆写位置会因配置而异;修改前备份当前配置,保存后重新加载,再用同一操作复测。不要直接编辑订阅生成的文件后就假设改动会长期保留,订阅更新可能覆盖本地修改。

核对项 正常时应观察到什么 异常时的下一步
环境变量 地址、协议与端口和 Verge 设置一致 检查 shell 类型、变量拼写和进程启动位置
连接面板 启动 CLI 后能看到对应的新连接 确认变量是否被程序读取,检查是否使用了其他网络栈
策略命中 策略组与预期一致,节点可建立连接 检查规则顺序、规则集更新与覆写结果
服务响应 请求得到正常业务响应 区分认证、配额、服务端错误与纯网络超时

节点选择不必只看测速排名。Claude Code 的交互既有短请求,也可能包含持续时间较长的响应;稳定建立连接、较少丢包和高峰时段表现可靠,往往比一次性的峰值速度更重要。可以选一两个延迟与连接表现较稳定的节点,在相同网络、相同测试步骤下比较,并记录失败发生的时间、错误类型和面板策略。若某节点已经命中代理但仍频繁断开,先切换到另一条稳定线路复测;若换节点后完全没有连接记录,应回到环境变量和路由层排查。

判断原则:错误码能提供线索,但不要把所有失败都归结为「代理不通」。连接拒绝、TLS 超时、401/403、429 和服务端 5xx 的处理方向不同。记录完整报错、发生时间和连接面板中的策略结果,排障时比反复重装客户端更有效;分享日志前先移除账号标识、令牌和订阅信息。

常见问题与处理建议

开启 Clash Verge 系统代理后,为什么 Claude Code 还是超时?

系统代理主要影响遵循操作系统代理设置的应用,命令行程序不一定会读取它。先在启动 Claude Code 的同一终端设置 HTTPS_PROXY,检查地址与端口,再通过连接面板确认请求是否进入 Clash。若面板没有对应连接,优先检查变量有没有传到当前进程;若连接出现但命中直连,再检查规则。

浏览器可以登录,终端登录仍失败,应该先看什么?

先确认终端与浏览器使用的网络出口是否一致,再核对当前终端中的代理变量和连接策略。浏览器可能使用系统代理,而 CLI 使用独立网络连接;也可能是认证状态、账号权限或服务端响应导致失败。若错误明确指向授权或账号状态,应按官方提示处理,不要把这类业务错误当成更换节点就能解决的网络问题。

从 VS Code 集成终端启动时没有代理,外部终端却正常怎么办?

确认外部终端与集成终端是否使用同一种 shell,以及启动文件是否相同。IDE 可能在代理变量设置前就已启动,因此它创建的子进程仍然拿不到新变量。完全退出并重开 IDE 后再验证,或者先在集成终端里显式设置变量。不要只看系统设置或另一个终端窗口来推断当前进程的环境。

需要开启 TUN 模式吗?

若 Claude Code 能读取代理环境变量,通常可以先用「规则模式 + 显式环境变量」完成验证。TUN 会在更底层接管流量,适合不支持代理变量的程序,但也可能与其他 VPN、虚拟网卡或网络过滤软件冲突。只有确认普通代理方式无法覆盖目标进程,并了解系统权限与路由影响后,再单独测试 TUN;出现网络异常时及时关闭并恢复原设置。

相较于只依赖系统代理、却无法确认命令行流量是否出站的简化工具,Clash Verge 能通过代理端口、规则模式、策略组和连接面板,让你逐项核实终端请求走向;配合明确的环境变量,排查登录失败与超时会更有依据。若你还需要在 Windows、macOS 等平台管理规则与代理配置,可以先了解适合自己系统的客户端,再按实际使用环境选择。

前往下载 →