九件事,按發生的順序
每一章講一個概念,用一般人的話:它是什麼、不是什麼、KernelHub 拿它做什麼。這一頁上的每一段動畫和每一張表,都是 v1.0.2 今天就有的。
AI 員工
你雇的那一位。一個有名字的角色 —— 例如 AI 開發者 —— 有定義、它宣告的技能、這些技能需要的環境、被指派的工作區、它在其下工作的權限,以及隨著做事累積起來的任務、記憶和結果。
它不是一段聊天,也不是模型。雇一位員工不會擴大你機器上能做的事 —— 那仍然由權限決定。
KernelHub 把員工放在帳戶這一層:它的角色和技能在被指派的每個工作區裡都一樣,管理台會如實回報它的環境是不是真的就緒。
橫向滑動看完整條鏈 →
Agent
員工做事時用的智慧:理解任務、規劃、推理、呼叫工具、決定下一步做什麼。
決定了,不等於被允許。Agent 可以提議寫一個檔案,但它寫不了。
KernelHub 不造自己的 Agent,也從不親自呼叫模型。它治理你已經在用的那些 Agent:它們想做的每一個動作都要經過工作區、權限契約和執行體。
橫向滑動看完整條鏈 →
Runtime
承載 Agent 智慧的模型(Runtime)—— Claude Code、Codex、Qwen Code、Antigravity(agy)、MiMo 等,由你自己安裝、自己登入。
Runtime 不是員工。換掉它不會改變你雇了誰、他們被允許做什麼、在哪個工作區做事。
Runtime Router 會挑一個在這臺機器上真接得了這條任務的 Runtime。不管跑的是哪一家,它的寫、改、執行都經過同一個內建 Tool Server,對照你的授權核過 —— 不是一句請模型自律的提示詞。
| Runtime | 讀 | 寫 | 執行 | 聯網 | 推送 | 刪除 | 狀態 |
|---|---|---|---|---|---|---|---|
| claude | KernelHub | Runtime 原生 | Runtime 原生 | KernelHub | KernelHub | KernelHub | 正式支援 |
| codex | KernelHub | Runtime 原生 | Runtime 原生 | KernelHub | KernelHub | KernelHub | 正式支援 |
| mimo | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | 正式支援 |
| opencode | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | 正式支援 |
| qwen | KernelHub | KernelHub | Runtime 原生 | KernelHub | KernelHub | KernelHub | 正式支援 |
| acp | KernelHub | KernelHub | — | KernelHub | KernelHub | KernelHub | 未就緒 |
| agy | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | 未就緒 |
| codebuddy | KernelHub | KernelHub | Runtime 原生 | KernelHub | KernelHub | KernelHub | 未就緒 |
| gemini | KernelHub | Runtime 原生 | Runtime 原生 | KernelHub | KernelHub | KernelHub | 未就緒 |
| kimi | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | 未就緒 |
| mcp | KernelHub | KernelHub | — | KernelHub | KernelHub | KernelHub | 未就緒 |
| ohmypi | KernelHub | KernelHub | — | KernelHub | KernelHub | KernelHub | 未就緒 |
| pi | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | KernelHub | 未就緒 |
這家 Runtime 自己有可驗證的開關,KernelHub 把授權落到它的引數上。驗證方式是真把命令列拼出來看,不是讀它的文件。
這家 Runtime 自己沒有這一檔的開關,這一格由 KernelHub 在它程序外面加的那道 OS 外層邊界守著 —— macOS 上是 seatbelt、Linux 上是 Landlock,這兩個平台預設開啟;Windows 上這一版預設關閉,那樣的機器上這一格印成「—」。它是可選的加固層,不是做事的前提;不管這一格是什麼,寫、改、執行照樣先經 Tool Server 按你的授權和工作區邊界核過。
這臺機器上證不出有誰守住這一檔。這一家會標 NOT_READY —— 那是記帳,不是攔路:它照樣接活,每一次寫、改、執行照樣要過你的授權、工作區邊界和執行規則。
執行體
你自己機器上的受控執行層:icloser 這個行程。它落實被授權的動作 —— 讀、寫、執行、建置、測試、git、產物、裝置 —— 並回報發生了什麼。
它不是 Agent。它自己沒有智慧,也沒有自己的權力;它受權限契約和工作區契約約束。
執行體有一道自己的閘:一條指令到了它這裡、卻沒有所需的授權,就在跑之前被拒掉,不管是哪家模型要跑它 —— 而且它做的每一步都記帳。
你雇的那一位
它做事時用的智慧
承載智慧的模型
你機器上受管的那雙手
工作區
你機器上的一個目錄,任務綁定在它上面。任務、權限、記憶和結果都按工作區記錄。
工作區不擁有員工;它是員工被指派去做事的地方。工作區之間互不伸手。
任務只在它被送到的那個工作區裡跑,別處不跑。目錄搬家身分不變;任務、記憶和檔案一起跟過去。
工作區之間不互通
任務在被下達的那個工作區裡跑。權限按裝置、按工作區記錄,沒有全域性開關。
你的倉庫不會被上傳
執行發生在你的機器上。過網路的是任務原話、進度、你要看的 diff,以及核准。
權限
六檔 —— 讀、寫、執行、網路、推送、刪除/遷移 —— 按裝置、按工作區分別授予。六檔之下還有兩類任何授權都打不開:碰你的憑據,和寫到工作區外面。
權限不是給模型的建議。它由 Tool Server 和執行體的閘在動作發生之前核過。
需要一檔它沒有的權限時,任務在動手之前停下來問你。給一條任務的授權,在那條任務結束的那一刻過期。
任何授權都打不開的憑據路徑
憑據路徑 —— SSH 私鑰、雲配置、.env、鑰匙串 —— 以及高風險動作,與你批了什麼無關地被拒絕。你批一檔權限,這份清單一條都不會少。
「就這一次」真的只有一次
為某條任務批的權限只對那條任務、那個工作區生效,任務一進終態立刻失效 —— 靠讀時判定,不靠定時清掃。
守不住的時候,它會告訴你
當一條任務會碰到刪除 / 遷移這條邊界,而接手的 Runtime 表達不了拒絕清單時,KernelHub 會在動手之前停住,請你明確放行這一趟。點頭不批出任何一檔權限。
六檔權限,動手之前先核
讀檔案、寫入檔案、執行、聯網、推送、刪除 / 遷移資料分開授權,按裝置、按工作區。不管哪一家 Runtime 在做事,它的寫、改、執行都要經過 KernelHub 內建的 Tool Server,先對照這些授權和工作區邊界核過再跑 —— 不是一句「請你守規矩」的提示詞。
本機執行
工作在已經放著你程式碼的那台機器上做。什麼都不上傳;過網路的是任務原話、進度、你選擇看的 diff,以及你的核准。
它不是遠端終端機。沒有人往你機器裡敲字;執行體只落實被允許的動作。
下面就是 v1.0.2 裡一條任務真實走過的路 —— 每一個節點在正式產品裡都有。
橫向滑動看完整條鏈 →
每一幀對應的都是 v1.0.2 真會做的一步。檔名、增刪行數和那行構建輸出,取自一條真跑過的任務。
Agent 在你的程式碼本來所在的地方跑
一個 執行體(icloser)守著你自己機器上的工作區,驅動你本來就裝著的 CLI Runtime —— Claude Code、Codex、Antigravity(agy)等。沒有雲端沙箱,不上傳倉庫,不做原始碼映像。
不留一個沒人能答的提示
Runtime 通常會停下來問一個沒人在的終端。KernelHub 把那次決定搬到你手裡真的拿著的那塊螢幕上。
手機核准
任務碰到它沒有的 WRITE、EXEC 或其他邊界時,你手裡的裝置上會出現一張卡:帶著到目前為止的 diff,以及它要求的一字不差的原話。
手機不是執行體,也不是 Runtime。它送任務、做核准、讀結果。
核准一次,同一條任務接著跑 —— 不重跑,你在決定的時候什麼也沒被做。
要你拿主意的事會來找你
任務缺一檔權限時,它會在開工前停下來掛一張卡,帶著到目前為止的 diff,以及它到底在申請什麼的逐字說明。點一次頭,同一條任務接著跑。
任務 · 核准 · 結果
手機不是執行體。它送任務、做核准、讀結果。
「PermToggle.kt 裡那三句文案是寫死的,提成常量。然後構建一次確認沒壞。」
- 從手機發出在輸入框裡打出來,進這個工作區的佇列
- 執行體 接單放著 Android 倉的那臺機器認領了它
- 讀 PermToggle.kt證據流裡能看到它開啟的每一個檔案
- 改它它還在幹活時,即時 diff 就出來了
- 跑構建Gradle 在本機跑,輸出即時回傳
- 手機上的核准卡帶著 diff —— +8 −3,連 hunk 一起
- 結果你點頭,同一條任務接著跑完
「給 README.md 加一段安裝說明,語氣跟全文保持一致。」
- 讀取動手寫之前它先把檔案讀一遍
- 修改改動落在你機器的磁碟上
- 即時 Diff你看著那幾段一行行出現
- 結果不需要核准 —— 寫入這一檔本來就批過了
證據:Diff · 產物 · 結果
「完成」是一句話,證據才讓它成立。每條任務結束時都有歸屬於它的 diff、它產出的產物,以及一個「完成 / 待修 / 已停」的結果 —— 從不謊報「完成」。
結果不是聊天摘要。中途有指令被拒過,結果會寫出來。
Live Diff 在任務還在跑的時候就從執行體流上來;檔案清單歸屬到這條任務,同一工作區裡其他的變更不會混進去。
手機上發的一條任務、在筆記本上執行時的真實輸出。
歸到這條任務名下
任務開始前就已經改過的檔案、以及執行期間被別的程序改的檔案,單獨計數,不進這條任務的 diff。
證據,不是敘述
讀 / 跑命令 / 改檔案,發生一件記一件。來自檔案系統監視的那幾行會壓暗並用被動語態 —— 它只說檔案變了,說不出是誰改的。
事後可回放
每條任務都留著自己的時間線與改動。跑完之後開啟它,按順序讀它做了什麼。