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,終端就找不到 icloser、node。第 2 節第 3 步用一行解決。 |
| git(指令列開發者工具) | 沒裝 | 第一次有程式用到 git 時,系統會彈窗問要不要裝,點「安裝」即可(見第 9 步)。 |
| 一個登入過的 Runtime | 沒有 | KernelHub 不帶模型,它驅動的是你自己裝好、自己登入過的 CLI 編碼 Agent(預設裝 Claude Code)。裝上 ≠ 能用,沒登入照樣跑不了任務。 |
| 一部手機 | — | 裝好 KernelHub App,用來掃碼配對、發任務、核准。 |
- 先裝 Node,再裝 KernelHub。順序反了,裝完開不了工(反了也能救:裝好 Node 後把安裝指令再跑一遍)。
- 裝完讓 Runtime 登入一次(敲
claude,按提示登入)。不登入,任務一律回「本机一家都跑不了」。 - 配對之後要讓
icloser run一直開著(或者裝成常駐)。配對只是把手機和這台 Mac 認識一下,真正去接活的是icloser run。
下面灰框裡的原句取自真跑:在一台 macOS 27.0(Apple 晶片)上,用空的家目錄 + 只含系統目錄的 PATH 模擬一台全新 Mac。和真正的新 Mac 有三處不同,對應步驟都註明了:這台機器裝過 Xcode,所以 git 不彈窗;常駐會和這台機器已有的常駐撞同一個標識,所以沒跑;claude 登入會碰鑰匙串,所以沒在這台上登入。輸出裡的使用者名稱、機器名、路徑已換成示例。
怎麼開啟「終端」
按 Command + 空格,輸入 終端(英文系統輸入 Terminal),回車。出現一個能打字的視窗就對了。本頁沒有任何一步需要 sudo。
2 · 能上網:最短主路徑(共 15 步)
一步一行,複製即用。
第 1 步 · 看看這台 Mac 有沒有 Node
已經裝過 Node:打出一個版本號(比如 v24.21.0)—— 直接跳到第 3 步,第 4、5 步可以不做。
全新 Mac 上會看到(說明沒裝,照做下去):
zsh:1: command not found: node
第 2 步 · 看看是 Apple 晶片還是 Intel(只是看一眼)
打出 arm64 是 Apple 晶片,x86_64 是 Intel。後面的指令會自己選對,不用改。
第 3 步 · 把 ~/.local/bin 放進 PATH
這一行做三件事:如果 ~/.zshrc 裡還沒有,就追加一行;當前視窗立刻生效;最後列印 PATH 的第一段給你看。重複跑不會重複追加。
成功:打出來的是 /Users/你的使用者名稱/.local/bin:
/Users/你/.local/bin
第 4 步 · 下載 Node.js,並用官方校驗和核對
當前 LTS 是 Node v24.21.0。這一行按你的晶片下載 nodejs.org 官方的 .tar.gz,再拿 nodejs.org 官方的 SHASUMS256.txt 核對(大約 50 MB,要等一會兒):
成功:最後一行是檔名後面跟著 OK:
node-v24.21.0-darwin-arm64.tar.gz: OK
最後是 FAILED 或 did 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)
成功:打出兩行版本號,一行 node、一行 npm:
v24.21.0 11.19.0
這樣裝的好處:node、npm 和之後的 icloser、claude 都在 ~/.local/bin 裡,npm 的全域性安裝也落在 ~/.local,全程不需要 sudo,不會報 EACCES。報 command not found: node:第 3 步沒做,回去做完再跑這一行。
第 6 步 · 一行裝 KernelHub
它按順序做這些事,你不用管,看著就行:
| 它做什麼 | 說明 |
|---|---|
| 認機器 | 認出 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 步 · 核一下裝到的是哪一版
成功:一行裡同時有 1.0.2 和 202609161352:
icloser 1.0.2 (build 202609161352, commit a4099c062543)
報 command not found: icloser:第 3 步沒做;做完再試,或者新開一個終端視窗再試。
第 8 步 · 讓 Runtime 登入一次
先看看登入前是什麼樣。這條指令第一次輸出很長(一張矩陣加幾十行說明),只看最上面 Claude Code 那一行:登入前是「状态不明」(STARTABLE_AUTH_UNKNOWN),登入後是「✅ 可用」(AUTHENTICATED)。
这台机器上的 Runtime(14 家已注册 · 1 家装着 · 0 家可直接用 · 0 家卡在登录/凭据)
Runtime 版本 状态 登录态 / 位置
⚠️ Claude Code 问不出 状态不明 声明了探测手段但一条都没命中,状态问不出来(不猜)
Claude Code STARTABLE_AUTH_UNKNOWN 起得来,但登录态问不出来:声明了探测手段但一条都没命中,状态问不出来(不猜)然後登入(第一次執行會帶你登入,通常會開啟瀏覽器;登入完、看到能對話的介面後輸入 /exit 或按兩次 Control + C 退出):
再跑一次 icloser runtimes。成功:Claude Code 那一行變成「✅ 可用」,六態裡是 AUTHENTICATED。
這一步本頁沒有在全新 Mac 上實跑(登入會用到那台機器的鑰匙串);同一版 claude 2.1.272 的登入幾屏和登入後的樣子,見 Linux 從 0 開始 第 8 步。
還卡在登入上(狀態寫著 STARTABLE_NOT_AUTHED 或「状态不明」(STARTABLE_AUTH_UNKNOWN)):再敲一次 claude 登入。
第 9 步 · 建一個專案目錄並進去
建議把專案放在 ~/Projects 這類地方,不要放在「文稿」「桌面」「下載」裡(原因見第 15 步那個坑)。已經有專案的,把路徑換成你自己的:
第一次有程式用到 git(常見是下一步的 icloser pair,或者 AI 員工開始幹活時),macOS 可能彈窗說需要「指令列開發者工具」。點「安裝」,等它裝完(幾分鐘),再把剛才那條指令重跑一遍。
這一步本頁沒有在全新 Mac 上實跑(那台機器裝過 Xcode,沒有彈這個視窗)。
第 10 步 · 配對手機
它會依次做三件事:
- 在當前目錄建工作區。
- 問你這台機器上 Agent 可以自己做到哪一步 —— 直接回車就是第 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 掃這個碼。
第 11 步 · 在手機 App 裡輸入邀請碼
全新帳戶第一次 pair 時,視窗裡會有這麼一句(Mac 實錄原句):
账户 7a9e5014 还没有使用权 —— 在 iPhone 或 Android 上输入一次邀请码即可, 这台机器会自动继承(CLI 上没有激活入口)
意思是:這個帳戶還沒有使用權,啟用只能在手機上做,電腦這邊沒有入口。開啟手機上的 KernelHub App,照提示輸入邀請碼;兌換成功後,這台電腦自動繼承,不用再敲任何指令。
- 一個碼 30 天。
- 多個碼天數累計:實測剩 29 天時再兌一個碼,變成 59 天。
- 同一個碼不能兌兩次:第二次會被拒(
invite_exhausted)。
沒有碼怎麼要,見使用權限與啟用。已經啟用過的帳戶,pair 時會說「使用權已繼承」,這一步跳過。
第 12 步 · 開始接活
這個視窗別關。它會一直開著,每隔幾秒去看有沒有新任務 —— 手機上發的任務就是它接的。開頭幾行會說它加入了哪個工作區、選了哪家 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 步那個視窗開著的時候,拿起手機:
- 在 KernelHub App 裡選中剛配對的工作區,在輸入框裡打一句話發出去。知道檔名就寫上,比如「在 README.md 末尾加一行今天的日期,不要提交」。
- 電腦上跑
icloser run的視窗會滾出新的幾行 —— 說明任務被接住了。手機上的任務卡會變成即時檢視:讀了哪些檔案、跑了哪些指令、改了哪些檔案。 - 任務缺一檔權限時,它會在動手之前停下來掛一張卡,點核准只對這一條任務生效。
- 跑完之後,點卡片上的「改動」逐行看它改了什麼,再讀結果:做了什麼、改了什麼、有什麼沒做成。結果不滿意就點「要求修改」,讓同一條任務接著做。
成功:任務狀態是完成,「改動」裡能看到 README.md 多出的那一行,開啟電腦上的檔案也確實多了一行。
KernelHub 會順手檢查機器級的基礎工具(Go、Python)。缺了、而這台機器又沒允許「訪問網際網路」時,任務照常往下跑,不掛卡;
icloser run 那個視窗裡只多一行記帳(CLI 原始碼裡的原句):ⓘ go:KernelHub Base(机器级,与这条任务无关)没装上 —— 不挂卡、不阻塞,这条任务照常往下跑。要补齐:在这台机器上跑 icloser env bootstrap go,或在设备权限里批 exec + web 后它会自动补上。只有任務真要用它 —— 原話裡點了名(比如寫了
go build),或者幹活途中真去跑它 —— 而安裝又被拒時,才會在那一刻掛一張卡;核准只對這一條任務生效。已經允許過「執行」和「訪問網際網路」的機器上,它會自己裝好接著做,一張卡都不掛(Windows 真機上見過)。發出去一直沒人接:回去看第 12 步那個視窗還在不在;還卡著就做下一步體檢。
第 14 步 · 體檢(另開一個終端視窗)
第 12 步那個視窗在跑,所以按 Command + N 另開一個視窗,再跑:
這一步本頁沒有在全新 Mac 上實跑(體檢的樣子見 Linux 頁)。
服務、閘道器、佇列、權限、Runtime 一次查完。哪一項不對,它會直接說下一步該敲什麼。
第 15 步 · 關掉視窗也要接活:裝成常駐
第 12 步那個視窗一關,手機上再發任務就沒人接了。想讓它登入 Mac 就自己起來、掛了自己拉起,跑這一行(不需要 sudo;它讀的是配對時記下的專案目錄,在哪個目錄敲都一樣):
這一步本頁沒有在全新 Mac 上實跑(會和那台機器已有的常駐撞同一個標識)。
之後隨時用這一行看它在不在:
裝了常駐之後,第 12 步那個手動開的 icloser run 就可以關掉了。icloser service install 在 Mac 上做的是同一件事,二選一即可。
這三個資料夾受 macOS 隱私保護。從終端裡跑
icloser run 時,權限跟著「終端」走(第一次可能彈窗問你,點允許即可);可常駐是登入後由系統在後台拉起來的,沒有視窗可以彈 —— 於是它會卡在「進到專案目錄」這一步,一直不開工,而 icloser daemon status 仍然顯示它在跑。手機上發的任務就一直沒人接。最省事的辦法:專案別放在這三個資料夾裡(第 9 步建議的
~/Projects 就沒有這個問題)。已經在裡面、又不想挪的:不裝常駐,在終端裡開著 icloser run 用。想確認自己中沒中:在專案目錄裡敲
pwd,打出來的路徑裡有 /Documents/、/Desktop/ 或 /Downloads/ 就是中了。3 · 本機管理台
管理台是單獨的程式,icloser run 不會帶起它。起它(這個視窗也會一直佔著):
然後在瀏覽器開啟 http://127.0.0.1:18092。它只綁在本機迴環地址,這台 Mac 之外夠不著。看它現在在不在跑、地址是什麼:
已經在跑的話,這一行幫你在預設瀏覽器裡開啟它:
4 · 另一條路:拖進「應用程式」的 KernelHub Desktop
下載頁上有 KernelHub-Desktop-1.0.2-macos-universal.dmg(Apple 晶片與 Intel 同一個包,已簽名並經 Apple 公證)。開啟它,把 KernelHub Desktop 拖進「應用程式」。
我們把這個 DMG 掛上來逐項看過,事實是這樣的:
- App 裡面自帶一份
icloser(在 App 包的Contents/Resources/icloser,版本 1.0.2 · build 202609161352),App 自己點按鈕時用的就是它 —— 所以裝 KernelHub 本身確實不用再開終端。 - 但它不會把
icloser放進終端的 PATH。本頁裡那些 icloser 指令,在終端裡照樣會報command not found。想在終端裡敲指令,還是要做第 2 節第 3、6 步。 - 它不帶 Node,也不替你登入 Runtime。App 裡「安裝 Runtime」的按鈕是把
npm install -g …送進終端去跑 —— 沒有 Node 一樣裝不上。所以第 2 節第 1~5 步(Node)和第 8 步(登入)走 App 這條路也要做。
結論:只想點按鈕的人,DMG 能省掉「裝 KernelHub」那一行;Node 和登入這兩件事,終端還是要開一次。
5 · Node 的另一種裝法:官方 .pkg 安裝器
不想敲第 4、5 步的指令,也可以去 nodejs.org 下 macOS 安裝器(.pkg),雙擊一路「繼續」。它裝到系統目錄,之後 npm install -g 常會報 EACCES(權限不夠) —— 包括 KernelHub 安裝指令碼替你裝 claude 那一步。
別用 sudo 硬裝,把 npm 的全域性目錄改到 ~/.local 就好(先做第 2 節第 3 步):
成功:打出 /Users/你的使用者名稱/.local。然後把第 6 步的安裝指令再跑一遍。
6 · 再裝別的 Runtime、網路被堵
再裝別的 Runtime(不用重跑整個安裝)
預設只裝了 claude。能用 npm 裝的有:claude、codex、qwen、codebuddy、opencode、kimi、mimo、pi。下面這一行裝的是 codex,換成其中任意一個即可:
或者用安裝指令指定(同樣把 codex 換成你要的):
裝完同樣要登入一次(敲它的名字,比如 codex)。Google 這一家是 agy(Antigravity),不走 npm,要從 Google 官方渠道裝。
設代理(只對當前這個視窗生效)
把 埠 換成你自己的代理地址和埠,最後那段是自證:
成功:打出 install -> HTTP 200。打不出就是代理不對,先別往下走。通了之後,第 2 節的指令照常在這個視窗裡跑。
npm 換映象
會回顯映象地址。registry.npmmirror.com 是常見的公共映象,換別的就把地址替換掉。
換 KernelHub 自己的下載源 / 不裝 Runtime
公司內網有映象時(映象要照原樣映象官方目錄,SHA-256 仍然會核;安裝指令碼本身仍從 icloser.xyz 取):
一個 Runtime 都不裝(只要 CLI):
7 · 自己核一遍檔案對不對
打出來的串和下表比,按你的晶片看對應的兩行:
| 檔案 | 位元組 | SHA-256 |
|---|---|---|
| icloser_darwin_arm64(Apple 晶片) | 12,052,560 | 5c65a239094a8d039cc880aff65093ecfdaadd48d63278362b89e87313a9b11e |
| kernelhub-desktop_darwin_arm64 | 7,940,400 | 816c5b267d726bb646fdea8ebc61ce6b769fec164b607f07722b785e245ce95a |
| icloser_darwin_amd64(Intel) | 12,994,176 | a393a4223d0c80ddd758a66eb34cc6b0ac957330c9654d85a895849db5de70c4 |
| kernelhub-desktop_darwin_amd64 | 8,507,120 | 7c0be4da9458db85100dc64d3791fabd53f8c73b60b186f9d0f0135087ae528c |
| node-v24.21.0-darwin-arm64.tar.gz | — | bed7eea5325e1108f32ce5228ddd6a5f0f08a499ee42aa7442aea583702f6057 |
| node-v24.21.0-darwin-x64.tar.gz | — | 1462cb3b3046b815cf8ea436d3da450ec1a9f11dac7e5a46b0ada5305d7e8097 |
| KernelHub-Desktop-1.0.2-macos-universal.dmg | 17,841,735 | 582554f659d44c37051b664416b0de423448607907c6d835486a1b3f1954c5e3 |
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 -g 報 EACCES | 用 .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 · 解除安裝 / 清乾淨
① 裝過常駐的,先卸常駐:
② 先看清楚要刪什麼(只列,不刪):
③ 刪資料目錄。三個目錄分別是配置與任務台帳、身份憑據、受保護的根目錄,三個都刪掉才算清乾淨。刪了就要重新配對:
④ 刪程式本體:
裝過 DMG 的,把「應用程式」裡的 KernelHub Desktop 拖進廢紙簍。~/.zshrc 裡那行 PATH 可以留著(Node 也在那個目錄裡)。Node 和各家 Runtime 是你自己裝的:按本頁裝的 Node 在 ~/.local 下,不要了就刪掉 ~/.local/bin/node、~/.local/bin/npm、~/.local/bin/npx 和 ~/.local/lib/node_modules。