Mac 从 0 开始

给从没装过 KernelHub 的 Mac。照着做,每一步都能复制、都知道成功长什么样:先装 Node,再一行装 KernelHub,登录 Runtime,配对手机,发一条真任务,看它交付。全程不需要 sudo。

这一页怎么用
从上往下,一步一步做。每一步都写了:打开哪里、复制哪一行、看到什么算成功、没看到怎么办。命令块右边有「复制」按钮,点一下粘进「终端」回车即可。能上网只看第 1、2 节;想用拖进「应用程序」的 App 看第 4 节;网络被堵看第 6 节。

1 · 开始之前:这台 Mac 缺什么

一台从没装过 KernelHub 的 Mac(Apple 芯片或 Intel 都行),要走到「手机上派活、这台 Mac 上干活」。先搞清楚它自带什么、缺什么:

东西全新 Mac 有没有说明
「终端」App 与 zsh本页命令都按系统默认的 zsh 写。
curl / shasum / tar系统自带,本页的下载与校验会用到。
Node.js / npm没有本页最要紧的一条。安装脚本不会替你装 Node。没有 npm,它就装不上 AI 编码工具(Runtime),结果是「KernelHub 装好了,一个任务都跑不了」。
~/.local/bin 在 PATH 里不在KernelHub 和本页装的 Node 都放在这里。不加进 PATH,终端就找不到 iclosernode。第 2 节第 3 步用一行解决。
git(命令行开发者工具)没装第一次有程序用到 git 时,系统会弹窗问要不要装,点「安装」即可(见第 9 步)。
一个登录过的 Runtime没有KernelHub 不带模型,它驱动的是你自己装好、自己登录过的 CLI 编码 Agent(默认装 Claude Code)。装上 ≠ 能用,没登录照样跑不了任务。
一部手机装好 KernelHub App,用来扫码配对、发任务、批准。
三条铁律(照这个顺序做,能省掉大部分返工)
  1. 先装 Node,再装 KernelHub。顺序反了,装完开不了工(反了也能救:装好 Node 后把安装命令再跑一遍)。
  2. 装完让 Runtime 登录一次(敲 claude,按提示登录)。不登录,任务一律回「本机一家都跑不了」。
  3. 配对之后要让 icloser run 一直开着(或者装成常驻)。配对只是把手机和这台 Mac 认识一下,真正去接活的是 icloser run
「你会看到」是怎么来的
下面灰框里的原句取自真跑:在一台 macOS 27.0(Apple 芯片)上,用空的家目录 + 只含系统目录的 PATH 模拟一台全新 Mac。和真正的新 Mac 有三处不同,对应步骤都注明了:这台机器装过 Xcode,所以 git 不弹窗;常驻会和这台机器已有的常驻撞同一个标识,所以没跑;claude 登录会碰钥匙串,所以没在这台上登录。输出里的用户名、机器名、路径已换成示例。

怎么打开「终端」

Command + 空格,输入 终端(英文系统输入 Terminal),回车。出现一个能打字的窗口就对了。本页没有任何一步需要 sudo

2 · 能上网:最短主路径(共 15 步)

一步一行,复制即用。

第 1 步 · 看看这台 Mac 有没有 Node

$ node -v

已经装过 Node:打出一个版本号(比如 v24.21.0)—— 直接跳到第 3 步,第 4、5 步可以不做。

全新 Mac 上会看到(说明没装,照做下去):

zsh:1: command not found: node

第 2 步 · 看看是 Apple 芯片还是 Intel(只是看一眼)

$ uname -m

打出 arm64 是 Apple 芯片,x86_64 是 Intel。后面的命令会自己选对,不用改。

第 3 步 · 把 ~/.local/bin 放进 PATH

这一行做三件事:如果 ~/.zshrc 里还没有,就追加一行;当前窗口立刻生效;最后打印 PATH 的第一段给你看。重复跑不会重复追加。

$ grep -qsF ".local/bin" ~/.zshrc || echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc; export PATH="$HOME/.local/bin:$PATH"; echo "$PATH" | cut -d: -f1

成功:打出来的是 /Users/你的用户名/.local/bin

/Users/你/.local/bin

第 4 步 · 下载 Node.js,并用官方校验和核对

