跳转至

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. 关键洞察

  1. utils/ 35% 最大——通用工具膨胀,但质量是好的(已在 A2 分析)
  2. components/ 16%——Ink 渲染 + 各种 UI 组件
  3. 5 个 4000+ 行巨型文件——是设计上的"复杂逻辑集中",详见 A1 深度拆解
  4. 551/1902 = 29% 是 .tsx——前端重
  5. 18 个 .js legacy——极少数历史遗留,可考虑迁移
  6. 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