Claude Code 在国内使用时,为什么登录和请求容易失败

Claude Code 是运行在终端里的 AI 编程工具,和只在浏览器中打开网页的 Claude 使用方式不同。它可能在安装、登录、读取项目、发送提示词、执行工具调用以及接收流式输出等多个阶段访问不同的网络主机。即使浏览器能够打开 Claude 页面,也不代表当前 Shell、Node.js 进程或 Claude Code 子进程一定能访问对应的 Anthropic API

国内用户常见的表现包括:安装命令长时间停在下载阶段,执行登录命令后浏览器没有正常跳转,验证码或授权页面加载不完整,终端显示连接超时,第一次对话可以发送但长回答中途断开,或者项目分析时工具调用反复重试。这些现象不能简单归结为「节点延迟高」。如果授权页面走了代理、令牌交换却直连,或者 API 已经走代理而流式连接被另一条规则接管,同样会产生登录失败和请求中断。

从排查角度看,应该把 Claude Code 的网络行为拆成三类:第一类是安装与更新所需的 npm、GitHub 或软件分发站点;第二类是 Claude 账户、授权和控制台页面;第三类是实际推理请求涉及的 Anthropic API 及其辅助服务。Clash 的作用不是让所有流量都无条件经过代理,而是通过规则分流把这些已知业务域名交给稳定的策略组,同时让国内开发平台、局域网地址和普通国内网站保持直连。

先确认边界:本文只讨论 Clash 的本地代理、规则匹配和终端环境变量配置。请遵守所在地区的法律法规、单位网络政策以及 Anthropic 的服务条款,不要使用来路不明的账号、破解客户端或共享密钥。

准备 Clash:客户端、内核与代理端口先对齐

在开始配置前,先确认你使用的是仍能正常运行的 Clash 客户端,例如 Clash Verge RevClash VergeMihomo PartyClashX 或其他基于 Mihomo 的图形客户端。不同客户端的菜单名称可能不同,但基本组成一致:一个正在运行的核心、一份当前生效的配置、一个可用的代理策略组,以及 HTTP、HTTPS 或 SOCKS 入站端口。

打开客户端后先检查当前配置是否真的处于激活状态。很多人修改了下载目录中的 YAML 文件,却没有重新载入,或者更新订阅后本地覆写被远程配置覆盖。建议先备份当前配置,再确认主界面能看到节点、策略组和连接日志。若使用 Mihomo 内核,还应留意配置中的 mixed-portallow-lanmode 与 DNS 设置是否符合自己的网络环境。

终端工具最容易忽略的是代理端口。浏览器可能读取系统代理,而 Claude Code 使用的终端进程通常只会读取自身支持的环境变量,或者完全不读取桌面代理设置。常见的 Clash mixed port 是 7890,但实际端口必须以客户端设置页显示的数值为准,不要直接复制别人的端口。

如果只希望当前终端会话使用代理,可以在 macOS 或 Linux 的 Shell 中临时设置环境变量;Windows PowerShell 则使用对应的环境变量语法。下面示例中的端口仅作说明,使用前请替换为本机实际端口。

# macOS / Linux
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7891

# Windows PowerShell
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:ALL_PROXY="socks5://127.0.0.1:7891"

设置完成后,不要马上判断 Claude Code 是否已经恢复。先用一个简单的 HTTPS 请求测试终端是否能够通过代理访问目标站点,并在 Clash 的连接日志中观察请求有没有出现。如果终端变量指向了 SOCKS 端口,却把它写成了 HTTP URL,或者把 mixed port、HTTP port、SOCKS port 混用,日志里通常会出现握手失败、协议错误或连接立即关闭。

Claude Code 需要哪些域名分流,规则应该怎么组织

规则不建议只凭网络文章里的域名清单一次性抄完。Claude Code 的实际请求会随版本、登录方式和功能变化,最可靠的方法是先让客户端运行,再在 Clash 的连接日志中记录真实访问的主机名。通常需要重点观察 anthropic.comapi.anthropic.comclaude.ai 以及登录页面、静态资源或错误上报所涉及的其他域名。

对大多数个人配置而言,可以建立一个名称清晰的策略组,例如 CLAUDE_AI,把 Anthropic 相关的官方 API、账户页面和必要的辅助域名交给同一个稳定节点。规则优先使用 DOMAIN-SUFFIX 或明确的 DOMAIN,不要一开始就使用过于宽泛的关键词匹配。关键词规则可能误伤包含相似字符串的无关站点,也会让后续排查变得困难。

下面是说明性片段,策略组名称必须与配置中的真实名称完全一致。若你的订阅已经提供了 AI、Claude 或 Proxy 等策略组,应先复用现有策略,而不是创建同名组造成解析或覆写冲突。

Illustrative Clash rules

rules:
  - DOMAIN-SUFFIX,anthropic.com,CLAUDE_AI
  - DOMAIN-SUFFIX,claude.ai,CLAUDE_AI
  - DOMAIN,api.anthropic.com,CLAUDE_AI
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

这段规则的重点不是保证任何环境都能直接使用,而是展示分流思路:已确认属于 Claude 业务的域名进入专用策略组,国内地址按你的隐私和速度需求直连,其余未匹配流量再交给默认策略。若日志显示某个授权页面或静态资源仍走了直连,不要盲目把整个互联网切换到全局模式,而应确认该主机名是否属于当前登录链路,再补充精确规则。

动手配置:从 Clash 日志到 Claude Code 首次请求

