真能干活的 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 把那次决定搬到你手里真的拿着的那块屏幕上。