数据截至 (上游 commit 0004b748b71c)
Kilo Code — 架构与原理
30 秒导读: Kilo Code 是一个开源编码 agent。它把「读代码、改文件、跑命令、调模型」这套能力做成一个后端进程,再让 VS Code 插件、JetBrains 插件、终端 TUI、云端 Web 各自当这个进程的 HTTP 客户端。换句话说:内核只有一套,前端有四张脸。
1. 这是什么(零基础也能懂)
一句话定义: 一个能听懂自然语言、自己动手改你项目代码的 AI 编码助手,开源、可自托管、模型可换。
解决什么问题、给谁用。 假设你在一个几十万行的仓库里,要「把所有旧的日志调用换成新的 logger,并补上测试」。你不想一个个文件翻。你打开编辑器侧边栏(或终端)说这句话,agent 自己去搜、去读、去改、去跑测试,改到哪一步都问你一句「这个文件我要改成这样,行吗」。用户是日常写代码的工程师,以及要在 CI 里跑无人值守自动化的团队。
它能做什么:
- 跨多文件的代码生成与修改;
- 内联自动补全(ghost text);
- 终端命令执行与浏览器自动化;
- 通过 MCP(Model Context Protocol)接第三方工具;
- 500+ 模型任选、任务中途可切换(README.md:24)。
用起来什么样。 最小的一次真实使用是这样(依据:README.md:44-64、README.md:146-148):
npm install -g @kilocode/cli
cd ~/my-project
kilo # 无参数 = 起终端 TUI,进入交互式会话
# 或者在 CI 里无人值守跑:
kilo run --auto "run tests and fix any failures"
kilo 这个可执行名来自 packages/opencode/package.json:19-21 的 bin 映射(kilo 与 kilocode 都指向 ./bin/kilo);无参数进 TUI 是因为 TUI 命令注册的 yargs 名字就是 $0(packages/opencode/src/cli/cmd/tui.ts:139,TuiThreadCommand,command: "$0 [project]" 在 :140)。
关于血统:一件必须先说清楚的事。 这个仓库不是从零写的。
- README 的 FAQ 直说:Kilo CLI 是 OpenCode 的 fork(README.md:171)。
- 证据在包结构里:整个内核放在
packages/opencode/,包名却是@kilocode/cli(packages/opencode/package.json:4),而它依赖的基础库仍叫@opencode-ai/core、@opencode-ai/llm。 - 根
package.json:22-26用 bun workspaces 把packages/*全部纳管,是个单体 monorepo。 - 源码里满地是
// kilocode_change注释,用来标记 Kilo 相对上游 OpenCode 的改动(例如packages/opencode/src/tool/registry.ts:7、:243、:272)。
一句话直觉。 把它当成一台装了轮子的编译器服务:内核是常驻服务(负责会话、工具、模型、文件),编辑器只是贴在上面的显示屏和键盘。你换显示屏(VS Code → JetBrains → 终端),服务本身一行不改。
2. 顶层全景(它大概怎么转)
这一节只给「大盘」:谁跟谁说话、数据往哪流。任何机制的实现都在后面的章节。