本章总览
在读架构之前,先看数字:哪个目录最大、哪个文件是「上帝对象」、工具/命令各占多少行。这章教你用统计视角做阅读优先级排序。
总览图
渲染图表中…
学完本章你应该能
- 读懂 src/ 各一级目录的行数分布
- 理解 utils、components 为何如此庞大
- 会找 Top 大文件作为突破口
核心概念(先读懂这些)
行数 ≠ 复杂度,但是线索
utils 18 万行说明「基础设施」高度集中;components 8 万行说明 UI 状态复杂。大文件往往是核心抽象(如 messages.ts 5513 行),值得单独开章节学习。
如何选第一个要读的模块
推荐路径:query.ts → messages.ts → Tool.ts → REPL.tsx。统计页帮你确认这些文件在整体中的权重。
建议学习步骤
- 对照 bar 图找出 Top 3 模块
- 打开「核心文件索引」章节
- 选一个最大模块进入 mod-* 详解
src 模块体量 Top 5
渲染图表中…
总体规模
| 指标 | 数值 |
|---|---|
| 代码文件 | 2,037 |
| 总行数 | 536,325 |
src/ 一级模块 (38 个)
- utils:181,060 行
- components:82,023 行
- services:53,949 行
- tools:51,099 行
- commands:26,692 行
- ink:19,952 行
- hooks:19,310 行
- bridge:12,652 行
- cli:12,380 行
- screens:5,980 行
- entrypoints:4,167 行
- skills:4,096 行
- native-ts:4,085 行
- types:3,636 行
- tasks:3,310 行
- keybindings:3,191 行
- constants:2,671 行
- bootstrap:1,759 行
- memdir:1,746 行
- vim:1,518 行
- buddy:1,304 行
- state:1,196 行
- remote:1,131 行
- context:1,013 行
- upstreamproxy:742 行
- query:660 行
- migrations:614 行
- coordinator:372 行
- server:361 行
- schemas:223 行
- plugins:184 行
- assistant:107 行
- outputStyles:99 行
- proactive:65 行
- voice:55 行
- moreright:26 行
- ssh:8 行
- jobs:4 行
根目录核心文件
| 文件 | 行数 |
|---|---|
main.tsx | 4,684 |
query.ts | 1,730 |
QueryEngine.ts | 1,296 |
Tool.ts | 793 |
commands.ts | 755 |
setup.ts | 478 |
history.ts | 465 |
tools.ts | 390 |
interactiveHelpers.tsx | 366 |
cost-tracker.ts | 324 |
context.ts | 190 |
dialogLaunchers.tsx | 133 |
Task.ts | 126 |
dev-entry.ts | 123 |
ink.ts | 86 |
projectOnboardingState.ts | 84 |
tasks.ts | 40 |
bootstrapMacro.ts | 30 |
costHook.ts | 23 |
replLauncher.tsx | 23 |
globals.d.ts | 10 |
bootstrap-entry.ts | 6 |
components/ 子目录
| 目录 | 文件 | 行数 |
|---|---|---|
| permissions | 53 | 12,214 |
| messages | 45 | 6,073 |
| PromptInput | 21 | 5,182 |
| agents | 27 | 4,552 |
| tasks | 14 | 3,958 |
| mcp | 14 | 3,941 |
| CustomSelect | 10 | 3,029 |
| Settings | 4 | 2,577 |
| LogoV2 | 15 | 2,497 |
| design-system | 16 | 2,254 |
| Spinner | 13 | 1,488 |
| FeedbackSurvey | 11 | 1,394 |
| hooks | 6 | 1,250 |
| diff | 3 | 956 |
| teams | 2 | 795 |
| sandbox | 5 | 700 |
| TrustDialog | 2 | 536 |
| StructuredDiff | 2 | 525 |
| ui | 4 | 517 |
| memory | 2 | 483 |
| grove | 1 | 463 |
| shell | 4 | 378 |
| wizard | 6 | 340 |
| ManagedSettingsSecurityDialog | 2 | 294 |
| HelpV2 | 3 | 289 |
| skills | 1 | 237 |
| HighlightedCode | 1 | 193 |
| Passes | 1 | 184 |
| DesktopUpsell | 1 | 171 |
| LspRecommendation | 1 | 88 |
| ClaudeCodeHint | 1 | 78 |
utils/ 顶级文件 Top 20
| 文件 | 行数 |
|---|---|
messages.ts | 5,513 |
sessionStorage.ts | 5,106 |
hooks.ts | 5,023 |
attachments.ts | 3,998 |
auth.ts | 2,003 |
config.ts | 1,818 |
Cursor.ts | 1,531 |
worktree.ts | 1,520 |
ide.ts | 1,495 |
claudemd.ts | 1,480 |
analyzeContext.ts | 1,383 |
teleport.tsx | 1,226 |
teammateMailbox.ts | 1,184 |
fileHistory.ts | 1,116 |
collapseReadSearch.ts | 1,110 |
stats.ts | 1,062 |
toolResultStorage.ts | 1,041 |
commitAttribution.ts | 962 |
git.ts | 927 |
imageResizer.ts | 881 |
utils/ 子目录 Top 20
| 目录 | 文件 | 行数 |
|---|---|---|
| plugins | 44 | 20,565 |
| bash | 23 | 12,329 |
| permissions | 24 | 9,433 |
| swarm | 22 | 7,570 |
| settings | 19 | 4,581 |
| telemetry | 9 | 4,053 |
| hooks | 17 | 3,738 |
| shell | 10 | 3,079 |
| nativeInstaller | 5 | 3,023 |
| model | 16 | 2,726 |
| claudeInChrome | 7 | 2,344 |
| powershell | 3 | 2,308 |
| computerUse | 15 | 2,176 |
| processUserInput | 4 | 1,769 |
| deepLink | 6 | 1,394 |
| task | 5 | 1,228 |
| suggestions | 5 | 1,218 |
| git | 3 | 1,078 |
| sandbox | 2 | 999 |
| teleport | 4 | 959 |
本章小结与延伸
用统计确定阅读优先级:引擎(query) > 消息(utils/messages) > 工具(tools) > UI(components)。 继续学习: