Skip to content

Commit 52db47d

Browse files
committed
docs(migration): mark G-7 complete — web-only achieved
- AGENTS.md: migration progress to 2026-08-11 (stage F + G-7 done); TS whitelist table now lists only generated wire types, web/vscode shells and the distribution shell; apps/kimi-code section rewritten as the shell; package commands, CI and test conventions updated - CODEX_MIGRATION_PLAN.md: stage F ✅, G-7 ✅ (shell-ify, upgrade in Rust, SEA chain removed, flake builds Rust), §5 apps/kimi-code rows retired
1 parent b9db73f commit 52db47d

2 files changed

Lines changed: 19 additions & 58 deletions

File tree

AGENTS.md

Lines changed: 15 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ This is a TypeScript monorepo built for agent-assisted development. This file is
6969

7070
> **Status (2026-08-03):** the JS agent engines (`agent-core`, `agent-core-v2`) are **retired**. The only engine is the Rust engine (`packages/kimi-agent`). `schema.ts` `engine` enum is `'rust'` only — no JS fallback.
7171
>
72-
> **方向(2026-08-03 定案,2026-08-06 收紧,见 `CODEX_MIGRATION_PLAN.md` 顶部 R 节)**:走 Codex 方向——**核心全部 Rust,只有 web 是 TS**。除浏览器前端(`kimi-web`/`kimi-inspect`/`vis/web`)与必须 JS 的前端壳(`vscode` 扩展宿主、npm bin 包装)外,一切 TS(CLI/TUI/server/SDK/protocol/OAuth/ACP/LLM 抽象/i18n 数据/rust-loop 桥)迁入 Rust 或退役。当前 TS 宿主(CLI/TUI/Web/API,源码约 23 万行)按 `CODEX_MIGRATION_PLAN.md` 的 G-0..G-7 收口路线逐模块迁入 `crates/`(kimi-cli/kimi-tui/kimi-server/kimi-sdk/…)。**迁移进度(2026-08-03 会话)**:阶段 A–E 全部完成(协议/引擎/宿主协议/CLI/exec/TUI/ACP/SDK/OAuth/WS 传输+客户端,测试基线 2890+,三传输路径全 e2e);阶段 F(入口切换与 TS 退役)按记录决策待 Rust 全绿后执行——npm 分发薄壳(kimi-code-rust-bin)已验证可用。迁移完成前 TS 宿主保留(见下方白名单),**新增宿主逻辑优先写 Rust**;已完成迁移的模块删除对应 TS。
72+
> **方向(2026-08-03 定案,2026-08-06 收紧,见 `CODEX_MIGRATION_PLAN.md` 顶部 R 节)**:走 Codex 方向——**核心全部 Rust,只有 web 是 TS**。除浏览器前端(`kimi-web`/`kimi-inspect`/`vis/web`)与必须 JS 的前端壳(`vscode` 扩展宿主、npm bin 包装)外,一切 TS(CLI/TUI/server/SDK/protocol/OAuth/ACP/LLM 抽象/i18n 数据/rust-loop 桥)迁入 Rust 或退役。**迁移进度(2026-08-11**:阶段 A–F 全部完成;G-1/G-2/G-4/G-6 完成,G-3 parity 批次 6 落地,**G-7 壳化完成(2026-08-11)**——`@moonshot-ai/kimi-code` 变纯分发壳(`bin/kimi.mjs`Rust spawn + dist-web 资产),TS 入口与宿主测试全部退役(→ `retired/kimi-code-src/`),`kimi upgrade` 由 Rust 实现(npm registry 查询 + 版本注入)。**新增宿主逻辑一律写 Rust**已完成迁移的模块已删除对应 TS。
7373
7474
### Where new code goes
7575

@@ -83,10 +83,9 @@ This is a TypeScript monorepo built for agent-assisted development. This file is
8383
8484
| Scope | Files | Reason |
8585
|-------|-------|--------|
86-
| Rust bridge / adapter | `apps/kimi-code/src/cli/rust-engine.ts`, `apps/kimi-code/src/cli/native-session.ts` | glue host ↔ Rust RPC |
8786
| Generated files | `packages/kimi-agent/src/rpc/wire.gen.ts` | regenerated via `pnpm gen:wire`, never hand-edited |
88-
| CLI / TUI / Web / VS Code shells | `apps/*` UI + i18n | pure UI, no engine logic(目标迁入 crates/) |
89-
| Test adaptation | TS tests asserting against the Rust engine | keep host behavior verified |
87+
| Web / VS Code shells | `apps/kimi-web` / `kimi-inspect` / `vis/web` / `vscode` UI + i18n | pure UI, no engine logic |
88+
| Distribution shell | `apps/kimi-code/bin/kimi.mjs`, `packages/kimi-code-rust-bin/` | pure Rust spawn + dist-web assets |
9089

9190
Before writing any TS change, ask: *is this engine functionality?* If yes → implement in Rust. If it is host/UI → TS is fine **for now, but prefer Rust** (see `CODEX_MIGRATION_PLAN.md`).
9291

@@ -122,53 +121,19 @@ apps/
122121
vis/ — Session replay & debugging visualizer
123122
```
124123

125-
#### `apps/kimi-code`CLI / TUI Application
124+
#### `apps/kimi-code`Distribution shell (G-7, 2026-08-11)
126125

127-
The main application. Consumes core capabilities through `@moonshot-ai/kimi-code-sdk` and must **not** depend directly on `@moonshot-ai/agent-core`. When writing or modifying its terminal UI, use the `write-tui` skill (`.agents/skills/write-tui/SKILL.md`).
128-
129-
**Source layout:**
130-
131-
```
132-
src/
133-
main.ts — Entry point
134-
cli/ — CLI mode (headless)
135-
commands.ts — CLI command definitions
136-
options.ts — CLI option parsing
137-
sub/ — Subcommands (acp, doctor, export, login, provider, upgrade, vis, web)
138-
update/ — Self-update mechanism
139-
tui/ — Terminal UI mode
140-
kimi-tui.ts — TUI initialization and main loop
141-
config.ts — TUI configuration
142-
banner/ — Startup banner
143-
commands/ — Slash command handlers (26+ commands)
144-
components/ — UI components (panes, messages, dialogs, editor, media)
145-
controllers/ — UI controllers (auth-flow, session, streaming, keyboard, etc.)
146-
theme/ — Theme system
147-
reverse-rpc/ — Reverse RPC for ACP communication
148-
i18n/ — Localization setup
149-
native/ — Native module integration
150-
migration/ — Data migration
151-
feedback/ — User feedback collection
152-
utils/ — Shared utilities
153-
constant/ — Constants
154-
generated/ — Generated asset references
155-
```
156-
157-
**CLI subcommands:** `acp`, `doctor`, `export`, `login`, `login-flow`, `plugin-run-node`, `provider`, `upgrade`, `vis`, `web`
158-
159-
**TUI slash commands (26+):** `add-dir`, `auth`, `btw`, `complete-args`, `config`, `copy`, `discuss`, `dispatch`, `experimental-flags`, `goal`, `info`, `parse`, `plugin-commands`, `plugins`, `prompts`, `provider`, `registry`, `reload`, `resolve`, `session`, `skills`, `swarm`, `types`, `undo`, `web`, `workflow`
126+
The npm distribution shell for the Rust CLI (`@moonshot-ai/kimi-code`). It is **not** an application anymore: all TS source (CLI/TUI/i18n/native bridges) retired to `retired/kimi-code-src/`. The shell contains `bin/kimi.mjs` (pure Rust spawn; `KIMI_RUST_BIN` overrides the binary), `dist-web/` (kimi-web build output served by `kimi web --assets`), and `scripts/` (postinstall shim cleanup, web-asset copy, plugin-marketplace build). The Rust CLI itself lives in `crates/kimi-cli` (see "Engine Ownership").
160127

161128
**Build output:**
162129
| Output | Path |
163130
|--------|------|
164-
| CLI entry (ESM) | `apps/kimi-code/dist/main.mjs` |
131+
| npm bin wrapper | `apps/kimi-code/bin/kimi.mjs` |
165132
| Web UI assets | `apps/kimi-code/dist-web/` |
166-
| Native prebuilds | `apps/kimi-code/native/` |
167-
| SEA binary | `apps/kimi-code/dist-native/bin/` |
168133

169134
#### `apps/kimi-web` — Browser Web UI
170135

171-
Peer to the TUI. Vue 3 + Vite + vue-i18n; talks to the server over REST + WebSocket under `/api/v1`. It must not depend on `@moonshot-ai/agent-core` (wire types are re-implemented locally). Debug against the Rust-backed server via the root `pnpm dev:v2` script. See `apps/kimi-web/AGENTS.md`.
136+
Peer to the TUI. Vue 3 + Vite + vue-i18n; talks to the server over REST + WebSocket under `/api/v1`. It must not depend on `@moonshot-ai/agent-core` (wire types are re-implemented locally). Debug against the Rust-backed server; see `apps/kimi-web/AGENTS.md`.
172137

173138
#### `apps/vscode` — VS Code Extension
174139

@@ -267,9 +232,8 @@ scripts/
267232
pnpm install # Install all dependencies
268233
pnpm build # Build all workspace packages
269234
pnpm build:packages # Build only packages/*
270-
pnpm dev:cli # Run CLI in dev mode
235+
pnpm dev:cli # Run CLI in dev mode (Rust, cargo run -p kimi-cli)
271236
pnpm dev:web # Run web UI in dev mode
272-
pnpm dev:server # Run server in dev mode
273237
pnpm test # Run all tests (vitest)
274238
pnpm test:watch # Watch mode
275239
pnpm test:coverage # With coverage
@@ -299,16 +263,14 @@ make rust-test # cargo test + kimi-agent --test
299263
### Package-specific commands
300264

301265
```sh
302-
# CLI app
303-
pnpm --filter @moonshot-ai/kimi-code build
304-
pnpm --filter @moonshot-ai/kimi-code run dev
305-
pnpm --filter @moonshot-ai/kimi-code run test
306-
pnpm --filter @moonshot-ai/kimi-code run e2e # E2E tests (sets KIMI_E2E=1)
266+
# Distribution shell (Rust CLI lives in crates/kimi-cli)
267+
pnpm --filter @moonshot-ai/kimi-code build # kimi-web build + copy dist-web
268+
KIMI_RUST_BIN=target/debug/kimi.exe node apps/kimi-code/bin/kimi.mjs --version
307269

308270
# Native tools (Rust)
309271
cd packages/kimi-native-tools && cargo test
310272
cd packages/kimi-native-tools && cargo build --release
311-
pnpm --filter @moonshot-ai/kimi-code run build:native:release # Full SEA build
273+
cargo run -p kimi-cli -- --help # Rust CLI (debug)
312274

313275
# VS Code extension
314276
pnpm --filter kimi-code run build
@@ -323,13 +285,13 @@ pnpm --filter @moonshot-ai/kimi-web run dev
323285
### CI pipeline
324286

325287
GitHub Actions (`ci.yml`) runs on every PR and push to `main`:
326-
1. **build** — Install, build, smoke test CLI bundle
288+
1. **build** — Install, build, smoke test the Rust kimi CLI
327289
2. **test**`vitest run` split across 5 parallel shards on Ubuntu
328290
3. **lint** — oxlint, sherif, locale JSON freshness check, locale placeholder validity, hardcoded string scan
329291
4. **typecheck** — TypeScript check across all packages (uses `tsgo` from `@typescript/native-preview`)
330292
5. **native-tools** — Runs on Windows-latest: `cargo test` and `cargo build --release`
331293

332-
Additional workflows: `_native-build.yml`, `docs-deploy.yml`, `manual-native-bundle.yml`, `nix-build.yml`, `pkg-pr-new.yml`, `pr-title-checker.yml`, `release.yml`.
294+
Additional workflows: `docs-deploy.yml`, `nix-build.yml`, `pkg-pr-new.yml`, `pr-title-checker.yml`, `release.yml`.
333295

334296
---
335297

@@ -430,7 +392,7 @@ pnpm --filter <package> vitest run -- --reporter=verbose # Verbose mode
430392

431393
- Test files co-locate with source or in a `test/` directory under each package/app.
432394
- Patterns: `*.test.ts`, `*.test.tsx`, `*.spec.ts`, `*.spec.tsx`, `test/**/*.ts`
433-
- E2E tests live in `apps/kimi-code/test/e2e/` and require `KIMI_E2E=1` env.
395+
- Rust CLI/TUI/server behavior is covered by `cargo test` (`crates/*`, `packages/kimi-agent`); the retired TS host suite lives with `retired/kimi-code-src/` (G-7, 2026-08-11).
434396

435397
---
436398

CODEX_MIGRATION_PLAN.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
|---|---|
3131
| Rust 引擎(`packages/kimi-agent`| ✅ 唯一引擎,cargo 全绿;宿主面补齐:`config/get·set` 空 home 容忍、`session/cancel_compact``session/create` work_dir、metadata 持久化 |
3232
| 阶段 A–E(协议/引擎/宿主协议/CLI/exec/TUI/ACP/SDK/OAuth/WS) | ✅ 完成(§6) |
33-
| 阶段 F(入口切换与 TS 退役) | 🔶 主体完成(分发薄壳 ✅、入口 wrapper ✅、F-5 全链路 e2e ✅);TS 删除待 G-6 |
33+
| 阶段 F(入口切换与 TS 退役) | ✅ 完成(2026-08-11,随 G-7 壳化收官:分发薄壳 + 入口 wrapper + F-5 e2e + TS 入口退役) |
3434
| G-6 退役收口(剩余两包) | ✅ 完成(2026-08-11):pi-tui + migration-legacy → retired/;vscode 消费面本地化;TS 迁移死代码(migration/ 目录、migrate 命令面)删除;SEA 注册项/CI/flake.nix/lockfile 同步 |
3535
| G-4 TUI 攻坚(最大长杆) | ✅ 61 命令全命令面 + 交互对拍(§6.4) |
3636
| G-2 Rust server(`kimi-server` + HTTP/WS 投影) | ✅ 前端零改动直连;v1 wire 契约字段级对拍完成 |
@@ -42,7 +42,7 @@
4242
1. **G-0 收尾**:基线锁定(cargo 全绿 ✅ + vitest 收敛 ✅);TS 侧新增逻辑先与 Rust 核对(进行中)
4343
2. **G-2 剩余**:Rust server 的 v1 wire 遗留投影批次(见 §7,MINOR 批已复核 2026-08-11)
4444
3. **G-3**:CLI 消费面切 kimi-cli;**G-4 剩余**:真实终端手动冒烟清单 + 媒体富卡片(另议)
45-
4. **G-5/G-7**:LLM 面并入(已定案)→ web-only 验证 + 旧 TS 测试清理(TS 入口退役前置:Rust 全绿 + 分发切换决策
45+
4. **G-5/G-7**:LLM 面并入(已定案)→ **G-7 web-only 达成(2026-08-11)**;后续:真实终端手动冒烟、媒体富卡片(另议)、发布形态观察(壳包 + kimi-code-rust 双发
4646

4747
## 1.4 已知缺口(不阻塞主线的记录)
4848

@@ -125,8 +125,7 @@ kimi-protocol ← kimi-agent(引擎) ← kimi-server ← kimi-server-transport
125125
| 现 TS 包 | 规模 | 处理 | 目标 | 状态 |
126126
|---|---|---|---|---|
127127
| `apps/kimi-code` TUI | 41k | 迁 Rust | kimi-tui | ✅ G-4 攻坚完成(TS 已删 2026-08-09) |
128-
| `apps/kimi-code` CLI | 9k | 迁 Rust | kimi-cli | ✅ 大部分落地 |
129-
| `apps/kimi-code` i18n/utils/constant | 9.4k | 迁/数据化 | kimi-tui + JSON 数据 | 🔶 |
128+
| `apps/kimi-code` CLI/i18n/utils/constant | 18.4k | 迁 Rust/退役 | kimi-cli + kimi-tui |**已退役**(2026-08-11,G-7 壳化:src/ 全量 → `retired/kimi-code-src/`;upgrade 由 kimi-cli Rust 实现) |
130129
| `kap-server` | 16.2k | 迁 Rust | kimi-server | ✅ 主体完成 → **已退役**(retired/,2026-08-10) |
131130
| `node-sdk` | 16.2k | 迁 Rust | kimi-sdk | ✅ 消费面切换完成 → **已退役**(retired/,2026-08-10) |
132131
| `kosong` | 11.1k | 迁 Rust | kimi-sdk LLM 面 | ✅ 核心能力引擎已覆盖(§8 决策)→ **已退役**(retired/,2026-08-10) |
@@ -191,7 +190,7 @@ kimi-sdk(Session 45/45 + Harness + catalog 归一化 + config/errors + /btw)
191190
| G-4 | TUI → kimi-tui 分片搬运(长杆) | ✅ 攻坚完成(P0-P6 分片,§6.4);剩余:真实终端手动冒烟 + 媒体富卡片(另议) |
192191
| G-5 | kosong/kaos/protocol LLM 面并入;transcript/telemetry 收编 | 🔶 kimi-schema 规范化移植完成;kosong 核心能力引擎已覆盖(评估定案);kimi-files 上传/capability/Astron 数据项随 node-sdk 退役 |
193192
| G-6 | 退役(node-sdk/kap-server/acp-adapter/oauth/protocol/kaos → retired/;删 rust-loop.ts、TS i18n、TS 入口、pi-tui) | ✅ 完成(2026-08-11):11 包/模块退役(2026-08-10)+ pi-tui/migration-legacy → retired/(2026-08-11,vscode 消费面本地化至 apps/vscode/src/migration-legacy/,TS 迁移死代码与 migrate 命令面删除,SEA 注册项/CI/flake.nix/lockfile 同步) |
194-
| G-7 | web-only 验证 + 删除全部旧 TS 测试 | ⏳ 未开始(前置:TS 入口退役——Rust 全绿 + 分发切换决策|
193+
| G-7 | web-only 验证 + 删除全部旧 TS 测试 | **完成(2026-08-11)**`@moonshot-ai/kimi-code` 壳化(bin/kimi.mjs 纯 Rust spawn + dist-web 资产);TS 入口与宿主测试全量退役(src → retired/kimi-code-src/,~690 用例);`kimi upgrade` Rust 化(npm registry + KIMI_CODE_VERSION 注入);SEA 链/tsdown/相关 workflow(_native-build/manual-native-bundle)删除;flake.nix 改 Rust 构建;vitest 基线收敛至 1133(web/壳/vscode|
195194

196195
---
197196

0 commit comments

Comments
 (0)