Claude Code 适合用终端完成编程、代码审查和项目协作,但它对网络连接的连续性要求较高。登录授权、模型请求、GitHub 仓库访问以及文件操作中的远程依赖下载,任何一个环节出现超时,都可能表现为登录失败、模型无响应或命令长时间卡住。本文以 Clash Verge 为入口,介绍订阅导入、代理模式、终端环境变量和分流规则的完整配置流程,帮助你在国内网络环境中搭建一个更稳定、可排查、尽量少改动系统设置的 Claude Code 使用环境。
准备工作与 Clash Verge 基础设置
开始之前,需要准备三个条件:已经安装 Clash Verge 或 Clash Verge Rev;拥有一个可正常使用的代理订阅地址;终端能够运行 Node.js 与 Claude Code。Clash Verge 本身只是客户端,不提供节点或订阅服务,因此订阅地址应来自你信任的服务提供商。不要在不明网站输入账户密码,也不要下载来历不明的「一键配置」脚本。
安装完成后打开 Clash Verge,先确认客户端使用的内核类型。较新的 Clash Verge Rev 通常使用 Mihomo 内核,能够支持更多协议和配置字段;部分旧版 Clash Verge 的界面名称可能略有不同,但「订阅」「配置」「代理」「设置」等功能的位置基本一致。首次启动时,建议先检查系统时间,因为 TLS 证书校验、节点握手和 Claude Code 登录流程都依赖正确的时间。
- 打开 Clash Verge,进入「订阅」或「Profiles」页面。
- 将服务商提供的订阅 URL 粘贴到输入框中,填写一个容易识别的名称。
- 点击下载或导入,等待配置文件和节点列表加载完成。
- 进入「配置」页面,选中刚刚下载的配置,并点击启用。
- 进入「代理」页面,选择延迟较低且稳定的节点或策略组。
- 开启系统代理,确认 Clash Verge 的主开关处于运行状态。
如果订阅下载失败,不要立即判断是节点不可用。先在浏览器中检查订阅地址是否需要登录、是否已经过期,或者是否被当前网络拦截。也可以尝试在 Clash Verge 的订阅设置中调整更新方式,再重新下载。配置成功后,建议先用浏览器访问普通 HTTPS 网站进行测试,再测试终端,这样可以把「节点本身不可用」与「终端没有使用代理」两个问题分开。
7890,SOCKS5 端口可能是 7891,但实际端口会因版本和用户设置而不同。请在「设置」或「General」页面查看真实端口,不要盲目照抄示例。选择合适的代理模式
对 Claude Code 来说,最容易理解的方案是先使用「规则」模式。规则模式可以让国内网站和本地服务直连,把需要代理的域名交给代理节点,减少不必要的延迟。若规则集不完整,或者你正在排查某个请求为什么失败,可以暂时切换到「全局」模式进行对照测试。全局模式下所有支持系统代理的应用都会经由当前代理,适合验证节点是否真的能够访问目标服务,但不建议长期使用。
| 模式 | 特点 | 适用场景 |
|---|---|---|
| 规则 | 按域名和 IP 分流,国内流量通常直连 | 日常使用,兼顾速度与可控性 |
| 全局 | 大部分流量统一经由代理 | 排查规则问题,临时验证连通性 |
| 直连 | 关闭代理转发 | 确认问题是否由代理或节点引起 |
导入订阅并设置 Claude Code 分流
Claude Code 的核心请求通常会涉及 Anthropic 的 API、账户控制台和授权页面;项目开发过程中还可能访问 GitHub、npm、PyPI、Docker Registry 或其他代码托管和依赖服务。因此,不能只添加一个域名后就认为所有功能都已经覆盖。实际分流范围取决于当前版本、登录方式以及项目使用的工具链,比较稳妥的做法是先观察连接记录,再逐步补充规则。
在 Clash Verge 的代理页面中,优先选择一个延迟较低、丢包较少的策略组。延迟并不是唯一指标:有些节点测速很快,但持续传输时容易断开;有些节点延迟略高,却能保持较长时间的稳定连接。Claude Code 执行大段代码分析时会产生较长的请求,因此稳定性通常比瞬时测速数值更重要。
如果配置文件允许编辑,可以在规则部分加入与你实际使用场景相符的域名规则。下面是一个示意模板,规则名称和策略组名称必须替换成配置中真实存在的名称。不同 Clash 内核对规则集和策略组的支持细节可能不同,保存前应先使用客户端的配置校验功能。
rules: - DOMAIN-SUFFIX,anthropic.com,Claude - DOMAIN-SUFFIX,claude.ai,Claude - DOMAIN-SUFFIX,github.com,代码服务 - DOMAIN-SUFFIX,githubusercontent.com,代码服务 - DOMAIN-SUFFIX,npmjs.org,代码服务 - DOMAIN-SUFFIX,pypi.org,代码服务 - DOMAIN-SUFFIX,anthropic.com,Claude - MATCH,DIRECT
上面的写法只是帮助理解规则优先级。Clash 采用从上到下的匹配逻辑,前面的规则优先于后面的规则;如果你的订阅已经通过 Rule Provider 管理规则,直接修改订阅生成的文件可能会在下次更新时被覆盖。更稳妥的方法是使用客户端提供的覆写配置,或者在本地配置中维护自己的补充规则。
Claude 和 代码服务 只是占位名称。你的配置可能使用「节点选择」「Proxy」「自动选择」等名称。如果规则引用了不存在的策略组,配置可能无法加载,或者请求会回退到默认策略。完成规则设置后,可以打开 Clash Verge 的连接列表或日志页面,运行一次 Claude Code 登录或模型请求,观察目标域名、命中的规则和最终使用的策略组。如果连接记录中出现目标域名但策略显示为直连,说明规则顺序或配置未生效;如果连接根本没有出现,则可能是终端没有继承代理环境变量,或者应用使用了不受系统代理影响的连接方式。
配置终端代理让 Claude Code 正常工作
Clash Verge 开启系统代理后,浏览器通常可以自动使用代理,但命令行程序不一定会读取系统代理设置。Claude Code 运行在终端中,因此建议显式设置 HTTP_PROXY、HTTPS_PROXY 和 ALL_PROXY。其中,HTTP 和 HTTPS 环境变量通常填写 HTTP 代理地址;如果使用 SOCKS5 端口,则可以将 ALL_PROXY 设置为 SOCKS5 地址。
先在当前终端临时设置变量,可以避免直接修改系统配置。下面以 Clash Verge 的本机 HTTP/Mixed 端口 7890 为例:
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 # 查看变量是否已经生效 env | grep -i proxy # 测试 HTTPS 请求是否经过代理 curl -I https://api.anthropic.com
如果你的 Clash Verge 使用 SOCKS5 端口,可以采用下面的写法。部分命令行工具对 SOCKS5 的支持方式不同,遇到连接失败时,可先只保留 HTTP 和 HTTPS 两个变量进行测试。
export ALL_PROXY=socks5://127.0.0.1:7891 export HTTP_PROXY=http://127.0.0.1:7890 export HTTPS_PROXY=http://127.0.0.1:7890
Windows PowerShell 使用的语法不同。可以在当前 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" # 查看当前会话中的代理变量 Get-ChildItem Env: | Where-Object Name -Match "PROXY"
确认临时变量有效后,再决定是否写入 shell 配置文件。macOS 和 Linux 常见的是 ~/.zshrc 或 ~/.bashrc;Windows 可以使用 PowerShell 配置文件或系统环境变量。长期写入前应考虑使用场景:如果你经常在没有运行 Clash Verge 的环境中打开终端,固定代理变量会让所有网络命令失败。更安全的做法是准备一个启动脚本,使用 Claude Code 前手动加载,用完后取消。
# proxy-on.sh 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 echo "Clash proxy enabled" # proxy-off.sh unset HTTP_PROXY HTTPS_PROXY ALL_PROXY unset http_proxy https_proxy all_proxy echo "Clash proxy disabled"
某些工具区分大小写,因此实践中可以同时设置大写和小写变量。Git、npm、Python 包管理器还可能有各自独立的代理配置;如果发现浏览器和 curl 正常,但依赖安装失败,应检查对应工具的配置,而不是反复更换节点。例如 Git 可以通过 git config --global --get http.proxy 查看是否存在旧代理,旧地址失效时需要清理或更新。
登录测试与常见故障排查
配置完成后,不建议直接在大型项目目录中运行复杂任务。先创建一个没有敏感信息的测试目录,使用 Claude Code 的登录命令完成授权,再发送一个简单请求,确认终端、Clash 和远端服务三者都能正常通信。测试时不要把 API 密钥、Cookie、私有仓库地址或源代码内容粘贴到公共日志和截图中。
- 确认 Clash Verge 主开关已开启,并且当前策略组有可用节点。
- 确认终端中的代理端口与 Clash Verge 页面显示的端口一致。
- 执行
curl -I https://api.anthropic.com,观察是否能建立 HTTPS 连接。 - 检查 Clash 的连接记录,确认请求命中了预期的代理规则。
- 再启动 Claude Code,完成登录并运行一个简单的代码解释任务。
- 最后测试 GitHub、npm 或项目实际依赖,确认开发流程完整可用。
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| 浏览器能访问,终端超时 | 终端没有继承系统代理 | 显式设置 HTTP_PROXY、HTTPS_PROXY,并检查端口 |
| Clash 没有连接记录 | 环境变量未生效或命令绕过代理 | 检查变量大小写、工具独立配置和当前 shell 会话 |
| 登录页面能打开但回调失败 | 授权回调域名被错误分流或本地端口冲突 | 查看日志,临时使用全局模式,再恢复规则模式 |
| 模型请求中途断开 | 节点丢包、超时或连接保持能力不足 | 更换稳定节点,避免频繁自动切换,检查网络日志 |
| Git 正常但 npm 安装失败 | npm 使用了旧代理或 registry 不可达 | 检查 npm 配置和 registry,清理失效的 proxy 设置 |
如何区分节点问题与配置问题
排查时应采用「从底层到上层」的顺序。第一层是 Clash 是否运行、节点是否可用;第二层是本机端口是否监听;第三层是终端是否使用正确的代理;第四层才是 Claude Code 或其他开发工具自身的配置。可以使用 curl -v 查看连接过程,也可以在 Clash 的连接页面观察 DNS、TCP、TLS 和规则命中情况。不要一次修改多个设置,否则即使问题解决,也很难知道真正起作用的改动是什么。
如果全局模式可以使用而规则模式不行,通常说明节点本身没有问题,应重点检查域名规则、规则顺序和策略组名称。如果全局模式也失败,则优先检查节点、订阅状态、端口和本地防火墙。若只有某个项目失败,则进一步检查项目中的 Git remote、包管理器 registry、Docker 配置以及项目脚本是否覆盖了环境变量。
安全与稳定性建议
终端代理本身不会自动保护所有数据。代理地址、订阅链接和 API 密钥都应视为敏感信息,不要提交到 Git 仓库,也不要写进项目的公开配置文件。使用第三方脚本前先阅读内容,尤其注意是否会上传环境变量、读取 SSH 密钥或修改 shell 配置。对于企业项目和私有代码,最好遵循组织的网络与数据安全政策。
稳定性方面,建议为 Claude Code 单独准备一个可靠策略组,不要让它随着普通网页流量频繁自动切换节点。长连接中途切换出口可能导致请求中断;如果订阅支持自动测速,可以设置较长的检测间隔,并保留一个手动指定的备用节点。DNS 方面优先使用 Clash 内核提供的正常解析能力,遇到域名解析异常时查看 DNS 日志,不要随意关闭证书校验或把所有流量永久设置为直连。
完成以上步骤后,Claude Code 的使用链路应当清晰分为四段:Clash Verge 负责节点和规则,系统端口负责接收代理请求,终端环境变量负责让命令行程序找到代理,Claude Code 及其依赖工具负责实际的登录和开发任务。只要按这个层次逐段验证,即使网络状态变化,也能较快定位问题,而不必反复重装客户端或盲目更换配置。