当前 LTS 是 Node v24.21.0。这一行按你的芯片下载 nodejs.org 官方的 .tar.gz,再拿 nodejs.org 官方的 SHASUMS256.txt 核对(大约 50 MB,要等一会儿):

$ V=v24.21.0; A=$(uname -m | sed "s/x86_64/x64/"); F=node-$V-darwin-$A.tar.gz; curl -fL -o /tmp/$F https://nodejs.org/dist/$V/$F && curl -fsSL https://nodejs.org/dist/$V/SHASUMS256.txt | grep " $F\$" | (cd /tmp && shasum -a 256 -c -)

成功:最后一行是文件名后面跟着 OK

node-v24.21.0-darwin-arm64.tar.gz: OK

最后是 FAILEDdid NOT match下载坏了,把这一行再跑一次。curl: (35)(28) 之类:网络问题,重跑;还不行看第 6 节设代理。

node-v24.21.0-darwin-arm64.tar.gz: FAILED
shasum: WARNING: 1 computed checksum did NOT match

第 5 步 · 把 Node 解到 ~/.local(不要 sudo)

$ V=v24.21.0; A=$(uname -m | sed "s/x86_64/x64/"); mkdir -p ~/.local && tar -xzf /tmp/node-$V-darwin-$A.tar.gz -C ~/.local --strip-components=1 && node -v && npm -v

成功:打出两行版本号,一行 node、一行 npm:

v24.21.0
11.19.0

这样装的好处:nodenpm 和之后的 icloserclaude 都在 ~/.local/bin 里,npm 的全局安装也落在 ~/.local全程不需要 sudo,不会报 EACCEScommand not found: node第 3 步没做,回去做完再跑这一行。

第 6 步 · 一行装 KernelHub

$ curl -fsSL https://icloser.xyz/install | sh

它按顺序做这些事,你不用管,看着就行:

它做什么说明
认机器认出 macOS 和芯片(arm64 / amd64)。
读发布清单从 kernelhub.icloser.xyz 读 stable.json;清单不是 READY 就拒装,没有强制开关。
下载并核对icloser,核 SHA-256 与字节数,对不上就丢掉并停下。
装到哪~/.local/bin/icloser,另建三个旧名 icli / kernelhub-cli / devnexus-cli,并摘掉 macOS 给下载文件打的隔离标记。
本机管理台顺带装 ~/.local/bin/kernelhub-desktop;下失败只打一行警告,不影响 CLI。
自证当场跑 icloser version,和清单里的版本、构建号比对。
装一家 Runtime有 npm 就 npm install -g @anthropic-ai/claude-code(默认只装 claude);已经装过就不动它。

成功时屏幕上会出现(安装脚本的输出是中文的):

  清单:stable 频道 · v1.0.2 · build 202609161352 · commit a4099c062543
下载 icloser_darwin_arm64 …
✓ SHA-256 核对通过
✓ 装到 /Users/你/.local/bin/icloser
✓ 装到 /Users/你/.local/bin/kernelhub-desktop(本机管理台)
✓ icloser 1.0.2 (build 202609161352, commit a4099c062543)
装 Runtime:claude(npm install -g @anthropic-ai/claude-code)…
✓ 装好 Runtime:claude(@anthropic-ai/claude-code)
下一步:
  ① 登录 Runtime(只用一次)。装上但没登录,任务照样跑不了:
        claude
     按提示登录完,退出它即可。
  ② cd 到你的项目目录,跑:
        icloser pair

如果里面有「这台机器上没有 npm,Runtime 没装」,说明第 4、5 步没做或没生效 —— KernelHub 本体已经装好,回去装好 Node,再把这一行跑一遍

  清单:stable 频道 · v1.0.2 · build 202609161352 · commit a4099c062543
下载 icloser_darwin_arm64 …
✓ SHA-256 核对通过
✓ 装到 /Users/你/.local/bin/icloser
✓ 装到 /Users/你/.local/bin/kernelhub-desktop(本机管理台)
✓ icloser 1.0.2 (build 202609161352, commit a4099c062543)
  ⚠️ 这台机器上没有 npm,Runtime 没装(KernelHub 本体已经装好)
     装好 Node.js(自带 npm)之后重跑一次这个安装器即可。

如果有「管理台没下下来 —— 只装了 CLI」:多半是网络抖了一下,把这一行再跑一遍即可。

