九件事,按发生的顺序
每一章讲一个概念,用普通人的话:它是什么、不是什么、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。
证据,不是叙述
读 / 跑命令 / 改文件,发生一件记一件。来自文件系统监视的那几行会压暗并用被动语态 —— 它只说文件变了,说不出是谁改的。
事后可回放
每条任务都留着自己的时间线与改动。跑完之后打开它,按顺序读它做了什么。