Kimi Agent 技术报告

生命存在脑中。

Lives comes from box.


1. 摘要

Kimi Agent 沙箱是 Moonshot 自研的 cubevm microVM 容器平台,核心设计是两阶段”延迟绑定”生命周期:boot 阶段拉起一个无身份、可池化预热的空壳服务池;claim 阶段才由控制面动态注入项目存储、用户资产 overlay 和短期凭证。云端模型通过沙箱内一个无鉴权的 FastAPI kernel-server 执行代码,通过 CDP 代理操作有头 Chromium,通过 E2B 定制的 envd 下发命令。能力层由 269 个 skills + 18 个 plugins 构成,其中大量技能搬运自 OpenClaw/ClawHub 社区生态再本地化。整套系统最有价值的不是单个技能,而是”延迟绑定、薄插件、确定性引擎兜底”的工程范式。


分章详报(19 章) | 📦 GitHub 仓库(全部原文)

2. 系统架构

2.1 总体架构

📑 分章详报:01 · 系统与容器层

┌──────────────────────────── Moonshot 云端(控制面)────────────────────────────┐
│  kimiwarden       沙箱调度/claim,签发 bind_token(HS256 JWT) + overlay manifest  │
│  kimiagent 模型    经 agent-gw.kimi.com/coding 与沙箱交互(API key 认证)        │
│  PortalService     kimi-api-sandbox.msh.team/apiv2(Connect-RPC)               │
│  drive9 存储       10.213.5.144(项目工作区,内网明文 HTTP)                     │
└───────────┬──────────────────────────────────────────────┬────────────────────┘
            │ claim 时动态下发                              │ envd Connect-RPC :49983
┌───────────▼──────────────────────────────────────────────▼────────────────────┐
│  cubevm microVM(Cube Hypervisor,定制内核 6.6.69-cube,root=/dev/pmem0 dax)    │
│  └─ Debian 12 容器(s6-overlay 3.1.6.2,PID1 = s6-svscan /run/service)        │
│     ├─ portal        Go FUSE 资产门面 → /mnt/portal-overlay(只读云端资产)      │
│     ├─ drive9-fuse   项目工作区 → /mnt/agents(读写,close-sync 回传)          │
│     ├─ kernel-server FastAPI :8888 → jupyter ipykernel(代码执行核心)          │
│     ├─ browser-guard Chromium 151 看门狗(CDP :9222,渲染到 Xvnc :99)          │
│     ├─ project-cdp-proxy  :9223→9222(伪装名 socat,安全暴露 CDP 给云端)      │
│     ├─ kasmvnc       Xvnc :99 / websocket :6080(向用户直播 agent 桌面)       │
│     ├─ envd          E2B envd 定制版(云端→沙箱命令/文件通道)                  │
│     └─ sshd          AllowUsers kimi(uid 999,无 sudo,shadow 锁定)          │
└─────────────────────────────────────────────────────────────────────────────────┘

2.2 容器与虚拟化层

  • 双层结构:cubevm microVM(DMI 显示 “Cube Hypervisor”,内核 cmdline 含 cubevm)内再跑 cgroup v1 + overlay2 容器;镜像层在 /run/blk-cube/vdc(61 层),可写层在 vda。
  • OS:Debian 12 (bookworm),定制内核 6.6.69-cube.pvm.guest;无 /.dockerenv;主机名 = 容器 ID 前 8 位。
  • 资源规格:3 核 CPU / 4 GiB 内存硬限 / 无 GPU / 41G 根盘 / nofile 1024 / /dev/shm 64M / 无 swap。
  • 网络:eth0 为 169.254.68.4/30 链路本地段 + 宿主 NAT;DNS 走腾讯 DNSPod;出站公网不过滤(出口腾讯云);环境变量指向腾讯 SCF。
  • 时区:系统 UTC,平台注入 TZ=Asia/Shanghai

2.3 引导链(s6-overlay 上游原版零定制)

/init(s6-overlay 3.1.6.2)→ stage0 → PID1 s6-svscan /run/service
  → bundle "user" 拉起 7 个基础服务:envd / portal / kernel-server /
    kasmvnc / browser-guard / socat(实为 cdp-proxy) / sshd
  → claim 时控制面再注入:drive9-fuse / drive9-fuse-watchdog

环境变量三级来源:平台注入(container_environment→with-contenv)、sshd SetEnv(定制 PATH/npm 镜像)、各 run 脚本内 export。权限模型:root 持基础设施,kimi(999:995) 持用户负载,脚本用 s6-setuidgid 降权,服务依赖用 s6-svwait 等待。

