一、先把症状拆开:是哪一段在超时?
同样一句「卡住十分钟」,细看日志可能是完全不同的问题。第一层建议按时间线二分:装包尚未完成时已失败,还是二进制与依赖就位后才开始请求模型仍然 pending。前者几乎可以确定还在 npm / yarn / pnpm、可选的 postinstall、或者是拉取远端 schema、语言服务器与 CLI 二进制更新通道;而后者才更贴近 Anthropic API、身份校验或服务端熔断。
第二层看失败时的主机名前缀:若以 registry.npmjs.org、npmjs.org、常见 tarball 镜像域或公司内部 registry 结尾,却仍混用未被 NO_PROXY 排除的内网域名,就会把「本应直连的包仓」送进代理链路,或直接相反——该走代理的出口走了直连。GitHub CLI 依赖常与 github.com、api.github.com、objects.githubusercontent.com、codeload.github.com 等混在一起;任何一条在半代理状态下被误判,都会让你在终端里只看到笼统的 ETIMEDOUT。
二、与「浏览器 Claude」场景的差异:别把网页当真理
站内《Claude 网页超时?Anthropic 域名分流实录》已经系统化讨论过会话 Cookie、CDN 与白屏链路,适合你以浏览器为中心的访问路径。Claude Code CLI 往往绕开一整套浏览器 Cookie 约束,却仍要拉取远端配置、二进制与运行时依赖——于是你会遇到「Safari、Chrome 都正常,但 npx @anthropic-ai/claude-code 一步装不完」的矛盾体验。
这不是订阅突然失效的常见形态,更像是策略意图在不同主机名上不连续:HTML、静态资源与会话接口若在浏览器里都走同一个策略组,而 npm 请求的 tarball CDN 却因为订阅里「海内外分流」误判成了直连失败,就会形成体感上的「Anthropic CLI 不可用」。处理方式不是立刻换最贵节点,而是回到连接日志同源证据。
三、终端为何不自动跟系统代理:开发者代理要显式对齐
macOS「系统代理」或 Clash「设置为系统代理」主要服务遵循系统栈的图形应用。Claude Code CLI、node、npm、curl 往往只读进程环境变量与自身配置文件。若你只给浏览器打通了出口,没有把 HTTPS_PROXY、HTTP_PROXY、必要时 ALL_PROXY 指到与本机 Mihomo mixed-port 一致,终端侧就会表现为CLI 永远在等第一个 TLS 字节。
Windows 上还常见「IDE 终端未继承用户环境」「以管理员新开 PowerShell」导致读取到另一套变量。开发者代理这一提法,就是要你明确区分「我在 GUI 里感觉通」与「该 Node 进程的 env 是否与 Clash 入站一致」,而不是玄学式反复重装。更可操作的落地步骤请参考《macOS 终端走 Clash:环境变量配置 curl、Git、npm 完整教程》(思路可迁移到其他系统),以及《WSL2 与本机 Clash》里关于「127 不是同一座 127」的类比。
四、Mode 选择:何时用系统代理就够,何时上 TUN
若你的所有命令都只跑在继承了环境变量的单个 shell,且你已确认变量存在,大多数情况下RULE 模式叠加正确的前置域名规则就足够。但一旦遇到「子进程在启动时又清空了代理」「Electron 宿主与 child_process 分叉」这一类情况,你可能会考虑 TUN 去统一覆盖难缠的分叉流量。
TUN 并不等于自动解决DNS fake-ip 对齐问题:若解析与连接阶段记录的地址不一致,仍会出现长时间握手。请先读《Clash TUN 模式开启方法》理解副作用,再在连接面板验证流量确实进入内核。
五、三段式链路归档:npm、GitHub、Anthropic 不要写在同一张情绪清单里
按链路类型而不是按「我恨 Anthropic」来分组,你才会知道自己到底要改 YAML 的前半段哪几行。下列分类是自检方向——执行时请以你本地的 Mihomo 连接日志 中出现的具体主机名为准逐项扩展。
- Npm 链路:注册表元数据、实际 tarball CDN、公司内部镜像、偶尔的 postinstall HTTP 抓取;任一环节被误判,现象都是笼统的 npm 超时。
- GitHub 链路:HTTPS git、ZIP、releases 资产、codeload、对象存储前缀;牵涉 GitHub CLI 依赖时还要加上它自己的 oauth 与会话校验主机名。
- Anthropic 链路:Anthropic API 请求、控制台或账户相关跳转、可能出现的遥测或大文件前缀;控制台与 CLI 会话并不完全重叠,不要机械复制站内浏览器稿的子域表格。
当你把这三类链路分别过滤验证后,再考虑它们是否共用同一策略组地理位置意图:若控制台走美西而 API 被自动测速送去了东南亚,可能会在账号风控维度触发更多重试,看上去像超时。
六、操作入口:如何用连接面板减少猜规则
打开基于 Mihomo 的客户端Connections视图,把时间排序切到最接近失败时刻的几秒窗口,用关键字筛 npm、github、anthropic。你要寻找的不是「看起来像国外网站」的主观印象,而是目标主机名是否在 DIRECT 与其他策略之间跳跃。
若同一秒内既出现经由代理的连接,又出现了关键子域被打成直连但仍然 pending,就是典型半代理:TCP 出站意图在规则序上没被统一。MATCH 兜底之前,应当把你已证实失败的主机名写得更靠前,并使用不会与广告屏蔽列表自相矛盾的匹配粒度。
需要一起对照 MCP 形态长连接的案例,可看《Cursor MCP 与 GitHub SSE 分流》如何把制品与 SSE 链路拆开验证——思路可迁移到其他 CLI。
七、DNS 与 fake-ip:别让解析层偷走你的结论
当你已经对齐了规则顺序,却仍遇到偶发超时,才把注意力挪到DNS 上游是否与出口地理一致、以及 fake-ip 与连接阶段是否对齐。对部分海外 SaaS,解析失败会直接表现为第一层 TCP 都无响应,错误信息却被上层框架包装成泛泛的Anthropic API 异常。
调整 nameserver-policy 或等价能力时务必小步试错,对照连接面板是否出现实质性的握手失败占比下降,而不是一次改三组上游后无法归因。
八、YAML 示例:仅演示「靠前挂载」的形态
下列片段不能直接复制为「可用配置」,只是把你在日志中看到的高频后缀族排在大块 GEOIP 之前的排版方式具象化。PROXY 必须替换为你的真实策略组名称;主机名后缀若与未来业务共用,请改用更窄的 DOMAIN 规则以降低误杀。
# Example only — replace PROXY with your policy group name
rules:
- DOMAIN-SUFFIX,npmjs.org,PROXY
- DOMAIN-SUFFIX,npm.community,PROXY
- DOMAIN-SUFFIX,yarnpkg.com,PROXY
- DOMAIN-SUFFIX,github.com,PROXY
- DOMAIN-SUFFIX,githubusercontent.com,PROXY
- DOMAIN-SUFFIX,githubassets.com,PROXY
- DOMAIN-SUFFIX,github.io,PROXY
- DOMAIN-SUFFIX,anthropic.com,PROXY
- DOMAIN-SUFFIX,claude.ai,PROXY
公司内部 registry、镜像站或二进制缓存往往落在完全自定义的域名上——这时应当写明确 DOMAIN 或内部后缀,并使用 NO_PROXY 保护不必出站的链路,否则会形成「本应直连的流量被劫持到海外节点再回到内网」的弯路径。
九、顺带一提:二进制安装器、缓存与 GH 令牌链
有的团队通过 npm 包装安装 CLI;也有流程直接下载 release 二进制。两者在日志里是两套主机名:npx 更容易体现为 registry+tgz;而 release zip 更明显落在 GitHub 资产域。若你启用了 SSO 或个人访问令牌链路,还会出现额外的 oauth 跳转——确保这些跳转域名与SESSION相关的 Cookie 宿主不至于一半走代理一半直连。
若同时使用 pnpm 与 corepack,要记得它们仍会在底层去打 registry;不要只修了 .npmrc,却遗漏了另一份配置里的 registry 重写。
十、不要把「翻墙写代码」写进工作流程的默认心智
使用代理排查网络路径与 TLS 连续性,并不等于鼓励违反当地法律、校方网络政策或供职企业的安全规定。Anthropic 与 GitHub 等平台亦可能基于账号、地区与支付方式实施访问限制;技术性分流无法绕过你与平台契约本身。本文定位为链路一致性与超时归因的工程笔记。
十一、延伸阅读:何时回到通用排错与高阶对比
若你已确认Anthropic API 主机命中正确,却仍遇到全局性 TLS 错误或上游 5xx,可回到《Clash 常见报错解决方案》做端口与健康检查。希望对传输层属性做更深取舍时,可看《Shadowsocks vs Trojan vs Hysteria2》以理解「跑得快的测速」与抖动方差小不是同一指标。
十二、小结
把Claude Code CLI卡住简单归咎为Anthropic API不稳定,是最容易浪费时间的路径。更值得做的,是在npm 超时阶段先证明 tarball 链路已完整拉取,再检查 GitHub CLI 依赖是否还有独立主机名掉队,最后才把 控制台与 API 侧的 Anthropic 子域放在靠前规则里收口,并校对开发者代理与 mixed-port 的一致性。相比「每个工具自带一套细碎代理面板、彼此不知道对方的存在」拼凑出来的体验,Mihomo 生态里的一体化分流 + 可视化连接记录通常更容易把超时压缩成可解释的日志条目,也方便你在团队内部复用排查顺序。→ 立即免费下载 Clash,开启流畅上网新体验