# Kimi Code 是什么

> 装上就跑、命令面、七种运行形态，以及它与「一个 CLI 工具」的区别。

- 作者：David（道雾轩）
- 专栏：Kimi Code 源码解读（https://daiw.org/manual/kimi-code.md）
- 最后更新：2026-09-19
- 原文：https://daiw.org/manual/kimi-code/what-is-kimi-code
- 转载与引用：请注明出处并附原文链接（https://daiw.org/about/copyright）

## 装上就跑

官方脚本安装，**不需要 Node.js**（发布为单文件二进制）：

```sh
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash
```

Windows PowerShell：

```powershell
irm https://code.kimi.com/kimi-code/install.ps1 | iex
```

<Callout type="warn">
  Windows 上需**先装 [Git for Windows](https://gitforwindows.org/)**——Kimi Code 用其自带的 Git Bash 作为 shell 环境。装在非默认位置时，用环境变量 `KIMI_SHELL_PATH` 指向 `bash.exe` 的绝对路径。
</Callout>

进项目、起交互式 UI：

```sh
cd your-project
kimi
```

首次运行在 TUI 里执行 `/login`，可选 Kimi Code OAuth 或 Moonshot 开放平台 API Key。

## 从源码跑

读源码时通常要自己构建。仓库是 pnpm monorepo：

```sh
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](https://agentclientprotocol.com/) 走 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》](https://daiw.org/manual/llm-to-agent)列的「一个 Coding Agent 该做的事」，Kimi Code 的覆盖情况（路径除注明外都在 `packages/agent-core-v2/src/` 下）：

| 能力 | 实现位置 | 本专栏章节 |
| --- | --- | --- |
| Agent 主循环 | `agent/loop/`、`human/agent/` | [Agent 循环：三台状态机](https://daiw.org/manual/kimi-code/agent-loop) |
| LLM 请求 | `human/llm/`、`llm-adapter/` | [kosong](https://daiw.org/manual/kimi-code/kosong) |
| 工具系统 | `agent/tools/`、`agent/toolExecutor/`、`tool/` | [工具契约](https://daiw.org/manual/kimi-code/tool-contract) |
| 上下文与压缩 | `agent/contextProjector/`、`agent/fullCompaction/` | [上下文](https://daiw.org/manual/kimi-code/context)、[压缩](https://daiw.org/manual/kimi-code/compaction) |
| 会话持久化 | `session/`、`wire/`、`persistence/`、`packages/minidb` | [会话](https://daiw.org/manual/kimi-code/session)、[minidb](https://daiw.org/manual/kimi-code/minidb) |
| 权限与审批 | `agent/permissionPolicy/`、`agent/toolApproval/` 等 | [权限](https://daiw.org/manual/kimi-code/permission) |
| 子代理 | `session/subagent/`、`features/swarm/` | [子代理](https://daiw.org/manual/kimi-code/subagents) |
| MCP | `mcpCore/`、`agent/mcp/`、`workspace/workspaceMcp/` | [MCP](https://daiw.org/manual/kimi-code/mcp) |
| Skills | `features/skill/` | [Skills](https://daiw.org/manual/kimi-code/skills) |
| Hooks | `features/externalHooks/` | [Hooks](https://daiw.org/manual/kimi-code/hooks) |
| 后台任务 | `agent/task/`、`app/task/` | [后台任务](https://daiw.org/manual/kimi-code/background) |
| Web 抓取与检索 | `agent/tools/fetch-url/`、`agent/tools/web-search/` | [Web 工具与服务注入](https://daiw.org/manual/kimi-code/web-tools) |
| 终端 UI | `packages/pi-tui`、`apps/kimi-code/src/tui/` | [pi-tui](https://daiw.org/manual/kimi-code/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 部分](https://daiw.org/manual/kimi-code/agent-core-v2)。

下一篇：[monorepo 全景](https://daiw.org/manual/kimi-code/monorepo-map)——19 个代码单元各自负责什么、依赖关系如何。
