坑 · 别信它Connectivity Test 会说谎
列表里的延迟数字和 Connectivity Test 只测 TCP 握手,绿色 ≠ 真能用,Timeout ≠ 节点挂了。唯一可信的验证是下一章的 curl 出口 IP。
从拆箱到 Claude Code 在终端里跑起来——网络隧道、海外环境、基础依赖、AI 工具链,一条动线走完,不用来回问人。
// 面向第一次配置开发环境的新同学 · 顺序执行即可 · 全程约 60–90 分钟
整个开荒过程是一条严格有序的管线:网络层没搭好,后面每一步的下载都会失败或慢到怀疑人生。跟着流光走一遍,心里先有全图。
/doctor 自检≈ 10 min
// 卡在任何一步:先跳到本页最后一章「坑位速查」对症状,九成问题在那里有现成解法。
国内网络直连不了 GitHub、Homebrew、Google 字体、Claude 的服务器。我们用 Shadowrocket(本是 iOS 应用,M 系列 Mac 可以直接跑)建一条系统级隧道:它接管整台电脑的流量,终端、浏览器、所有 App 自动走隧道,不需要再单独配任何代理变量。
开工前找管理员要两样东西:① 一条节点链接 / 订阅(形如 vless://… 或订阅 URL);② 一个海外区 Apple ID(Shadowrocket 只在海外区 App Store 上架,约 $2.99,团队一般有公用账号)。
// TUN 模式的含义:Shadowrocket 在系统里虚拟出一张网卡,所有进程的流量先进它、再按规则分流——国内站点直连、海外站点走隧道。所以终端不需要设 http_proxy,装完即全局生效。
列表里的延迟数字和 Connectivity Test 只测 TCP 握手,绿色 ≠ 真能用,Timeout ≠ 节点挂了。唯一可信的验证是下一章的 curl 出口 IP。
在列表里换了默认节点,隧道不会自动切换,旧节点还在跑。必须把主开关关掉再打开,新节点才真正生效。
Global Routing 切到 Proxy 后所有分流规则失效,国内流量也全走海外。排障时临时用可以,用完记得切回 Config。
通过链接导入时,节点标签里含 emoji 会静默失败——不报错、节点也不出现。把标签里的 emoji 删掉再导入即可。
隧道开了不等于真的通了。打开终端(Terminal,在启动台里搜),跑下面三条命令——这是全页唯一可信的网络验证方式,之后任何时候怀疑网络,都回到这三条。
// 上面是循环演示动画。出口 IP 应该是海外 IP(不是你家宽带的 IP);三条全部有正常返回,网络层就算毕业。
# ① 出口 IP:应返回一个海外 IP curl https://api.ipify.org # ② Google 可达:应返回 HTTP/2 200 curl -I https://www.google.com # ③ Claude 可达:应返回 HTTP/2 200 或 3xx curl -I https://claude.ai
浏览器有缓存、有自己的 DNS,「网页打得开」不能证明终端的流量也走了隧道——而后面所有安装命令都跑在终端里。curl 的返回就是终端视角的真相,眼见为实。
这五步是依赖链:Homebrew 需要 Xcode 命令行工具,Node 用 Homebrew 装的 fnm 管理,pnpm 跑在 Node 上。按顺序执行,每步末尾都有「验证」命令,跑通再进下一步。
编译器、git 底座,一切开发工具的地基。弹出安装窗口后点「安装」,等进度条走完。
xcode-select --install
验证:xcode-select -p → 输出 /Library/Developer/CommandLineTools
之后装任何命令行工具都靠它。安装脚本走 GitHub,隧道必须已开启。装完后务必执行它最后提示的两行 eval 命令(把 brew 加进 PATH),或直接复制下面第二段。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装完执行(写入 PATH,然后重开一个终端窗口)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"验证:brew --version → 输出 Homebrew 4.x
系统自带的 git 也能用,但用 brew 装最新版,并把你的名字和邮箱写进全局配置(提交记录会署这个名)。
brew install git git config --global user.name "你的名字" git config --global user.email "你的邮箱@example.com"
验证:git --version → 输出 git version 2.x
不同项目要求的 Node 版本不同,直接 brew install node 以后会打架。用 fnm(快、轻)管理,随时切版本。
brew install fnm echo 'eval "$(fnm env --use-on-cd)"' >> ~/.zshrc source ~/.zshrc fnm install --lts fnm default lts-latest
验证:node -v → 输出 v22.x(当前 LTS);npm -v 有输出
前端项目统一用 pnpm 装依赖(更快、更省磁盘)。顺手可以把 Python 工具链 uv 也装上(跑 Python 项目才需要,可跳过)。
npm install -g pnpm
# 可选:Python 工具链(需要跑 Python 项目时再装也行)
brew install uv验证:pnpm -v → 输出 9.x / 10.x
任何一步卡住报网络错误(Connection refused / timeout / 卡在 0%),先回第 02 章跑三条 curl——九成是隧道断了或节点抖了,而不是命令写错。
Claude Code 是跑在终端里的 AI 编码 Agent,也是团队的日常主力工具。官方推荐 native 安装器(一条命令,自带自动更新,和 npm 无关)。登录需要一个 Claude 订阅账号(Pro / Max / Team)——没有的话先找管理员。
# ① 安装(native 安装器,装到 ~/.local/bin/claude) curl -fsSL https://claude.ai/install.sh | bash # ② 重开一个终端窗口,启动 claude
~/.local/share/claude/,命令是 ~/.local/bin/claude,以后自动更新,不用管
claude 会打开浏览器 → 用团队给的 Claude 账号授权 → 回到终端自动完成登录
/doctor——它会检查安装、网络、权限,全绿即就绪
cd 进任意项目目录再运行 claude,直接用中文描述你要做的事
| 常用入口 | 命令 | 作用 |
|---|---|---|
| 启动 | claude | 在当前目录开一个会话 |
| 自检 | /doctor | 体检安装 / 网络 / 配置,排障第一步 |
| 帮助 | /help | 会话内查看全部命令 |
| 设置 | /config | 主题、模型等偏好 |
| 手动更新 | claude update | 平时自动更新,报错时手动跑一次看真实错误信息 |
| 版本 | claude --version | 确认装好了、看当前版本号 |
开一个全新的终端窗口(保证 PATH 都已生效),从上到下逐行执行。任何一行不符合预期,就回到对应章节重来那一步。
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| ① 出口 IP | curl https://api.ipify.org | 返回海外 IP(对应章节 01/02) |
| ② GitHub 可达 | curl -I https://github.com | HTTP/2 200 |
| ③ 编译工具 | xcode-select -p | 输出 CommandLineTools 路径(03.1) |
| ④ Homebrew | brew --version | Homebrew 4.x(03.2) |
| ⑤ Git 身份 | git config user.email | 输出你的邮箱(03.3) |
| ⑥ Node LTS | node -v | v22.x(03.4) |
| ⑦ pnpm | pnpm -v | 有版本号输出(03.5) |
| ⑧ Claude Code | claude --version | 有版本号输出(04) |
| ⑨ 会话自检 | claude 内跑 /doctor | 全部通过(04) |
这些坑我们全都真实踩过。按症状找到你的情况,照方子执行即可。
先跑 curl 验出口 IP(第 02 章)。IP 不对或超时 → 隧道断了:Shadowrocket 主开关关掉重开;还不行就换一个节点(记得切完重启主开关)。
其它网站都正常、只有更新失败——个别节点会掐 downloads.claude.ai 这个下载域。换一个节点再跑 claude update 即可。
命令装了但 PATH 没生效。重开一个终端窗口;还不行就检查对应步骤里 echo … >> ~/.zprofile / ~/.zshrc 那行有没有执行过。
八成是 Global Routing 被切到了 Proxy(全局),国内流量也被推到海外出口。切回 Config 模式即恢复。
代理客户端的 fake-IP 模式会拦掉 UDP 流量,云桌面、实时音视频首当其冲。详见专文 「云电脑 / 云手机连不上?先查代理」(本页底部相关阅读)。
两个原因:① 当前登录的是国区 Apple ID(它没在国区上架);② 搜索结果没切到「iPhone 与 iPad App」标签页。都对了还没有,找管理员用公用账号处理。
网络这条线想弄懂原理,接着读下面三篇。