2.4 生命周期:两阶段延迟绑定(核心设计)

阶段动作结果
boots6 拉起空 manifest portal + 基础服务无项目身份、无用户资产的空壳,可池化预热
claim(实测比 boot 晚 ~7 分钟)kimiwarden POST bind_token(JWT) 到 portal:8080 → ValidateBindToken/GetS3Credentials 换限定范围 STS → POST manifest 动态挂载;同时注入 drive9-fuse 服务工作区 /mnt/agents 挂载、用户资产 overlay 上线、凭证生效
回收约 50 分钟空闲后整箱销毁工作区数据已在 close-sync 时回传 drive9

凭证零镜像烘焙:静态 K_OSS_* 凭证已废弃且 fails-closed;API key 只在 root 的 /root/.kimi/agent-gw.json(只读 444),kimi 用户读不到;有 KIMI_CANARY 灰度机制。项目 ID(drive9 挂载对象)与 chat ID(agent-gw 身份)是两个独立对象——同一工作区可被不同 chat 复用。

2.5 存储与持久化(三层)

📑 分章详报:03 · 存储与持久化

  1. 容器 overlay 根 —— 临时,随回收销毁。
  2. portal FUSE /mnt/portal-overlay(只读) —— 云端用户资产:skills 插件、.user(用户自建技能)、.vault.websites-templates.agent-gw.json,经 reception preset 的 init_script 用符号链接缝进 /app
  3. drive9 FUSE /mnt/agents(读写) —— 项目工作区,写策略 close-sync + 本地 shadow 缓存 + SSE 缓存失效;profile kimi-project[local] glob 清单显式声明哪些路径不回传云端(node_modules/.git/构建产物等)——”什么持久”是可审查的配置。watchdog 用小目录探活 + mkdir 自愈 + 连续失败 pkill 交 s6 重启。

2.6 代码执行运行时

📑 分章详报:02 · 代码执行运行时

  • 链路:云端 agent → POST :8888/kernel/execute {code, timeout=30s} → kernel-server(FastAPI,约 800 行,kimi 用户)→ jupyter_client/ZMQ → ipykernel → iopub 消息聚合,图片 base64 内联 JSON 回传。
  • API 共 9 端点(health/status/execute/reset/interrupt/connection/debug 等)。
  • *完全无鉴权、CORS **——安全完全依赖容器网络隔离(/kernel/connection 会明文泄露 ZMQ HMAC key,属设计弱点)。
  • 工程细节:kernel 自动探活重启、全局锁串行、超时 SIGINT、每次 reset 后自动重放 init 脚本(matplotlib 中文字体/PIL viewer)、注入 DISPLAY=:99 让代码天然可操作 GUI、执行 cwd 可配。

2.7 浏览器与桌面自动化

📑 分章详报:05 · 浏览器与桌面自动化

  • 有头 Chromium 151 渲染到 KasmVNC 虚拟桌面 :99(1920×1080);browser_guard.py 看门狗每秒轮询 CDP:无标签页自动补、窗口被最小化强制拉回最大化、崩溃指数退避自愈重启。
  • 反检测基线:--disable-blink-features=AutomationControlled + /tmp 一次性 user-data-dir + pdf.js 扩展(PDF 当网页渲染截图)。
  • project-cdp-proxy.py(295 行纯 asyncio):改写 Host 头绕 Chrome 校验 + 重写 webSocketDebuggerUrl(ws→wss),把 loopback CDP 安全暴露给公网。
  • KasmVNC 面向”给用户直播 agent 桌面”:-SecurityTypes None -AlwaysShared -DisconnectClients 0,websocket :6080 内置 noVNC。
  • 自动化库:playwright 1.62 + PyAutoGUI + websockets + python-xlib(无 selenium/puppeteer)。

2.8 与云端的通信通道

📑 分章详报:04 · 云端网关与外部连接

通道方向认证
agent-gw.kimi.com/coding沙箱→云端模型/agent 服务api_key(root 只读文件持有)
kimi-api-sandbox.msh.team/apiv2portal→PortalServicebind_token JWT→STS
envd :49983 Connect-RPC云端→沙箱命令/文件平台内部
CDP 代理 :9223云端→沙箱浏览器网络隔离
drive9 10.213.5.144沙箱→存储env 注入 JWT
kasmvnc :6080用户浏览器→桌面直播VNC 密码
npm/pypi *.mirrors.msh.team包安装(内网镜像)