第 7 步 · 核一下装到的是哪一版

$ icloser version

成功:一行里同时有 1.0.2202609161352

icloser 1.0.2 (build 202609161352, commit a4099c062543)

command not found: icloser第 3 步没做;做完再试,或者新开一个终端窗口再试。

第 8 步 · 让 Runtime 登录一次

先看看登录前是什么样。这条命令第一次输出很长(一张矩阵加几十行说明),只看最上面 Claude Code 那一行:登录前是「状态不明」(STARTABLE_AUTH_UNKNOWN),登录后是「✅ 可用」(AUTHENTICATED)。

$ icloser runtimes
这台机器上的 Runtime(14 家已注册 · 1 家装着 · 0 家可直接用 · 0 家卡在登录/凭据)
     Runtime                版本          状态           登录态 / 位置
  ⚠️ Claude Code            问不出         状态不明         声明了探测手段但一条都没命中,状态问不出来(不猜)
  Claude Code            STARTABLE_AUTH_UNKNOWN       起得来,但登录态问不出来:声明了探测手段但一条都没命中,状态问不出来(不猜)

然后登录(第一次运行会带你登录,通常会打开浏览器;登录完、看到能对话的界面后输入 /exit 或按两次 Control + C 退出):

$ claude

再跑一次 icloser runtimes成功:Claude Code 那一行变成「✅ 可用」,六态里是 AUTHENTICATED

这一步本页没有在全新 Mac 上实跑(登录会用到那台机器的钥匙串);同一版 claude 2.1.272 的登录几屏和登录后的样子,见 Linux 从 0 开始 第 8 步。

还卡在登录上(状态写着 STARTABLE_NOT_AUTHED 或「状态不明」(STARTABLE_AUTH_UNKNOWN)):再敲一次 claude 登录。

第 9 步 · 建一个项目目录并进去

建议把项目放在 ~/Projects 这类地方,不要放在「文稿」「桌面」「下载」里(原因见第 15 步那个坑)。已经有项目的,把路径换成你自己的:

$ mkdir -p ~/Projects/my-app
$ cd ~/Projects/my-app

第一次有程序用到 git(常见是下一步的 icloser pair,或者 AI 员工开始干活时),macOS 可能弹窗说需要「命令行开发者工具」。点「安装」,等它装完(几分钟),再把刚才那条命令重跑一遍。

这一步本页没有在全新 Mac 上实跑(那台机器装过 Xcode,没有弹这个窗口)。

第 10 步 · 配对手机

$ icloser pair

它会依次做三件事:

  1. 在当前目录建工作区。
  2. 问你这台机器上 Agent 可以自己做到哪一步 —— 直接回车就是第 3 档「读 + 写 + 执行」,能改文件、能跑构建和测试,多数人选它。
  3. 在窗口里画一个二维码,下面还有一条「扫不了就手工粘这条」的链接。
  这台机器上,Agent 可以自己做到哪一步?(现在 6 档全是关的)

    1  只读                能看能想,不改文件
    2  读 + 写             多数人要的
    3  读 + 写 + 执行      开发 ← 能 build/test/装依赖/生成产物
    4  开发 + 联网         3 + 能上网查当前信息(只取不发)
    5  完整开发            4 + 还能推到远端(git push)
    6  完整开发 + 运维     5 + 能管这台机器的服务与部署(起停服务、docker/kubectl/helm/terraform 的写侧)

  选一个 [1/2/3/4/5/6],回车=3:设备 cli-你的Mac名.local 在工作区 7a9e5014-a076-40c7-a16b-a4b7e61ee88e 的自治边界:
  ✓ 这台机器:读文件 + 写入文件 + 执行脚本 / 命令(要改:icloser grant read write exec web push sysops)
  下一步只有一件事——让手机说的话有人接:

      icloser run

打开手机上的 KernelHub App 扫这个码。

二维码被滚屏冲掉了?千万别再敲一次 pair。再 pair 一次会新建一个空工作区,原来的任务一个都不在里面。敲这一行把码重新调出来:
$ icloser qr

第 11 步 · 在手机 App 里输入邀请码

全新账户第一次 pair 时,窗口里会有这么一句(Mac 实录原句):

  账户 7a9e5014 还没有使用权 —— 在 iPhone 或 Android 上输入一次邀请码即可,
  这台机器会自动继承(CLI 上没有激活入口)

