Claude Code 在终端中无法登录、调用时频繁超时,或者浏览器能打开相关服务而命令行始终失败,问题不一定出在账号或代码上。终端程序通常不会自动继承 Clash 图形客户端的系统代理设置,实际请求可能仍在直连;即使终端已设置代理,Clash 规则也可能把相关域名分配到直连策略。本文从连接路径入手,介绍如何检查 Clash 监听端口、设置终端代理变量,并通过请求和连接日志确认流量是否按预期转发。
先弄清 Claude Code 的连接路径
Claude Code 发起请求时,流量大致经过三个环节:终端进程读取代理环境变量,将请求交给本机 Clash 监听端口,再由 Clash 根据当前模式和规则选择节点或直连。任何一环不匹配,都可能表现为连接超时、TLS 错误、登录失败或请求一直等待。
需要特别区分系统代理和终端代理。Clash Verge、Clash Verge Rev 等客户端开启系统代理后,通常会配置操作系统的代理入口,但命令行程序是否使用它,取决于程序自身的网络库。终端里的 Claude Code 不一定会自动读取系统代理,因此显式设置 HTTP_PROXY 和 HTTPS_PROXY 往往更容易验证,也更便于只对当前终端会话生效。
另外,环境变量只负责把请求交给代理,并不决定最后使用哪个节点。请求到达 Clash 后,还要由配置中的规则和策略组选择出口。如果目标域名命中直连规则,终端变量即使配置正确,流量仍可能直连;如果规则已命中代理组,但该组选择了不可用节点,也会出现超时。
选择客户端并确认代理端口
桌面系统可使用 Clash Verge 或 Clash Verge Rev 管理 Mihomo 内核配置;其他兼容 Mihomo 的客户端也可以完成相同设置。重点不在客户端名称,而在于当前配置是否已启动、是否启用了本地代理端口,以及系统防火墙是否允许本机程序访问该端口。手机端的 Clash for Android 更适合管理移动设备流量,不能直接替代电脑终端上的本地代理服务。
打开客户端的设置或端口信息页面,找到 Mixed Port、HTTP Port 或类似字段。常见端口是 7890,但不同配置完全可能使用其他端口;请以客户端实际显示的值为准。混合端口通常同时接受 HTTP 和 SOCKS 请求,适合先用于终端环境变量。若只看到 SOCKS 端口,不要把它误当成 HTTP 端口使用。
| 检查项目 | 应确认的内容 | 常见问题 |
|---|---|---|
| 配置状态 | 客户端已启动,当前配置已成功加载 | 配置解析失败或仍在使用旧配置 |
| 监听地址 | 终端与 Clash 在同一台电脑时优先使用 127.0.0.1 | 误填局域网地址,或端口只绑定到其他接口 |
| 监听端口 | 与客户端展示的 Mixed Port 或 HTTP Port 一致 | 沿用默认端口,但配置实际使用了其他端口 |
| 策略组状态 | 用于相关域名的策略组中已选可用节点 | 策略组未选择节点,或当前节点无法连接 |
| 路由规则 | 相关请求命中预期的代理策略 | 域名被直连规则或更靠前的规则截获 |
在客户端中切换到可用配置和节点后,先通过客户端的延迟测试确认节点具备基本连通性。延迟测试只能说明测试目标可达,并不能证明 Claude Code 所需的每个服务都可用;后续仍需要观察真实请求的规则命中结果。
为终端配置代理变量
终端代理变量一般由当前 shell 进程及其启动的子进程继承。推荐先使用临时设置进行验证:关闭该终端窗口后,设置会自动失效,不会影响其他程序。下面的示例假设 Clash 的 HTTP 或混合端口为 7890;若你的端口不同,请替换端口数字。
Windows PowerShell
在启动 Claude Code 的同一个 PowerShell 窗口中设置变量。HTTP_PROXY 和 HTTPS_PROXY 都填写本地代理地址;这里的 http:// 表示终端到本地 Clash 的代理协议,不代表目标网站使用明文 HTTP。通过代理访问 HTTPS 站点时,客户端会在代理连接上建立隧道。
$env:HTTP_PROXY = "http://127.0.0.1:7890" $env:HTTPS_PROXY = "http://127.0.0.1:7890" $env:http_proxy = "http://127.0.0.1:7890" $env:https_proxy = "http://127.0.0.1:7890" claude
设置后应在同一个窗口运行 claude。如果已经打开了 Claude Code 交互会话,环境变量不会自动注入到已运行进程;先退出该会话,再从配置好变量的终端重新启动。对于希望长期使用的用户,可以将设置加入 PowerShell 配置文件,但建议确认临时方式有效后再做持久化,避免把不再使用的端口留在环境中。
macOS 与 Linux
在 Bash、Zsh 等常见 shell 中,可以用 export 设置当前会话的代理变量。执行后从同一终端启动 Claude Code;如果使用 IDE 内置终端,也要在 IDE 的终端面板中设置,或确保 IDE 启动时继承了相同环境。
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
如果只希望特定终端会话使用代理,不要急着把变量写入 ~/.zshrc、~/.bashrc 或其他全局启动文件。若确认需要长期设置,写入文件后要重新打开终端,或在当前窗口重新加载对应配置。某些工具还会识别 ALL_PROXY,但开始排查时优先明确设置 HTTP 与 HTTPS 变量,减少不同客户端对 SOCKS 和大小写变量支持差异造成的混淆。
没有代理认证时,地址通常不需要用户名和密码。若你的本地代理端口要求认证,应使用对应客户端支持的凭据格式,并避免把包含密码的代理 URL 粘贴到公开日志、截图或代码仓库中。普通桌面 Clash 的本地监听通常不启用认证,不要为了照抄网上示例而自行添加并不存在的凭据。
验证代理是否生效并检查分流
设置好变量后,先不要直接判断 Claude Code 是否能完成登录。可以用 curl 对服务端发起一个独立请求,确认终端能否连到本机代理,并由代理建立 HTTPS 连接。下面示例中的接口可能返回鉴权错误或其他 HTTP 状态码;在没有配置 API 凭据时,收到服务端响应并不等于请求失败,重点是观察是否能完成连接,而不是要求返回特定业务结果。
curl -v --proxy http://127.0.0.1:7890 https://api.anthropic.com/
如果出现无法连接 127.0.0.1:7890,优先检查端口是否写错、Clash 是否正在运行,以及当前客户端是否实际开放了该监听端口。如果本地代理连接成功,但出现 DNS、TLS 握手或连接超时,再查看 Clash 的运行日志和节点状态。命令输出中的 401、403、404 等 HTTP 状态码说明远端已返回响应,通常应与“无法建立网络连接”区分处理;它们可能涉及接口路径、认证或服务端策略,不宜仅靠更换 Clash 端口解决。
随后打开 Clash 的连接(Connections)页面或日志,在 Claude Code 发起一次请求时观察新连接。重点查看目标域名、规则来源、策略组名称和连接状态。如果没有出现相关连接,可能是终端进程没有继承代理变量、请求走了其他网络组件,或者请求尚未实际发出;如果连接出现但命中直连,则应检查规则顺序与目标域名匹配;如果命中代理组却失败,则检查策略组当前选择和节点可用性。
对于分流配置,可以先用客户端现有规则进行验证,不必立即重写整份配置。确实需要增加专用规则时,可在配置允许编辑规则的前提下,将已确认需要代理的域名规则放在会提前匹配它们的直连规则之前,并使用实际存在的策略组名称。域名范围应以客户端连接日志和服务实际请求为依据;Claude Code 的认证、API、控制台及辅助服务可能涉及不同主机,具体请求也可能随版本变化,不宜把一份固定域名清单当作永久完整的配置。
rules: - DOMAIN,api.anthropic.com,你的代理策略组 - DOMAIN-SUFFIX,anthropic.com,你的代理策略组 - MATCH,你的默认策略组
这段内容只是规则结构示意,不是可以直接覆盖现有配置的完整文件。请把 你的代理策略组 替换为配置中真实存在的策略组名称,并留意规则顺序:Clash 通常按规则列表顺序匹配,先命中的规则会决定后续策略。若配置由订阅托管,直接修改订阅文件可能在更新后丢失;更稳妥的做法是使用客户端支持的规则覆写或配置合并功能,并在修改后确认配置成功加载。
按症状定位常见问题
代理变量看起来正确,并不代表所有连接故障都来自代理。根据终端错误信息、独立请求结果和 Clash 连接日志逐项定位,通常比反复重装工具更有效。
- 提示连接被拒绝:检查 Clash 是否运行、监听端口是否正确,以及是否把 HTTP 代理变量指向了仅支持其他协议的端口。
- curl 可连接,Claude Code 仍超时:确认 Claude Code 是从同一个已设置变量的终端启动;检查程序是否使用了不同的网络请求组件,并在 Clash 连接记录中观察它实际访问的目标。
- 连接日志显示 DIRECT:说明请求已到达 Clash,但规则将其分配为直连。检查目标域名与规则顺序,避免默认直连规则先于需要代理的规则匹配。
- 连接日志显示代理组但仍超时:检查该组当前选择的节点、节点连通性和目标服务响应,不要把策略组命中误认为请求一定成功。
- 出现 TLS 或证书错误:确认系统时间正确,检查是否存在企业网络的 HTTPS 检查或本机证书配置;不要为图省事关闭证书验证,这会降低连接安全性。
- 登录能打开,调用仍失败:浏览器登录和终端 API 请求可能经过不同网络路径。分别检查终端中的代理变量,以及登录、API 请求在 Clash 日志中的规则命中情况。
完成设置后,保留一套可复现的检查流程:确认 Clash 当前配置与端口、在启动 Claude Code 的终端检查变量、用 curl 验证代理连通,再通过 Clash 日志确认实际规则和策略组。这样出现网络波动时,可以快速判断问题发生在终端环境、规则分流还是节点出口,而不必把所有故障都归结为 Claude Code 本身。