2.9 预装工具链(”自带电池”)

📑 分章详报:12 · 预装工具链11 · 用户自定义层与 CLI

  • Python 3.12(180 包,7.9GB):PDF 全家桶 12 个(pymupdf/pikepdf/pdfplumber/reportlab…)、python-docx/pptx/openpyxl、markitdown、easyocr+torch、PyAutoGUI、playwright、Moonshot 自研 agent-gw SDK。
  • Node 20(714MB 全局):@kimi-slides/cli、mermaid-cli、md-to-pdf、pdf-lib、pptxgenjs、sharp。
  • 系统级:ffmpeg、ImageMagick 6、pandoc、LibreOffice 7.4、Chromium 151、qpdf、wkhtmltopdf、tectonic 单二进制替代 texlive(26MB 换 2-3GB 镜像)。
  • 字体 1996 条:Noto CJK SC/TC/HK/JP/KR × Sans/Serif/Mono 全套。
  • 自研二进制:portal、envd、drive9、magika(文件类型识别)、dws(钉钉 CLI)、lark-cli(飞书 CLI)。
  • 浪费清单:无 GPU 装 CUDA 版 torch(~5G)、浏览器三份冗余(~2.2G)、tesseract 只有英文包。

3. 能力层:269 Skills + 18 Plugins

3.1 关键数字与来源

📑 分章详报:06 · Skills 盘点①07 · Skills 盘点②08 · Skills 盘点③09 · Skills 盘点④

  • 269 个 skills 在 /app/.agents/skills/镜像内置真实目录,经两次实例核查零差异);116 个带 scripts/、78 个带 references/、31 个带 _meta.json(ClawHub 市场元数据:ownerId/slug/version/publishedAt,目录名与 slug 解耦)。
  • 约 1/3 纯提示词、28+ 带可移植单文件脚本、少数带模板树、3-4 个依赖外部 API 凭据。
  • 生态来源:大量中英孪生技能(中文版带 <!-- Localized from: -->)、残留 /data/clawd/ 路径、.security-scan-passed 标记——存在”社区导入 → 批量本地化 → 安全扫描入库”流水线。
  • 18 个 plugins 在 portal overlay(云端按会话动态下发),与镜像内置的 skills 形成”静态能力 vs 动态资产”的分发分界。

3.2 Plugin 体系

📑 分章详报:10 · Plugins 体系

  • manifest 格式 kimi.plugin.jsonskillInstructions(直注系统提示)+ skills 路径 + 可选 sessionStart/MCP servers/界面元数据。
  • 三类:远程 MCP 型(github/cloudflare/baidu-pan,零代码)、agent-gw 网关型(13 个数据源/媒体插件,统一 describe/call CLI 壳,API 文档运行时从网关拉取——插件永不过期)、纯 skill 型。
  • 沙箱内无代码解析 manifest——加载方(云端)与执行方(沙箱)彻底解耦。
  • cloudflare 插件用 Code Mode:只放 search/execute/docs 3 个工具,模型写 JS 在 Cloudflare Worker 沙箱跑,~1k token 覆盖 2500+ API。

3.3 明星技能深拆

文档(docx / pdf)

📑 分章详报:13 · docx / pdf 深拆

  • docx 可靠性靠确定性引擎兜底:WIR 窗口化事务编辑引擎(15.3MB Cython .so,闭源)+ docx_lib 静默修复 OOXML 结构 + .NET Validator 语义校验,失败阻断交付。禁 python-docx 是因为保真度与事务锚点缺失。
  • md2docx 管线:citation T1/T2/T3 分级检测 → pandoc → footnote/endnote/hyperlink 交叉引用后处理。
  • pdf 三路由:HTML+Paged.js+Playwright(默认)/ LaTeX+tectonic(仅明示)/ 已有 PDF 处理(pikepdf+pdfplumber)。Paged.js 的 DOM 重构是大量禁令的总根源(禁 CSS counter、禁 JS 图表库、封面必须 <img>)。
  • 许可:Moonshot 专有许可,禁再分发/逆向。

Slides/PPT(kimi-slides)+ 设计(kimi-design)

