真能做事的 AI 員工。
治理它背後的每一個 Agent。
KernelHub 是一個 AI 員工執行與治理平台。你雇一位 AI 員工;它的 Agent 負責思考;Claude、Codex、Qwen 這樣的 Runtime 承載這份思考;而你自己 Mac、Linux 或 Windows 上的執行體只落實你允許過的動作 —— 然後把 diff、產物和結果交到你手上。
shell 那條裝 macOS 與 Linux;PowerShell 那條要 Windows PowerShell 5.1 或更新版本。安裝器、可攜包與帶校驗和的二進位檔見下載頁。
橫向滑動看完整條鏈 →
每一幀對應的都是 v1.0.2 真會做的一步。檔名、增刪行數和那行構建輸出,取自一條真跑過的任務。
執行 + 治理,一個產品
兩件事必須同時成立:AI 員工真的把工作做完,它背後的每一個 Agent 都受治理。KernelHub 的設計就是不讓這兩件事中的任何一件靠信任。
AI 員工執行與治理平台
它組織誰來做事(AI 員工),讓智慧跑在合適的 Runtime 上,把每一個動作關在工作區和權限契約裡,透過執行體在你自己的機器上執行,並把證據留下來。
- 不是模型 —— 它自己從不呼叫模型。
- 不是某一個 Agent —— 它治理你已經在用的那些 Agent。
- 不是 Runtime 啟動器 —— Runtime 只是它調度的一環,不是產品本身。
- 不是 CLI 外殼 —— CLI 是進入 KernelHub 的一扇門,不是 KernelHub。
- 不是遠端終端機 —— 沒有人往你機器裡敲字,落到機器上的只有被允許的動作。
員工 · Agent · Runtime · 執行體
多數 Agent 產品把這四樣揉成一個東西。KernelHub 把它們分開,因為重點恰恰是:會思考的那個,不自動等於被允許動手的那個。
你雇的那一位
一個角色:有定義、技能、環境、工作區指派、權限、任務、記憶和結果。例如一位 AI 開發者。你雇的是角色,不是某一家模型。
它做事時用的智慧
理解、規劃、推理、呼叫工具、做決定。Agent 是員工工作裡負責「想」的那一部分。
承載智慧的模型
Claude、Codex、Qwen、Antigravity、MiMo 等。可以切換。切換 Runtime 不會換掉員工 —— 角色、技能、工作區、權限和任務脈絡都還在。
你機器上受管的那雙手
你自己 Mac、Linux 或 Windows 上的受控執行層。它落實被授權的動作 —— 讀、寫、執行、建置、測試、git、產物、裝置 —— 其他一概不做。
我雇的是 AI 員工;Agent 提供智慧;Runtime 提供模型;執行體在我電腦上執行被允許的動作;KernelHub 組織、治理並留下證據。
從你到結果 —— 以及手機站在哪裡
智慧不等於權力。
傳統 Agent 產品把三件事揉成一個:AI 的決策、系統的權限、本機的執行。模型一旦決定,就同時動手了。KernelHub 把它們拆開。
決策、拿權限、執行 —— 一團
替你的程式碼做推理的那個行程,就是握著程式碼鑰匙的那個行程。每一次判斷失誤,都立刻變成磁碟上的變更。
在一處決策,在另一處動手,在你手裡的裝置上核准
Agent 決策。工作區限定在哪裡。權限契約限定做什麼。執行體是唯一動手的那個,而且只在兩者之內。寫檔案、執行指令、建置、推 git、操作裝置,都必須經過 工作區 + 權限 + 執行體。
問題已經變了
問題不再是「有沒有更聰明的 Agent」,而是:誰來組織工作、誰來授權、誰給環境、誰限定工作區、誰選 Runtime、誰確認工作是真的完成了。KernelHub 就是為這個存在的。
雇的是角色,不是模型
在 KernelHub 裡你雇的是一位 AI 開發者。它背後由 Runtime Router 依任務調度合適的 Runtime。員工的身分、角色、技能、工作區、權限和任務脈絡,不會因為 Runtime 換了而改變。
雇用 → 指派 → 做事 → 核准 → 產物 → 結果
一位 AI 員工在 KernelHub 裡的一天,從頭到尾。
橫向滑動看完整條鏈 →
智慧到哪裡為止,權力從哪裡開始
Agent 想決定什麼都可以。只有執行體會動手 —— 而碰到你還沒批的 WRITE 或 EXEC,它等你。
橫向滑動看完整條鏈 →
在手機上說一句。它在你的 Mac 上跑。
這就是 v1.0.2 裡一條任務真實走過的路 —— 下面每一個節點都在已釋出的產品裡。
它真正做的四件事
下面每一條都在 v1.0.2 裡。端到端驗到哪一步,按平臺分:macOS —— 真機驗過;Linux —— 容器裡驗過,真機待驗;Windows —— 真機驗過。這一頁不寫任何還沒上線的東西。
Agent 在你的程式碼本來所在的地方跑
一個 執行體(icloser)守著你自己機器上的工作區,驅動你本來就裝著的 CLI Runtime —— Claude Code、Codex、Antigravity(agy)等。沒有雲端沙箱,不上傳倉庫,不做原始碼映像。
六檔權限,動手之前先核
讀檔案、寫入檔案、執行、聯網、推送、刪除 / 遷移資料分開授權,按裝置、按工作區。不管哪一家 Runtime 在做事,它的寫、改、執行都要經過 KernelHub 內建的 Tool Server,先對照這些授權和工作區邊界核過再跑 —— 不是一句「請你守規矩」的提示詞。
逐行看著它幹活
任務跑著的時候你看得到證據流 —— 讀了哪些檔案、跑了哪些命令、改了哪些檔案 —— 以及帶真實 hunk 的即時 diff。改動歸到這條任務名下,同一個工作區裡別的改動不會混進來。
要你拿主意的事會來找你
任務缺一檔權限時,它會在開工前停下來掛一張卡,帶著到目前為止的 diff,以及它到底在申請什麼的逐字說明。點一次頭,同一條任務接著跑。
兩條任務,從頭到尾
這兩件事 v1.0.2 今天就能做。這裡沒有任何未上線功能的演示。
「PermToggle.kt 裡那三句文案是寫死的,提成常量。然後構建一次確認沒壞。」
- 從手機發出在輸入框裡打出來,進這個工作區的佇列
- 執行體 接單放著 Android 倉的那臺機器認領了它
- 讀 PermToggle.kt證據流裡能看到它開啟的每一個檔案
- 改它它還在幹活時,即時 diff 就出來了
- 跑構建Gradle 在本機跑,輸出即時回傳
- 手機上的核准卡帶著 diff —— +8 −3,連 hunk 一起
- 結果你點頭,同一條任務接著跑完
「給 README.md 加一段安裝說明,語氣跟全文保持一致。」
- 讀取動手寫之前它先把檔案讀一遍
- 修改改動落在你機器的磁碟上
- 即時 Diff你看著那幾段一行行出現
- 結果不需要核准 —— 寫入這一檔本來就批過了
13 家 Runtime —— 六檔到底各由誰管住
「批了一檔權限」和「有東西真的約束住它」是兩回事。這張表是從活的註冊表生成的:逐家、逐檔去問那條授權落不落得了地。這裡沒有一格是手寫上去的。
| 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 —— 那是記帳,不是攔路:它照樣接活,每一次寫、改、執行照樣要過你的授權、工作區邊界和執行規則。
一張在沒人證得出邊界守得住時照樣印 SUPPORTED 的表,比沒有表更糟。所以這裡如實寫明每一檔由誰守住,缺檔就印成缺檔。缺檔不攔活 —— 不管你批了什麼,當場拒絕的只有兩類:碰憑據,和寫到工作區外面。
那道 OS 外層邊界是可選的加固層,做事不靠它。macOS(seatbelt)與 Linux(Landlock)上會畫;Windows 上這一版預設關閉,所以 Windows 機器上缺檔會多一些。畫不上的時候活照樣跑,只是那一格如實印成缺檔。這張表是按機器算的,與其暗示它放之四海皆準,不如把這句話寫在這兒。
不是一個轉圈。是真的 diff。
手機上發的一條任務、在筆記本上執行時的真實輸出。
歸到這條任務名下
任務開始前就已經改過的檔案、以及執行期間被別的程序改的檔案,單獨計數,不進這條任務的 diff。
證據,不是敘述
讀 / 跑命令 / 改檔案,發生一件記一件。來自檔案系統監視的那幾行會壓暗並用被動語態 —— 它只說檔案變了,說不出是誰改的。
事後可回放
每條任務都留著自己的時間線與改動。跑完之後開啟它,按順序讀它做了什麼。
邊界就是產品本身
你的倉庫不會被上傳
執行發生在你的機器上。過網路的是任務原話、進度、你要看的 diff,以及核准。
任何授權都打不開的憑據路徑
憑據路徑 —— SSH 私鑰、雲配置、.env、鑰匙串 —— 以及高風險動作,與你批了什麼無關地被拒絕。你批一檔權限,這份清單一條都不會少。
「就這一次」真的只有一次
為某條任務批的權限只對那條任務、那個工作區生效,任務一進終態立刻失效 —— 靠讀時判定,不靠定時清掃。
守不住的時候,它會告訴你
當一條任務會碰到刪除 / 遷移這條邊界,而接手的 Runtime 表達不了拒絕清單時,KernelHub 會在動手之前停住,請你明確放行這一趟。點頭不批出任何一檔權限。
工作區之間不互通
任務在被下達的那個工作區裡跑。權限按裝置、按工作區記錄,沒有全域性開關。
不留一個沒人能答的提示
Runtime 通常會停下來問一個沒人在的終端。KernelHub 把那次決定搬到你手裡真的拿著的那塊螢幕上。