G2-1 文件分类报告 —— 1902 个源文件全景
目的:把 src/ 下 1902 个文件按 顶层子目录 + 用途分类
方法:find src/ -name "*.{ts,tsx,js}" + wc -l 统计
执行日期:2026-06-06
范围:src/ 整个目录
1. 总览
| 维度 |
数量 |
| 总文件数 |
1902 |
| 总代码行数 |
512,664 |
| 平均每文件 |
269 行 |
| 顶层子目录 |
35 个 |
.ts 文件 |
1332(70%) |
.tsx 文件 |
552(29%) |
.js 文件 |
18(1%,少量 legacy) |
2. 按顶层子目录分类
完整分类按行数降序。
| 排名 |
子目录 |
文件数 |
行数 |
占比 |
类别 |
| 1 |
utils/ |
564 |
180,472 |
35.2% |
通用工具 |
| 2 |
components/ |
389 |
81,546 |
15.9% |
React 组件 |
| 3 |
services/ |
130 |
53,680 |
10.5% |
后端服务 |
| 4 |
tools/ |
184 |
50,828 |
9.9% |
工具实现 |
| 5 |
commands/ |
189 |
26,428 |
5.2% |
斜杠命令 |
| 6 |
ink/ |
96 |
19,842 |
3.9% |
CLI 渲染 |
| 7 |
hooks/ |
104 |
19,204 |
3.7% |
React hooks |
| 8 |
bridge/ |
31 |
12,613 |
2.5% |
Bridge 协议 |
| 9 |
cli/ |
19 |
12,353 |
2.4% |
CLI 工具 |
| 10 |
screens/ |
3 |
5,977 |
1.2% |
主屏幕 |
| 11 |
native-ts/ |
4 |
4,081 |
0.8% |
N-API 绑定 |
| 12 |
entrypoints/ |
8 |
4,051 |
0.8% |
入口 |
| 13 |
types/ |
11 |
3,446 |
0.7% |
类型定义 |
| 14 |
tasks/ |
12 |
3,286 |
0.6% |
后台任务 |
| 15 |
skills/ |
20 |
4,066 |
0.8% |
Skill |
| 16 |
keybindings/ |
14 |
3,159 |
0.6% |
键位 |
| 17 |
constants/ |
21 |
2,648 |
0.5% |
常量 |
| 18 |
bootstrap.ts |
1 |
1,758 |
0.3% |
启动 |
| 19 |
memdir/ |
8 |
1,736 |
0.3% |
Memory dir |
| 20 |
buddy/ |
6 |
1,298 |
0.3% |
Buddy 模式 |
| 21 |
remote/ |
4 |
1,127 |
0.2% |
远程会话 |
| 22 |
context/ |
9 |
1,004 |
0.2% |
上下文 |
| 23 |
upstreamproxy/ |
2 |
740 |
0.1% |
上游代理 |
| 24 |
query/ |
4 |
652 |
0.1% |
查询 |
| 25 |
migrations/ |
11 |
603 |
0.1% |
迁移脚本 |
| 26 |
server/ |
3 |
358 |
0.1% |
服务器 |
| 27 |
coordinator/ |
1 |
369 |
0.1% |
协调者 |
| 28 |
vim/ |
5 |
1,513 |
0.3% |
Vim 模式 |
| 29 |
schemas/ |
1 |
222 |
0.04% |
Schema |
| 30 |
outputStyles/ |
1 |
98 |
0.02% |
输出风格 |
| 31 |
assistant/ |
1 |
87 |
0.02% |
Assistant |
| 32 |
voice/ |
1 |
54 |
0.01% |
语音 |
| 33 |
moreright/ |
1 |
25 |
0.005% |
备用 |
| - |
**/*.tsx 子目录 |
552 |
(含在上述) |
- |
- |
| 总计 |
- |
1902 |
512,664 |
100% |
- |
3. 按"业务领域"分类
| 类别 |
涉及子目录 |
文件数 |
行数 |
占比 |
| UI 层 |
components / screens / ink / hooks |
1092 |
126,569 |
24.7% |
| 工具/Agent |
tools / commands / skills |
393 |
81,322 |
15.9% |
| 后端服务 |
services / bridge / server |
164 |
66,651 |
13.0% |
| 通用工具 |
utils |
564 |
180,472 |
35.2% |
| CLI/入口 |
cli / entrypoints / main.tsx |
28 |
18,162 |
3.5% |
| 类型/常量 |
types / constants / schemas |
33 |
6,316 |
1.2% |
| 配置/Setup |
bootstrap / keybindings / outputStyles / coordinator |
17 |
5,376 |
1.0% |
| 持久化/状态 |
state / memdir / context / migrations |
34 |
4,533 |
0.9% |
| 远程/任务 |
tasks / remote / upstreamproxy |
18 |
5,153 |
1.0% |
| 其他 |
voice / vim / assistant / moreright / buddy |
14 |
2,977 |
0.6% |
| 小计 |
- |
2357(有重复统计) |
497,531 |
97% |
| 总文件 |
- |
1902 |
512,664 |
100% |
注:上表"文件数"按子目录相加有重复(某些子目录被多重计数),但"行数"按实际分布。
4. 按"代码量"分类
| 量级 |
文件数 |
占比 |
例 |
| 巨型(>5000 行) |
~10 |
0.5% |
cli/print.ts 5594 / REPL.tsx 5005 / main.tsx 4683 / bashParser.ts 4436 / attachments.ts 3997 |
| 大型(1000-5000 行) |
~150 |
8% |
mcp/client.ts 3348 / pluginLoader.ts 3302 / insights.ts 3200 |
| 中型(100-1000 行) |
~1200 |
63% |
大部分 .ts 文件 |
| 小型(10-100 行) |
~500 |
26% |
常量、类型、工具 |
| 微型(<10 行) |
~40 |
2% |
re-export、placeholder |
5. 按"类型"分类(前端 vs 后端)
| 维度 |
文件数 |
行数 |
占比 |
| 前端(UI) |
552 .tsx |
~120,000 |
23% |
| 前端(hook) |
104 .ts |
19,204 |
4% |
| 后端(Node) |
1332 .ts |
~390,000 |
76% |
| Legacy JS |
18 .js |
~3,000 |
0.6% |
| 小计 |
1902 |
512,664 |
100% |
结论:Claude Code 本质是 Node 后端 + React 渲染。
- 76% 是 Node 后端逻辑(业务 + 工具 + 协议)
- 23% 是 React/Ink 前端
- 1% 是历史遗留
6. 按"生产 vs 实验"分类(feature flag 推断)
按 G1 报告的 feature() 出现位置推断:
| 类别 |
估算行数 |
占比 |
| 核心(公开版有) |
~250,000 |
49% |
| 商业版独有 |
~120,000 |
23% |
| ANT 内部版独有 |
~80,000 |
16% |
| 实验性 |
~50,000 |
10% |
| DCE 实际砍掉 |
~10,000 |
2%(编译期) |
注:DCE 砍掉的代码在运行时不可见,但源代码中"占位"(如 if (feature('X')) {...)算在上面的统计中。实际商业版的 bundle 不含 DCE-gated 代码。
7. 文件命名规范
| 模式 |
数量 |
例 |
PascalCase.tsx |
552 |
App.tsx, REPL.tsx, PromptInput.tsx |
camelCase.ts |
1000+ |
useState.ts, queryModel.ts |
kebab-case.ts |
~100 |
bridge-protocol.ts, mock-permission.ts |
SCREAMING_SNAKE.ts |
极少 |
BRIDGE_PROTOCOL.md(.md 非 .ts) |
index.ts |
~30 |
每个子目录 |
8. 子目录"异常"分析
| 子目录 |
特征 |
推测 |
voice/ |
仅 1 文件 / 54 行 |
实验性,几乎空 |
moreright/ |
1 文件 / 25 行 |
内部实验 / 占位 |
outputStyles/ |
1 文件 / 98 行 |
系统提示模板 |
coordinator/ |
1 文件 / 369 行 |
swarm 协调者(独立模块) |
upstreamproxy/ |
2 文件 / 740 行 |
上游 API 代理 |
voice/ |
1 文件 / 54 行 |
推测未来扩展点 |
9. 关键洞察
- utils/ 35% 最大——通用工具膨胀,但质量是好的(已在 A2 分析)
- components/ 16%——Ink 渲染 + 各种 UI 组件
- 5 个 4000+ 行巨型文件——是设计上的"复杂逻辑集中",详见 A1 深度拆解
- 551/1902 = 29% 是 .tsx——前端重
- 18 个 .js legacy——极少数历史遗留,可考虑迁移
- 30+ 个子目录——关注点分离清晰
10. 与其他仓库对比
| 指标 |
Claude Code |
类似 CLI 工具 |
| 总文件 |
1902 |
大型 100-500 |
| 总行数 |
512K |
大型 50-200K |
| 子目录 |
35 |
10-20 |
| 最大单文件 |
5594 |
多数 < 2000 |
| TS/TSX 比 |
70%/29% |
看情况 |
Claude Code 是超大型 CLI——比同类工具(一般 100-500 文件)大 4-20 倍。
最后更新:2026-06-06
执行人:devxiaofan
数据源:find src/ -name "*.{ts,tsx,js}" | wc -l && find ... | xargs wc -l