📑 分章详报:14 · slides / design 深拆

  • 整套自研文档技术栈:.pptd YAML DSL(1639 行规范:7 种元素、13 种 chart series、22 种动画、三层样式优先级、$token 主题引用)+ Rust 闭源 CLI(@kimi-slides/cli 只是安装器壳,postinstall 从 statics.moonshot.cn 拉 14MB 二进制,私有 registry 公网装不到)。
  • check --level auto 确定性修复闭环:14 类通用 + 7+ 图表错误码全文档化。
  • 字体别名归一化(fonts.json):微软雅黑/宋体/黑体/楷体/仿宋全别名到内置开源字体(25 款 68MB)。
  • 设计系统 ~60 套(PART A 品类基线 + PART B 签名系统双层)+ 7 场景设计纪律手册(禁卡片/禁均分/禁 AI 配色)+ style.md 设计简报机制(方向探索+落选理由+退化风险)。
  • kimi-widget iframe 契约:禁外部资源、强制 var(--xxx) CSS token、sendPrompt 意图回传、105 个 SVG 图标带 avoid_for 反向消歧。

集群(swarm 全家)

📑 分章详报:15 · swarm 集群深拆

  • 本体是”git 对象库当消息总线“:共享无远端仓 + 每子代理唯一 git worktree,基础设施仅 setup-local.sh 105 行,其余全是提示词纪律。
  • 最精妙设计:.env 借 gitignore 边界做”信箱”——密钥不走 git 但新 worktree 自动继承。
  • 编排乐谱(vw-webapp-swarm 415 行):7 阶段、Designer 单一创意权(提示词逐字锁定)、缝合点冻结清单(App.tsx/router.ts/schema.ts)、octopus merge、反验证螺旋(子代理 commit 即返回、主代理 build 一次即 STOP)。
  • 隐藏契约:子代理名含 “designer” 触发模型路由。
  • 运行时原语仅需 create_subagent + task 两个;盲评协议(executor/grader/comparator/analyzer 四角色同轮成对 with/baseline)。
  • deep-research-swarm:Phase 0 两变量路由(有无文件×话题宽度)、维度间刻意 ≥30% 重叠制造交叉验证、Conflict Zone 冲突不抹平、量化搜索预算(A≥250/B≥200/C=0/D≥150 次)。

网站(webapp/backend-building)

📑 分章详报:16 · 网站技能深拆

  • graft 增量安装.backend-features.json manifest 记账、特性差集幂等、遗留工程探针反推、safe_copy 永不覆盖用户代码、动文件前 git commit 快照兜底。
  • 9 个 .mjs 正则锚点合并器替代 LLM 手写 patch;模板与补丁器协同设计(ping 路由、TODO 注释是预留注入点)。
  • 预装 node_modules 模板树实现零下载冷启动(镜像构建期预跑 npm install)。
  • portal 一键供应 app_id/secret + DATABASE_URL + Kimi OAuth(四端点 + JWKS 验签);SKILL.md 尾部 “Product Knowledge” 防幻觉工程(预览≠发布、工具只回 version ID 禁编造 URL)。

深度研究(deep-research 系)

📑 分章详报:17 · 深度研究技能深拆

  • 引用链四段:云端搜索工具分配不可变 ID → 写 /mnt/agents/.store/citation.jsonl → 模型原样引用(禁重排/禁合并)→ 前端按 ID 映射来源卡片;docx/pdf 转换按首现序重排显示编号(两层编号分离),缺失 ID 保留 marker 绝不静默删除。可脱离 Kimi 前端独立运行,硬依赖只是”工具侧 ID 稳定 + JSONL 溯源库”。
  • 单 agent 版:≥10 步搜索循环 + 每轮强制 Thinking/Summary 递归反思。
  • equity-research 的零容忍重试协议:”失败五类→参数诊断树→指数退避→换源→跳过并标注”,LLM 调外部 API 的通用防编造红宝书。
  • interactive-research-report-en:全库 QA 密度最高——模块级”截图→批评→三重测试→修复复验”循环,收尾派 3-4 个只诊断 review agent 分片人工审图。

表格(xlsx)

📑 分章详报:18 · xlsx 表格深拆

  • 80% 价值是纯提示词:金融三子技能(三表 959 行勾稽公式库 / DCF 456 行单元格级版式 / comps 620 行 Year Lock 协议)。
  • 公式保真原则:只有真输入/假设/历史数据允许硬编码,派生值必须 Excel 活公式驱动,敏感性表也不例外。
  • 行业惯例编码:蓝=输入/黑=公式/绿=跨表拉取/红=外部链接;中国红涨绿跌;Balance Check 容差公式。
  • reference-check 专治 AI 写公式 4 类典型病(超范围引用/卷入表头/聚合≤2格/孤立公式),封堵”errors will auto-resolve in Excel”推诿话术。
  • 硬骨头:闭源 Xlsx CLI(.NET 77MB,内嵌公式求值引擎),替代路径为 LibreOffice headless 重算 + Python 静态检查器。

4. Blueprint:复刻一个 Kimi Agent 沙箱的设计蓝图

按分层给出”如果要自己建一套”的最小设计:

L1 基础设施层

  • microVM/容器池 + s6-overlay 标准 init(上游原版即可),服务全走 s6-rc bundle 声明。
  • 两阶段生命周期:boot 空壳(可预热池化)→ claim 动态绑定(项目存储 + 资产 overlay + 短期凭证)。凭证全走 bind_token→STS 交换,fails-closed,零镜像烘焙。
  • 资源硬限:内存/CPU/nofile/shm 全部卡死;出站网络按需过滤(Kimi 选择不过滤)。

L2 执行层

  • kernel-server:FastAPI 薄封装 + jupyter_client KernelManager + iopub 聚合 + base64 图片回传(~800 行),但必须补 token 鉴权(Kimi 靠网络隔离省了它)。
  • 每次 kernel reset 自动重放 init 脚本(绘图/中文字体/GUI 注入),保证”模型画图→图片回传”体验稳定。
  • envd 式云→沙箱命令通道(E2B 开源组件可直接移植)。

L3 浏览器层

  • 有头 Chromium + 看门狗(保活标签页/强制最大化/崩溃自愈)+ 反检测 flag + 一次性 profile + pdf.js 扩展。
  • CDP 代理:Host 头改写 + webSocketDebuggerUrl 重写,把调试口安全暴露给控制面。
  • 可选 KasmVNC 桌面直播给用户看。

L4 能力层

  • skills = 镜像内置(SKILL.md 目录,声明式依赖 frontmatter);plugins = 云端动态下发(统一 manifest 打包提示词+sessionStart+MCP+界面元数据)。
  • 薄插件模式:插件只做 describe/call CLI 壳,API 文档运行时拉取,永不过期;凭证与执行用户隔离。
  • 明星能力的统一范式 = 确定性引擎兜底:DSL/窗口化引擎负责可靠性,提示词负责路由与质量规则(docx 的 WIR、slides 的 .pptd+check、xlsx 的 CLI 校验门)。
  • 多代理协作 = git worktree 共享仓 + 提示词纪律(缝合点冻结、反验证螺旋),基础设施只需 ~105 行脚本。
  • 引用溯源 = 工具侧不可变 ID + JSONL 库 + 两层编号分离,可脱离特定前端。

L5 持久化层

  • 远端 FUSE 工作区 close-sync 回传 + profile 显式声明哪些路径不上云 + watchdog 探活自愈。

5. 沙箱文件目录树

(按需求方要求略去目录树采集。关键路径已在第 2、3 章正文中逐一标注:skills=/app/.agents/skills/、plugins=/mnt/portal-overlay/.agents/plugins、工作区=/mnt/agents、运行时代码=/app/*.py、凭证=/root/.kimi/agent-gw.json。)

关于 kimiagent 原生系统提示词:经实地核查,沙箱内不存在 kimiagent 的系统提示词——agent 的主循环与系统提示词完全在云端(agent-gw.kimi.com/coding 之后),沙箱只是执行环境。沙箱内最接近的注入物是 plugin manifest 的 skillInstructions 字段(会直注系统提示)与各 skill 的 SKILL.md。agent_gw SDK(site-packages/agent_gw/)仅 5 个文件,是纯 HTTP 客户端(OpenAI/Anthropic 兼容路由 + /v1/search、/v1/fetch、/v1/tools 分发器),无任何提示词内容。


6. 合规与注意事项

📑 分章详报:19 · 缺口补采与核查

  • docx/pdf/xlsx/kimi-slides 等明星技能的引擎二进制带 Moonshot 专有许可(禁再分发/逆向);纯提示词与文档类资产不受此限,但批量再分发前应自行核对各技能目录下的 LICENSE/_meta.json。
  • 报告中所有密钥/token 均已脱敏;沙箱内发现的凭证(agent-gw api_key 等)属账号级敏感信息,不应外泄。
  • 本报告基于单次分析窗口(约 50 分钟生命周期内两轮采集),软件版本与技能库存随镜像更新可能变化。

报告完

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注