Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions docs/01-项目全景与四种入口形态.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ if (args.length === 1 && (args[0] === '--version' || args[0] === '-v' || args[0]

这段代码只用了一个被编译期内联的常量,连字符串拼接都被 Bun bundler 折叠掉了 —— 也就是说,`claude --version` 的执行链路里**除了 `cli.tsx` 本身,不加载任何其他模块**。

沿着同样的思路,`cli.tsx` 一口气定义了十几条快速路径,覆盖 `--dump-system-prompt`、`daemon`、`remote-control / bridge / sync`、后台任务管理(`ps / logs / attach / kill`)、模板任务(`new / list / reply`)、`environment-runner` 等等。每一条都遵循同一个套路:参数命中 → 动态 import 只跟这条路径相关的少数模块 → 干完事就 `return`。
沿着同样的思路,`cli.tsx` 一口气定义了十几条快速路径,覆盖 `daemon`、`remote-control / bridge / sync`、后台任务管理(`ps / logs / attach / kill`)、模板任务(`new / list / reply`)、`environment-runner` 等等。每一条都遵循同一个套路:参数命中 → 动态 import 只跟这条路径相关的少数模块 → 干完事就 `return`。

只有当所有快速路径都不匹配时,才会走到文件末尾那行真正昂贵的 `await import('../main.js')`,把全量 CLI 拉起来。

Expand Down Expand Up @@ -200,7 +200,6 @@ ink/
graph TD
A["用户输入 claude"] --> B["cli.tsx<br/>Bootstrap 入口"]
B -->|快速路径| C["--version: 零 import 返回"]
B -->|快速路径| D["--dump-system-prompt"]
B -->|快速路径| E["daemon / bridge / ps..."]
B -->|正常路径| F["main.tsx<br/>主应用编排器"]
F -->|"Commander preAction hook"| G["init()<br/>核心初始化 (entrypoints/init.ts)"]
Expand Down Expand Up @@ -246,7 +245,6 @@ cli.tsx 定义了大量「快速路径」(fast-path),每个路径只动态
| 快速路径 | 触发条件 | 加载的模块 |
|----------|---------|-----------|
| --version | 单参数 `-v/-V/--version` | 无 |
| --dump-system-prompt | 首参数匹配 | config, model, prompts |
| daemon | 首参数 `daemon` | config, sinks, daemon/main |
| bridge/remote | 首参数 `remote-control` 等 | config, auth, bridge |
| ps/logs/attach/kill | 首参数匹配 | config, cli/bg |
Expand Down