Kimi Code 是什么
装上就跑、命令面、七种运行形态,以及它与「一个 CLI 工具」的区别。
装上就跑
官方脚本安装,不需要 Node.js(发布为单文件二进制):
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bashWindows PowerShell:
irm https://code.kimi.com/kimi-code/install.ps1 | iexWindows 上需先装 Git for Windows——Kimi Code 用其自带的 Git Bash 作为 shell 环境。装在非默认位置时,用环境变量 KIMI_SHELL_PATH 指向 bash.exe 的绝对路径。
进项目、起交互式 UI:
cd your-project
kimi首次运行在 TUI 里执行 /login,可选 Kimi Code OAuth 或 Moonshot 开放平台 API Key。
从源码跑
读源码时通常要自己构建。仓库是 pnpm monorepo:
git clone https://github.com/MoonshotAI/kimi-code.git
cd kimi-code
pnpm install
pnpm dev:cli最后一行以开发模式跑 CLI。硬性环境要求(.npmrc 里 engine-strict=true,不满足直接装不上):
| 项 | 版本 |
|---|---|
| Node.js | >=24.15.0(.nvmrc 为 24.15.0) |
| pnpm | 10.33.0 |
命令面
主命令 kimi 直接进 TUI。子命令在 apps/kimi-code/src/cli/commands.ts 注册,实现多在 cli/sub/:
| 子命令 | 源文件 | 作用 |
|---|---|---|
kimi acp | sub/acp.ts | 以 Agent Client Protocol 走 stdio,供 Zed / JetBrains 等编辑器驱动 |
kimi login | sub/login.ts、sub/login-flow.ts | 设备码流程登录 |
kimi provider | sub/provider.ts | 非交互管理模型供应商(add / remove / list / catalog) |
kimi session | sub/session.ts | 非交互管理会话(目前只有 list) |
kimi fork | sub/fork.ts | 把会话分叉成新会话 |
kimi export | sub/export.ts | 把会话导出为 ZIP |
kimi doctor | sub/doctor.ts | 校验 config.toml 与 tui.toml |
kimi web / kimi rc | sub/web/ | 起本地 Kimi 服务并打开 Web UI;rc(别名 remote)经 Remote Control 访问 |
kimi vis | sub/vis.ts | 在浏览器里起会话可视化调试器(apps/vis) |
kimi migrate | migration/command.ts | 从旧版 kimi-cli 迁移数据 |
kimi upgrade | cli/commands.ts | 自升级(别名 update,-y 跳过确认) |
常用选项(定义在 cli/commands.ts,校验在 cli/options.ts):
| 选项 | 作用 |
|---|---|
-S, --session [id] / -c, --continue | 恢复指定会话 / 接着当前目录的上一次会话 |
-p, --prompt | 非交互跑一条 prompt;--output-format 可选 text 或 stream-json |
-y, --yolo | 「Ask When Needed」模式:常规编辑与命令自动执行,高风险操作仍会询问 |
--auto | 「Never Ask」模式:全程不打断 |
--plan | 以计划模式启动 |
-m, --model | 本次使用的模型别名 |
--agent / --agent-file | 指定 agent profile |
--add-dir / --skills-dir | 额外工作目录 / 指定 skills 目录 |
隐藏的 --yes、--auto-approve 等同于 --yolo。
七种运行形态
这是理解这份源码的第一个关键点:Kimi Code 不是「一个 CLI」,而是一个引擎 + 一圈前端。
| 形态 | 入口 | 怎么接到引擎 |
|---|---|---|
| TUI | kimi | node-sdk 的 createKimiHarness → klient 内存传输 → 进程内的 agent-core-v2 |
| headless | kimi -p "..." | cli/v2/run-v2-print.ts 自己 bootstrap() 引擎,直接 loop.submit |
| ACP | kimi acp | 懒加载 packages/acp-server:bootstrap() + klient 内存传输,走 stdio |
| Web | kimi web | packages/kap-server 提供 REST + WebSocket,页面是随 CLI 发布的预构建产物 |
| Remote Control | kimi rc | packages/remote-control 把本机登记到中继,再把流量转发给本地服务 |
| VS Code | apps/vscode | 插件进程里直接调 node-sdk 的 createKimiHarness |
| SDK | packages/node-sdk | @moonshot-ai/kimi-code-sdk,TUI 与 VS Code 共用的宿主层(package.json 标 private,不单独发布) |
Web UI 的源码已不在这个仓库:它在另一个仓库开发,构建产物以 apps/kimi-code/dist-web 的形式提交进来。
七种形态共用同一个引擎。这个复用需求塑造了整份代码的架构——后面那些看似过度设计的层(SDK 宿主层、klient 契约、DI 容器、transcript 独立包),基本都是为了让这些前端能共享同一套核心而不互相绑死。
核心能力
对照《从 LLM 到 Coding Agent》列的「一个 Coding Agent 该做的事」,Kimi Code 的覆盖情况(路径除注明外都在 packages/agent-core-v2/src/ 下):
| 能力 | 实现位置 | 本专栏章节 |
|---|---|---|
| Agent 主循环 | agent/loop/、human/agent/ | Agent 循环:三台状态机 |
| LLM 请求 | human/llm/、llm-adapter/ | kosong |
| 工具系统 | agent/tools/、agent/toolExecutor/、tool/ | 工具契约 |
| 上下文与压缩 | agent/contextProjector/、agent/fullCompaction/ | 上下文、压缩 |
| 会话持久化 | session/、wire/、persistence/、packages/minidb | 会话、minidb |
| 权限与审批 | agent/permissionPolicy/、agent/toolApproval/ 等 | 权限 |
| 子代理 | session/subagent/、features/swarm/ | 子代理 |
| MCP | mcpCore/、agent/mcp/、workspace/workspaceMcp/ | MCP |
| Skills | features/skill/ | Skills |
| Hooks | features/externalHooks/ | Hooks |
| 后台任务 | agent/task/、app/task/ | 后台任务 |
| Web 抓取与检索 | agent/tools/fetch-url/、agent/tools/web-search/ | Web 工具与服务注入 |
| 终端 UI | packages/pi-tui、apps/kimi-code/src/tui/ | pi-tui |
packages/kosong 仍在仓库里,但引擎已不再依赖它,模型请求改由 human/llm/ 完成。
独有的几样东西
相比同类项目,Kimi Code 有几处不常见的选择:
- 视频输入。
ReadMediaFile工具(agent/tools/read-media-file/)能读视频,可以把录屏丢进对话,让模型「看」难以用文字描述的东西。 - AI 原生的 MCP 配置。
/mcp-config是一个内置 skill(features/skill/catalog/builtin/),用对话方式增删改 MCP 服务器,不用手写 JSON。 - Goal 系统。比「任务列表」更进一步的长程目标追踪(
features/goal/),带预算限制;v0.43.0 去掉了 24 小时的时间预算上限,会话关闭期间也不再计时。 - 远程与多 agent。
kimi rc或/remote-control把本地会话经中继开放给远程访问(v0.42 起默认开启);/swarm跑 agent 群,/btw开旁路对话、不干扰主回合;实验中的 tower 模式(KIMI_CODE_EXPERIMENTAL_TOWER=1)让多个 agent 围绕同一目标协作。 - 一次走完的引擎换代。v1 已删除,现役只有
agent-core-v2,演进过程见第 7 部分。
下一篇:monorepo 全景——19 个代码单元各自负责什么、依赖关系如何。