前言:先判断问题出在哪一层
Claude Code在终端中运行,连接模型服务时使用的是命令行进程的网络请求。浏览器能够打开网页,并不代表终端里的 Claude Code 也自动经过 Clash:有些客户端只设置了系统代理,有些终端没有继承代理环境变量,还有些流量会被规则分到直连。因此,遇到登录失败、请求超时或反复重试时,不要急着重装工具,先确认代理是否可用、终端是否拿到了代理设置,以及相关域名是否被分流到正确策略组。
本文以桌面端 Clash 客户端(如 Clash Verge、Clash Verge Rev 或其他基于 Mihomo 的客户端)为例。不同版本的菜单名称可能略有区别,但核心步骤相同:确认配置和节点可用,找到本地 HTTP 代理端口,再让启动 Claude Code 的终端进程使用这个代理。配置过程中请使用自己有权访问的网络服务,并遵守 Claude Code 与网络服务提供方的使用条款。
排查目标
确认终端请求可以到达代理端口,Claude Code 相关流量使用可用节点,并保留其他国内服务的正常直连能力。
1准备 Clash 配置与代理端口
先打开 Clash 客户端,确认当前配置已加载,节点列表中有可用节点,并且客户端处于运行状态。若配置尚未导入,需要从你信任的服务提供方获取订阅或配置文件,再通过客户端的配置页面导入。订阅链接通常带有账户凭据,不要粘贴到公开工单、截图或代码仓库中;分享日志前也应检查并遮盖订阅地址、令牌和个人信息。
确认运行模式与本地端口
优先使用规则(Rule)模式,这样 Clash 可以按规则选择代理或直连;调试期间也可以临时切换到全局模式,验证是否属于规则分流问题。全局模式会让更多应用流量通过代理,确认原因后应切回适合日常使用的模式。不要把“系统代理已开启”误认为“所有终端程序都已代理”:终端是否使用代理,还取决于客户端设置、终端环境变量和应用本身的网络实现。
在 Clash 的设置或端口信息页查看 HTTP、SOCKS 或 mixed-port 监听端口。许多配置会使用 7890 作为 mixed-port 示例,但实际端口以客户端显示为准;如果启用了端口认证,也必须按客户端要求填写。终端变量通常优先使用 HTTP 代理地址,例如 http://127.0.0.1:7890。仅当你确认本地 SOCKS 端口可用时,才将地址改为对应的 socks5h://127.0.0.1:端口。
先做基础连通性检查
如果 Clash 客户端没有运行、端口填错,或者监听地址并非本机回环地址,终端设置再完整也无法连接。建议先在客户端确认端口,再开始设置环境变量。
为 Claude Code 选择分流方式
使用规则模式时,检查配置中的域名规则是否将 Claude Code 依赖的服务导向可用的代理策略组。常见相关域名包括 claude.ai、anthropic.com 和 api.anthropic.com。具体请求可能随产品版本和功能变化,不要只凭域名列表判断全部流量已覆盖;更可靠的办法是在 Claude Code 发起请求时,观察 Clash 的连接记录,确认目标域名及其命中的规则和策略组。
上例中的 Proxy 必须替换为你当前配置里真实存在的策略组名称。不要把规则无条件追加到文件末尾:Clash 通常按规则顺序匹配,前面已有的更宽泛规则可能先命中。修改前备份配置,保存后在客户端检查配置是否成功加载;如报 YAML 错误,应先修复缩进、逗号或策略组名称,再进行连接测试。若使用订阅配置且不希望直接改动远程文件,可优先使用客户端支持的覆写、合并或规则追加功能。
2让终端中的 Claude Code 使用代理
最直接的方式是在启动 Claude Code 的同一个终端会话中设置 HTTP_PROXY 和 HTTPS_PROXY。这通常比只开启系统代理更明确,也方便撤销。下面命令中的端口请替换为 Clash 实际显示的 HTTP 或 mixed-port 端口;若你的客户端监听在其他地址,也要同步替换主机部分。
macOS 与 Linux:为当前终端设置
在 macOS 的 Terminal、iTerm2 或 Linux shell 中,执行以下命令后再运行 Claude Code。环境变量只对当前终端及其子进程生效,关闭该窗口后通常就会失效:
若你的终端已经打开了一段时间,而 Clash 是之后才启动的,请先确认客户端正常运行,再在该终端重新执行变量设置。也可以使用 env | grep -i proxy 查看当前 shell 中已设置的代理变量。要取消当前会话的代理,可执行 unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy。如需每次打开终端都自动设置,可将变量写入 shell 配置文件,但建议先以当前会话测试成功,再决定是否持久化。
Windows:PowerShell 当前会话
在启动 Claude Code 的 PowerShell 窗口中设置环境变量。下面设置只影响当前 PowerShell 会话及其子进程,适合先验证配置是否有效:
如果你使用 Windows Terminal、VS Code 集成终端或其他终端,务必在实际运行 claude 的那个终端里设置变量。图形客户端的系统代理开关不一定会自动传递给已经运行的终端进程。测试完成后关闭该终端即可清除当前会话设置;若你希望长期使用,可以在启动脚本中设置,而不必将代理变量写入系统级环境变量,避免其他程序意外受到影响。
避免把代理地址误当作认证信息
本机代理地址一般不需要填写 Claude 账户令牌。不要把 API 密钥、登录凭据或带认证信息的代理 URL 写进公开脚本、终端截图或版本控制仓库。若代理端口配置了用户名和密码,请按本地客户端说明保管凭据。
3验证连接并处理常见故障
设置完成后,先确认本地代理端口可连接,再启动 Claude Code 发起一次轻量请求。测试时保持 Clash 的连接记录页面打开,观察请求是否出现、是否命中预期策略组,以及所选节点是否有实际连接。不要只看终端是否显示“已连接”:代理链路、DNS 解析、节点出口和服务端响应都可能分别出问题。
使用 curl 检查终端代理
若系统已安装 curl,可以通过显式指定代理检查 HTTPS 请求能否建立。以下示例使用公共连通性测试地址,只用于验证请求路径,不代表 Claude Code 服务端一定可用:
如果命令提示无法连接代理,优先检查 Clash 是否正在运行、端口是否正确、是否被本机防火墙拦截,以及 HTTP 代理协议是否与监听端口匹配。如果请求可以返回 HTTP 响应,但 Claude Code 仍失败,则继续查看 Clash 连接记录和终端错误信息,判断目标域名是否直连、节点是否拒绝连接,或请求是否在 TLS 握手阶段超时。公共网站测试成功只证明基础代理链路可用,并不能证明 Claude Code 的全部服务域名均已正确分流。
按报错现象逐项排查
| 现象 | 优先检查 | 处理建议 |
|---|---|---|
| 连接被拒绝或无法连接代理 | 本地监听端口、Clash 运行状态 | 核对端口和协议,在客户端确认 HTTP 或 mixed-port 正在监听。 |
| 请求超时或反复重试 | 节点质量、网络稳定性、命中策略 | 在客户端切换到稳定节点,检查连接记录,并确认目标域名未被分到直连。 |
| 浏览器正常,终端失败 | 启动 Claude Code 的终端环境 | 在同一终端重新设置代理变量,确认大小写变量和端口地址正确。 |
| 部分功能可用,登录或特定请求失败 | 相关域名规则、DNS 与服务端返回 | 查看失败请求的目标域名和错误信息,不要仅凭单一域名规则推断配置完整。 |
如果请求在 Clash 中显示为 DIRECT,说明当前规则没有将该连接交给代理,或更早的规则已经匹配。根据连接记录中的实际域名,在已有配置中调整规则顺序和策略组;不要盲目添加大量未经验证的域名规则。若日志显示代理节点已接收连接但服务端仍返回错误,问题也可能来自节点出口、账户状态、服务端限制或本机时间与证书环境,单纯更换 Clash 规则未必能解决。
若 Claude Code 仍不稳定,可做一次有对照的排查:固定同一节点和终端,只改变代理变量或分流规则中的一个条件;记录每次测试的时间、错误提示和 Clash 命中结果。不要同时切换全局模式、DNS、节点和终端变量,否则很难判断哪项改动起作用。确认问题解决后,删除不再需要的临时变量,恢复日常规则模式,并检查其他国内应用是否仍按预期直连。
推荐的排查顺序
先检查 Clash 与本地端口,再检查终端环境变量,然后观察目标域名命中规则,最后排查节点、DNS 或服务端错误。每次只改一项,定位会更快。
4总结:让配置保持可控
Claude Code 的终端代理配置,关键不在于一味开启全局代理,而在于让启动它的终端确实使用 Clash 本地端口,并确认相关请求命中了可用策略组。先用会话级环境变量完成验证,再按实际需要决定是否持久化;同时保留规则模式、观察连接记录,并妥善保护订阅链接和账户凭据。这样既能缩小故障范围,也能避免为了排查一个命令行工具而影响整台设备的其他网络访问。
请注意,客户端端口、规则名称和可用节点都取决于你的实际配置。遇到版本差异时,以 Clash 客户端界面显示的设置为准;遇到服务端认证或账户相关错误,应依据 Claude Code 官方提示另行排查,不要将其一概归因于代理。