意思是:这个账户还没有使用权,激活只能在手机上做,电脑这边没有入口。打开手机上的 KernelHub App,照提示输入邀请码;兑换成功后,这台电脑自动继承,不用再敲任何命令。

没有码怎么要,见使用权限与激活。已经激活过的账户,pair 时会说「使用权已继承」,这一步跳过。

第 12 步 · 开始接活

$ icloser run

这个窗口别关。它会一直开着,每隔几秒去看有没有新任务 —— 手机上发的任务就是它接的。开头几行会说它加入了哪个工作区、选了哪家 Runtime:

icloser · 设备 cli-你的Mac名.local · 工作区 7a9e5014-a076-40c7-a16b-a4b7e61ee88e
Selected Runtime: claude · 适配器 claude-code(支持会话接续、只读可强制)
  选择原因: eligible pool 里最佳可用:claude
工作目录 /Users/你/Projects/my-app · 轮询 3s
等待命令中(Ctrl-C 退出)…

第 13 步 · 发一条真任务,看它交付

第 12 步那个窗口开着的时候,拿起手机:

  1. 在 KernelHub App 里选中刚配对的工作区,在输入框里打一句话发出去。知道文件名就写上,比如「在 README.md 末尾加一行今天的日期,不要提交」。
  2. 电脑上跑 icloser run 的窗口会滚出新的几行 —— 说明任务被接住了。手机上的任务卡会变成实时视图:读了哪些文件、跑了哪些命令、改了哪些文件。
  3. 任务缺一档权限时,它会在动手之前停下来挂一张卡,点批准只对这一条任务生效。
  4. 跑完之后,点卡片上的「改动」逐行看它改了什么,再读结果:做了什么、改了什么、有什么没做成。结果不满意就点「要求修改」,让同一条任务接着做。

成功:任务状态是完成,「改动」里能看到 README.md 多出的那一行,打开电脑上的文件也确实多了一行。

新机器上没有 Go / Python,第一条任务不会为它停下
KernelHub 会顺手检查机器级的基础工具(Go、Python)。缺了、而这台机器又没批「访问互联网」时,任务照常往下跑,不挂卡icloser run 那个窗口里只多一行记账(CLI 源码里的原句):
  ⓘ go:KernelHub Base(机器级,与这条任务无关)没装上 —— 不挂卡、不阻塞,这条任务照常往下跑。要补齐:在这台机器上跑 icloser env bootstrap go,或在设备权限里批 exec + web 后它会自动补上。
只有任务真要用它 —— 原话里点了名(比如写了 go build),或者干活途中真去跑它 —— 而安装又被拒时,才会在那一刻挂一张卡;批准只对这一条任务生效。已经批过「执行」和「访问互联网」的机器上,它会自己装好接着做,一张卡都不挂(Windows 真机上见过)。

发出去一直没人接:回去看第 12 步那个窗口还在不在;还卡着就做下一步体检。

第 14 步 · 体检(另开一个终端窗口)

第 12 步那个窗口在跑,所以按 Command + N 另开一个窗口,再跑:

$ icloser doctor

这一步本页没有在全新 Mac 上实跑(体检的样子见 Linux 页)。

服务、网关、队列、权限、Runtime 一次查完。哪一项不对,它会直接说下一步该敲什么。

第 15 步 · 关掉窗口也要接活:装成常驻

第 12 步那个窗口一关,手机上再发任务就没人接了。想让它登录 Mac 就自己起来、挂了自己拉起,跑这一行(不需要 sudo;它读的是配对时记下的项目目录,在哪个目录敲都一样):

$ icloser daemon install

这一步本页没有在全新 Mac 上实跑(会和那台机器已有的常驻撞同一个标识)。

之后随时用这一行看它在不在:

$ icloser daemon status

装了常驻之后,第 12 步那个手动开的 icloser run 就可以关掉了。icloser service install 在 Mac 上做的是同一件事,二选一即可。