第一步,启动 Clash 核心并选择一个可用策略。先不要同时开启多个代理软件、系统 VPN 和公司安全隧道,否则同一连接可能被多层转发,出现 DNS 污染、路由环路或端口占用。打开连接日志,将过滤条件设置为包含 anthropicclaudeapi 等关键词,准备观察登录和请求过程。

第二步,在终端确认环境变量没有残留错误值。部分用户曾经为 Git、npm 或其他 AI 工具设置过旧端口,新的 Claude Code 进程会继续继承这些变量。可以逐项检查 HTTP_PROXYHTTPS_PROXYALL_PROXYNO_PROXY。如果 NO_PROXY 中包含过宽的域名后缀,可能会把本应代理的请求强制排除。

第三步,在项目目录中启动 Claude Code,并按照官方客户端提示完成登录。浏览器跳转成功后,不要立刻关闭 Clash 日志窗口。观察授权页面、回调请求和 API 连接是否命中了同一个策略组。如果浏览器显示授权完成,而终端仍在等待,重点检查回调阶段的主机名、系统时间、默认浏览器以及终端是否运行在远程 SSH 或容器环境中。

第四步,完成登录后发送一个很短的测试请求,例如让工具解释当前目录中的一个小文件,而不是立即要求它扫描整个大型仓库。这样可以把登录问题、API 请求问题和项目读取权限问题分开。若短请求成功、长回答中断,应继续观察连接是否使用了流式传输,以及 Clash 节点是否在长连接期间主动断开。

第五步,再逐步启用项目分析、文件修改和命令执行等功能。Claude Code 可能需要访问 Git 仓库、包管理器、代码托管平台或项目自定义服务,这些请求未必属于 Anthropic 域名。对于每一个新出现的失败主机,都先查看连接日志和目标用途,再决定它应当直连、走代理,还是加入单独的开发工具策略组。

  1. 确认 Clash 核心运行、配置已激活、策略组有可用节点。
  2. 确认终端代理变量使用了正确协议和端口。
  3. 启动 Claude Code,观察授权和 API 请求是否都命中预期规则。
  4. 用短请求验证,再测试长回复和项目工具调用。
  5. 根据日志增补规则,不要用宽泛关键词替代分析。

登录成功但请求失败:按症状定位问题

浏览器授权成功,终端仍然等待

这种情况通常说明授权链路没有完整回到终端。先确认终端是否在本机运行,远程 SSH、容器或 WSL 环境可能无法接收宿主机浏览器的回调。其次查看 Clash 日志,确认回调相关请求是否被拒绝、超时或命中了直连规则。还要检查系统时间是否明显错误,因为 OAuth 令牌的有效期验证依赖正确时间。不要反复点击登录按钮,否则可能产生多个待完成会话,增加判断难度。

API 超时、空白回复或流式输出中断

如果登录已经完成,但对话阶段持续超时,应优先检查 api.anthropic.com 是否进入正确策略组,以及当前节点是否支持稳定的长连接。部分节点打开普通网页速度很快,却不适合持续的流式响应。可以更换同一策略组中的另一个节点进行对照,同时观察连接日志中的连接时长、重置和重试记录。若只有大型请求失败,还要排除本地终端代理、企业防火墙或上游服务限制。

安装失败、更新失败或包下载卡住

安装阶段和 Claude API 阶段不是同一条链路。npm 可能访问 registry.npmjs.org、GitHub 或包 tarball 的 CDN。若只有安装失败,应单独检查包管理器是否继承了代理变量、npm registry 是否被改成了不可用地址,以及 Clash 日志里是否出现下载主机。不要因为 Claude 页面能打开,就认为 npm 也一定会自动走代理;也不要为了修复一个 registry 问题,把所有国内 npm 镜像都强制送入海外节点。

什么时候使用系统代理或 TUN 模式

如果 Claude Code、Node 子进程和其他开发工具都无法稳定读取环境变量,可以先打开 Clash 的系统代理功能,让支持系统设置的应用自动接入。对于不读取系统代理、运行在容器中或需要透明接管的程序,再考虑启用 TUN 模式。TUN 会改变更大范围的路由,开启前应检查 DNS、局域网访问、公司 VPN、虚拟机和 Docker 网络是否会受到影响。排障时一次只改变一个变量,才能知道问题究竟来自规则、端口还是 TUN。

排障原则:先看请求有没有出现,再看命中了哪条规则,接着看使用了哪个策略组和节点,最后才判断远端服务或账号本身是否异常。没有日志证据时反复切换全局、规则和节点,往往只会掩盖真正的问题。

相比只依赖浏览器系统代理的通用 AI 网页工具,Claude Code 更容易受到终端环境变量、OAuth 回调、npm 下载和流式 API 的共同影响;一些旧版 Clash 客户端在 TUN、规则集更新或 Mihomo 字段兼容方面也可能需要额外手动维护。Clash V.CORE 则更适合把 Claude Code 的 API、登录域名和开发工具链拆成清晰的策略组,并通过连接日志持续验证规则命中情况。若你希望把本文的端口、域名分流和终端代理设置整理成可复用的配置,建议前往下载 Clash V.CORE,再按自己的系统与网络环境逐项测试。

// 编辑推荐

用 Clash V.CORE 稳定运行 Claude Code

从终端代理变量到 API 域名分流,集中查看连接日志,让登录、请求和长连接排查更有依据。

  • 清晰查看 Claude API 规则命中
  • 支持系统代理与 TUN 场景
  • 方便切换 AI 专用策略组
  • 实时观察终端连接与重试
  • 适配常见 Mihomo 配置逻辑
获取 Clash V.CORE →