跳转至

Reference: 最大文件

目的:速查 Claude Code 的最大文件 来源find . -name "*.ts" -o -name "*.tsx" | xargs wc -l | sort -rn | head -50


1. 总体

指标 数字
总文件数 1884
总行数 512,664
平均行数 272
中位数(推测) 100-200
最大文件 5005

5 指标


2. 15 个最大文件

# 文件 行数 角色
1 screens/REPL.tsx 5005 主屏幕 God Component
2 main.tsx 4683 CLI 入口
3 utils/bash/bashParser.ts 4436 纯 TS bash 解析器
4 utils/attachments.ts 3997 17+ 附件类型
5 services/mcp/client.ts 3348 MCP 完整实现
6 utils/plugins/pluginLoader.ts 3302 6 源插件
7 commands/insights.ts 3200 /insights
8 services/api/claude.ts 3419 Anthropic SDK
9 bridge/bridgeMain.ts 2999 Bridge 协议
10 commands.ts 25185 字节 命令注册
11 utils/bash/ast.ts 2679 AST walker
12 utils/plugins/marketplaceManager.ts 2643 marketplace
13 tools/BashTool/bashPermissions.ts 2621 6 层决策
14 tools/BashTool/bashSecurity.ts 2592 25+ validator
15 native-ts/yoga-layout/index.ts 2578 Yoga 移植

15 个


3. 5 大类分布

3.1 UI 组件

文件 行数
REPL.tsx 5005
PromptInput.tsx 2338
ManagePlugins.tsx 2214
MessageSelector.tsx (推测 ~1500)
... ...

~5 个 巨型 UI 组件。

3.2 入口 / 编排

文件 行数
main.tsx 4683

1 个 入口。

3.3 业务

文件 行数
bashParser.ts 4436
attachments.ts 3997
mcp/client.ts 3348
pluginLoader.ts 3302
insights.ts 3200
claude.ts 3419
bridgeMain.ts 2999

~10 个 巨型业务文件。

3.4 Bash 安全

文件 行数
bashSecurity.ts 2592
bashPermissions.ts 2621
bash/ast.ts 2679

3 个 Bash 巨型。

3.5 Native

文件 行数
yoga-layout/index.ts 2578

1 个


4. 行数分布

> 5000 行:  1 个   (REPL.tsx)
4000-5000:  3 个   (main, bashParser, ...)
3000-4000:  ~7 个
2000-3000:  ~15 个
1000-2000:  ~50 个
500-1000:   ~100 个
< 500:      绝大多数

8 档


5. 5 个最大文件原因

5.1 REPL.tsx (5005)

为什么这么大: - God Component(单组件 50+ hooks) - 60+ 业务 hooks 编排 - 4 段结构:state / hook / 事件 / render

权衡:避免 props drilling + context 套娃。

5.2 main.tsx (4683)

为什么这么大: - 3630 行 run() 包含 default action - 40+ CLI options 链式 - 20+ subcommand 全部 inline

权衡:单文件可读性 vs subcommand 拆分。

5.3 bashParser.ts (4436)

为什么这么大: - 纯 TS 移植 Facebook Yoga - 50ms 超时 / 50K 节点预算 - 79 个 parseXxx 函数 - 4 级 lookahead

权衡:纯 TS 启动 vs WASM 性能。

5.4 attachments.ts (3997)

为什么这么大: - 17+ Attachment 类型 - 64 函数 - 24+ maybe() 并行附件

权衡:完整性 vs 拆分。

5.5 mcp/client.ts (3348)

为什么这么大: - 4 transport 全部支持 - OAuth 完整 - 1050 行 connectToServer 核心 - 3 层 memoize

权衡:完整功能 vs 简单。


6. 大文件的"风险"

6.1 维护

  • 改动 1 行影响大
  • 难理解全貌
  • merge 冲突多

6.2 性能

  • import 时间长
  • 编译慢
  • 测试启动慢

6.3 协作

  • 多人同时改 1 文件
  • blame 信息难查

7. 5 个拆分建议

7.1 REPL.tsx 拆分

  • 拆 sub-screen(Transcript, Input, Footer)
  • 拆 hooks 到独立文件
  • 拆事件处理

7.2 main.tsx 拆分

  • 拆 subcommand 到独立文件
  • 拆 2801 行 default action

7.3 bashParser.ts 拆分

  • 拆 lexer / parser
  • 拆 specific bash 特性

7.4 attachments.ts 拆分

  • 拆 per-类型文件
  • 拆 maybe() helper

7.5 mcp/client.ts 拆分

  • 拆 per-transport
  • 拆 OAuth / 工具 / 资源

8. 5 个不拆的原因

8.1 REPL.tsx 不拆

  • God Component 是有意的
  • 拆了反而更乱

8.2 main.tsx 不全拆

  • 部分拆了(subcommand)
  • 编排逻辑集中

8.3 bashParser 不拆

  • 内部函数互相调用
  • 拆了 = 抽象泄漏

8.4 attachments.ts 不全拆

  • type 共享复杂
  • 集中 = 单一来源

8.5 mcp/client.ts 不全拆

  • 协议紧密耦合
  • 拆了 = 跨文件难

9. 速查表

文件        行数  类别
─────────────────────
REPL.tsx    5005  UI
main.tsx    4683  入口
bashParser  4436  Bash
attachments 3997  上下文
mcp/client  3348  MCP
pluginLoad  3302  插件
insights    3200  报告
claude.ts   3419  API
bridgeMain  2999  Bridge
bash/ast    2679  AST
marketplace 2643  插件市场
bashPerm    2621  Bash 权限
bashSec     2592  Bash 安全
yoga-layout 2578  布局

13 行


10. 总结

Claude Code 有 15 个 2000+ 行的巨型文件

核心: - 单文件最大 5005 行 - 1884 个文件总计 512K 行 - 巨型文件反映"业务集中"哲学

下一步: - 选 1-2 个拆 - 测性能影响 - 团队 review