Mac 常驻最常见的坑:项目在「文稿」「桌面」「下载」里
这三个文件夹受 macOS 隐私保护。从终端里跑 icloser run 时,权限跟着「终端」走(第一次可能弹窗问你,点允许即可);可常驻是登录后由系统在后台拉起来的,没有窗口可以弹 —— 于是它会卡在「进到项目目录」这一步,一直不开工,而 icloser daemon status 仍然显示它在跑。手机上发的任务就一直没人接。
最省事的办法:项目别放在这三个文件夹里(第 9 步建议的 ~/Projects 就没有这个问题)。已经在里面、又不想挪的:不装常驻,在终端里开着 icloser run 用。
想确认自己中没中:在项目目录里敲 pwd,打出来的路径里有 /Documents//Desktop//Downloads/ 就是中了。
$ pwd

3 · 本机管理台

管理台是单独的程序icloser run 不会带起它。起它(这个窗口也会一直占着):

$ kernelhub-desktop --port 18092

然后在浏览器打开 http://127.0.0.1:18092。它只绑在本机回环地址,这台 Mac 之外够不着。看它现在在不在跑、地址是什么:

$ icloser console

已经在跑的话,这一行帮你在默认浏览器里打开它:

$ icloser open

4 · 另一条路:拖进「应用程序」的 KernelHub Desktop

下载页上有 KernelHub-Desktop-1.0.2-macos-universal.dmg(Apple 芯片与 Intel 同一个包,已签名并经 Apple 公证)。打开它,把 KernelHub Desktop 拖进「应用程序」。

我们把这个 DMG 挂上来逐项看过,事实是这样的:

结论:只想点按钮的人,DMG 能省掉「装 KernelHub」那一行;Node 和登录这两件事,终端还是要开一次。

5 · Node 的另一种装法:官方 .pkg 安装器

不想敲第 4、5 步的命令,也可以去 nodejs.org 下 macOS 安装器(.pkg),双击一路「继续」。它装到系统目录,之后 npm install -g 常会报 EACCES(权限不够) —— 包括 KernelHub 安装脚本替你装 claude 那一步。

别用 sudo 硬装,把 npm 的全局目录改到 ~/.local 就好(先做第 2 节第 3 步):

$ npm config set prefix ~/.local && npm config get prefix

成功:打出 /Users/你的用户名/.local。然后把第 6 步的安装命令再跑一遍。

6 · 再装别的 Runtime、网络被堵

再装别的 Runtime(不用重跑整个安装)

默认只装了 claude。能用 npm 装的有:claudecodexqwencodebuddyopencodekimimimopi。下面这一行装的是 codex,换成其中任意一个即可:

$ icloser env bootstrap codex

或者用安装命令指定(同样把 codex 换成你要的):

$ KERNELHUB_RUNTIME=codex curl -fsSL https://icloser.xyz/install | sh

装完同样要登录一次(敲它的名字,比如 codex)。Google 这一家是 agy(Antigravity),不走 npm,要从 Google 官方渠道装。

设代理(只对当前这个窗口生效)

端口 换成你自己的代理地址和端口,最后那段是自证:

$ export https_proxy=http://127.0.0.1:端口 http_proxy=http://127.0.0.1:端口; curl -sS -o /dev/null -w "install -> HTTP %{http_code}\n" https://icloser.xyz/install

成功:打出 install -> HTTP 200。打不出就是代理不对,先别往下走。通了之后,第 2 节的命令照常在这个窗口里跑。

npm 换镜像

$ npm config set registry https://registry.npmmirror.com && npm config get registry

会回显镜像地址。registry.npmmirror.com 是常见的公共镜像,换别的就把地址替换掉。

换 KernelHub 自己的下载源 / 不装 Runtime

公司内网有镜像时(镜像要照原样镜像官方目录,SHA-256 仍然会核;安装脚本本身仍从 icloser.xyz 取):

$ KERNELHUB_INSTALL_BASE=https://你的镜像.example.com/kernelhub curl -fsSL https://icloser.xyz/install | sh

一个 Runtime 都不装(只要 CLI):

$ KERNELHUB_SKIP_RUNTIME=1 curl -fsSL https://icloser.xyz/install | sh

7 · 自己核一遍文件对不对

$ shasum -a 256 ~/.local/bin/icloser ~/.local/bin/kernelhub-desktop

打出来的串和下表比,按你的芯片看对应的两行:

文件字节SHA-256
icloser_darwin_arm64(Apple 芯片)12,052,5605c65a239094a8d039cc880aff65093ecfdaadd48d63278362b89e87313a9b11e
kernelhub-desktop_darwin_arm647,940,400816c5b267d726bb646fdea8ebc61ce6b769fec164b607f07722b785e245ce95a
icloser_darwin_amd64(Intel)12,994,176a393a4223d0c80ddd758a66eb34cc6b0ac957330c9654d85a895849db5de70c4
kernelhub-desktop_darwin_amd648,507,1207c0be4da9458db85100dc64d3791fabd53f8c73b60b186f9d0f0135087ae528c
node-v24.21.0-darwin-arm64.tar.gzbed7eea5325e1108f32ce5228ddd6a5f0f08a499ee42aa7442aea583702f6057
node-v24.21.0-darwin-x64.tar.gz1462cb3b3046b815cf8ea436d3da450ec1a9f11dac7e5a46b0ada5305d7e8097
KernelHub-Desktop-1.0.2-macos-universal.dmg17,841,735582554f659d44c37051b664416b0de423448607907c6d835486a1b3f1954c5e3

KernelHub 那几行是构建本页时从这一版的发布清单 stable.json 读进来的,与它逐字一致;Node 那两行来自 nodejs.org 的 SHASUMS256.txt。安装脚本本身已经替你核过一遍,这里是给想亲眼看的人。

8 · 常见报错:症状 → 原因 → 那一行命令

你看到的原因怎么办
command not found: node没装 Node,或第 3 步没做做第 2 节第 3~5 步
command not found: icloser~/.local/bin 不在 PATH 里做第 2 节第 3 步,或新开一个终端窗口
安装时「这台机器上没有 npm,Runtime 没装」先装了 KernelHub 后装 Node装好 Node,再跑 curl -fsSL https://icloser.xyz/install | sh
npm install -gEACCES用 .pkg 装的 Node,全局目录在系统目录第 5 节:npm config set prefix ~/.local
安装时「管理台没下下来 —— 只装了 CLI」网络抖动把安装命令再跑一遍
Node 校验 FAILED下载坏了重跑第 4 步那一行
curl: (35) / (28) / (7)网络被挡或抖动重跑;不行看第 6 节设代理
弹窗要装「命令行开发者工具」第一次用到 git点「安装」,装完重跑刚才的命令
任务回「本机一家都跑不了」Runtime 没装或没登录claude 登录,再 icloser runtimes 看状态
手机扫了码,发的任务一直没人接icloser run 没开着,也没装常驻在项目目录跑 icloser run,或第 15 步 icloser daemon install
装了常驻、status 说在跑,任务还是没人接项目在「文稿 / 桌面 / 下载」里,常驻卡住了见第 15 步那个坑;先在终端里开着 icloser run
二维码被冲掉了窗口滚屏icloser qr别再 pair
curl: (18) / (35) / (56),或「清单和服务器上的产物对不上了」,或只打一行 curl: (35) … 就结束网络中途断了(实测多次,都是下载到一半断掉,不是产物真的不对)原命令再跑一遍
icloser runtimes 里 Claude Code 的版本栏是「问不出」第一次探测还没问出版本(实测第二次就是 2.1.272)隔几秒再跑一次 icloser runtimes

9 · 卸载 / 清干净

① 装过常驻的,先卸常驻:

$ icloser daemon uninstall

② 先看清楚要删什么(只列,不删):

$ ls -d ~/.kernelhub ~/.kernelhub-gate ~/.kernelhub-protected 2>/dev/null

③ 删数据目录。三个目录分别是配置与任务台账、身份凭据、受保护的根目录,三个都删掉才算清干净。删了就要重新配对:

$ rm -rf ~/.kernelhub ~/.kernelhub-gate ~/.kernelhub-protected

④ 删程序本体:

$ rm -f ~/.local/bin/icloser ~/.local/bin/icli ~/.local/bin/kernelhub-cli ~/.local/bin/devnexus-cli ~/.local/bin/kernelhub-desktop

装过 DMG 的,把「应用程序」里的 KernelHub Desktop 拖进废纸篓。~/.zshrc 里那行 PATH 可以留着(Node 也在那个目录里)。Node 和各家 Runtime 是你自己装的:按本页装的 Node 在 ~/.local 下,不要了就删掉 ~/.local/bin/node~/.local/bin/npm~/.local/bin/npx~/.local/lib/node_modules

接着看:快速上手 · 配对 · 故障排查