跳转至

Reference | 关键文件 1 句话索引

目的:当你想找"某类功能在哪个文件"时来这里查。 覆盖:Claude Code 200+ 关键文件,每个一行简介 + 行数不覆盖:组件库 100+ 个业务组件(用 ls src/components/ 自查)。


1. 顶层核心文件

文件 行数 作用
src/main.tsx 4683 二级入口;启动期 prefetch;主 main() 函数
src/screens/REPL.tsx 5005 主屏幕;5000 行 React + 85 个 hook 编排
src/QueryEngine.ts 1295 单次对话状态机 class;含 ask() 方法
src/Tool.ts 792 工具抽象;buildTool 工厂;Tool/InputSchema 类型
src/tools.ts 389 工具注册表;43 个工具的中央集线器
src/commands.ts ~200 命令注册表;100+ /xxx 命令的中央集线器
src/query.ts 1729 agent 循环;query() 主循环;流式 API 解析
src/Task.ts ~200 任务抽象;TaskType / TaskStatus 类型
src/tasks.ts ~200 任务注册表
src/entrypoints/cli.tsx ~400 启动 fast-path;--version 等快速分支
src/entrypoints/init.ts ~200 全局初始化;telemetry / config / MCP
src/replLauncher.tsx ~150 REPL 启动器;launchRepl()
src/setup.ts ~100 全局 setup;早于 main.tsx 的初始化
src/cost-tracker.ts ~200 API 费用累计
src/costHook.ts ~50 useCostSummary hook
src/history.ts ~150 命令历史;addToHistoryparseReferences
src/context.ts ~50 Context barrel 导出
src/ink.ts ~10 Ink barrel 导出
src/dialogLaunchers.tsx ~100 Dialog 启动器
src/interactiveHelpers.tsx ~100 交互助手
src/projectOnboardingState.ts ~50 项目引导状态

2. state/ 状态管理(6 文件)

文件 行数 作用
src/state/store.ts 60 通用 store 工厂;getState/setState/subscribe
src/state/AppStateStore.ts 569 AppState 类型 + 工厂方法
src/state/AppState.tsx 199 React Context Provider + useAppState hook
src/state/selectors.ts ~100 纯函数选择器
src/state/onChangeAppState.ts ~80 变更时副作用(持久化、通知)
src/state/teammateViewHelpers.ts ~30 多 agent 模式辅助

3. ink/ Ink 框架 fork(50+ 文件,13306 行)

文件 行数 作用
src/ink/ink.tsx 1722 Ink class 入口;React reconciler 适配
src/ink/reconciler.ts ~500 React reconciler host config
src/ink/renderer.ts ~300 帧渲染
src/ink/render-to-screen.ts ~200 帧 → 屏幕
src/ink/render-node-to-output.ts ~200 node tree → Y 输出
src/ink/dom.ts ~400 虚拟 DOM
src/ink/node.ts ~300 节点类型
src/ink/Ansi.tsx 291 ANSI 颜色组件
src/ink/parse-keypress.ts ~300 按键解析(CSI u / ANSI / legacy)
src/ink/stringWidth.ts ~400 字符宽度(CJK / Emoji / ZWJ)
src/ink/widest-line.ts ~50 最宽行计算
src/ink/wrap-text.ts 74 文本换行
src/ink/wrapAnsi.ts 20 ANSI 换行
src/ink/optimizer.ts ~200 渲染优化(跳过未变子树)
src/ink/squash-text-nodes.ts ~100 Text 节点合并
src/ink/node-cache.ts ~80 节点缓存
src/ink/line-width-cache.ts ~50 行宽缓存
src/ink/measure-element.ts ~150 元素测量
src/ink/measure-text.ts ~150 文本测量
src/ink/hit-test.ts ~200 命中测试(鼠标)
src/ink/selection.ts ~200 文本选择
src/ink/searchHighlight.ts ~150 搜索高亮
src/ink/log-update.ts ~100 日志更新
src/ink/bidi.ts ~100 双向文字
src/ink/render-border.ts ~100 边框渲染
src/ink/get-max-width.ts ~50 最大宽度
src/ink/clearTerminal.ts ~30 清屏
src/ink/frame.ts ~150 帧管理
src/ink/screen.ts ~200 屏幕缓冲
src/ink/output.ts ~100 输出

3.1 ink/events/

文件 作用
click-event.ts 鼠标点击事件
dispatcher.ts 事件分发
emitter.ts 事件发射器
event.ts 事件基类
event-handlers.ts 事件处理
focus-event.ts 焦点事件
input-event.ts 输入事件
keyboard-event.ts 键盘事件
terminal-event.ts 终端事件
terminal-focus-event.ts 终端焦点事件

3.2 ink/hooks/

文件 作用
use-animation-frame.ts requestAnimationFrame 包装
use-app.ts App context
use-declared-cursor.ts 声明的光标位置
use-input.ts 键盘输入
use-interval.ts setInterval hook
use-search-highlight.ts 搜索高亮
use-selection.ts 文本选择
use-stdin.ts 原始 stdin
use-tab-status.ts Tab 状态
use-terminal-focus.ts 终端焦点
use-terminal-title.ts 终端标题
use-terminal-viewport.ts 视口

3.3 ink/layout/

文件 作用
engine.ts 布局引擎
geometry.ts 几何计算
node.ts 节点类型
yoga.ts Yoga 绑定

3.4 ink/components/

文件 作用
AlternateScreen.tsx 备用屏幕
App.tsx App 根组件
AppContext.ts App context
Box.tsx 容器(flexbox)
Button.tsx 按钮
ClockContext.tsx 时钟 context
CursorDeclarationContext.ts 光标 context
ErrorOverview.tsx 错误总览
Link.tsx 超链接
Newline.tsx 换行
NoSelect.tsx 不可选
RawAnsi.tsx 原始 ANSI
ScrollBox.tsx 可滚动容器
Spacer.tsx 间距
StdinContext.ts stdin context
TerminalFocusContext.tsx 终端焦点 context
TerminalSizeContext.tsx 终端尺寸 context
Text.tsx 文本

3.5 ink/termio/ (推测)

文件 作用
termio.ts 终端 IO 入口
termio/* 终端 IO 内部

4. services/ 业务服务(100+ 文件)

4.1 services/api/

文件 行数 作用
claude.ts 3419 Anthropic SDK 包装;流式响应解析
client.ts ~400 SDK 客户端构造(4 种 provider)
withRetry.ts ~200 重试
errors.ts ~200 错误定义
errorUtils.ts ~150 错误工具
logging.ts ~150 usage 日志
usage.ts ~100 usage 统计
emptyUsage.ts ~30 零 usage
bootstrap.ts ~150 启动数据
filesApi.ts ~200 文件 API
dumpPrompts.ts ~80 prompt debug
firstTokenDate.ts ~30 首次 token 时间
grove.ts ~150 内部服务(推测)
metricsOptOut.ts ~50 遥测 opt-out
overageCreditGrant.ts ~50 超额信用
promptCacheBreakDetection.ts ~80 prompt cache 失效
referral.ts ~100 推荐
sessionIngress.ts ~150 session 接入
ultrareviewQuota.ts ~50 ultrareview 配额

4.2 services/mcp/ (23 文件)

文件 作用
MCPConnectionManager.tsx 连接管理核心
client.ts (3348 行) MCP client 实现
types.ts 协议类型
config.ts MCP 配置
auth.ts (2465 行) OAuth / API key
elicitationHandler.ts Elicit 请求处理
oauthPort.ts OAuth 回调端口
xaa.ts Cross-App Access
xaaIdpLogin.ts XAA IdP
officialRegistry.ts 官方 MCP registry
vscodeSdkMcp.ts VSCode SDK
claudeai.ts claude.ai MCP
InProcessTransport.ts 进程内 transport
SdkControlTransport.ts SDK 控制 transport
normalization.ts 消息规范化
channelPermissions.ts Channel 权限
channelAllowlist.ts Channel 白名单
channelNotification.ts Channel 通知
useManageMCPConnections.ts React hook
headersHelper.ts HTTP headers
envExpansion.ts env 变量展开
mcpStringUtils.ts 字符串工具
utils.ts 杂项

4.3 services/compact/ (12 文件)

详见 topics/context-compaction.md

4.4 services/analytics/、services/api/、services/auth (在 utils/) 等

不再展开。


5. utils/ 工具函数(100+ 文件)

5.1 巨型工具

文件 行数 作用
messages.ts 5512 消息工具(创建、转换、规范化)
sessionStorage.ts 5105 会话存储
hooks.ts 5022 hooks 工具
bash/bashParser.ts 4436 Tree-sitter bash parser
attachments.ts 3997 附件处理
bash/ast.ts 2679 bash AST 工具
plugins/pluginLoader.ts 3302 plugin 加载
plugins/marketplaceManager.ts 2643 plugin 市场
print.ts (实际在 src/cli/print.ts) 5594 CLI 输出

5.2 中型工具(500-2000 行)

utils/ 目录下约 50+ 个 500-2000 行的文件。ls src/utils/ 自查。

5.3 小型工具

utils/array.tsutils/format.tsutils/errors.tsutils/log.ts 等基础工具。


6. hooks/ 自定义 hooks (85 个文件)

详见 phase-02-repl.md 的 hooks 列表

按主题分类: - 输入类useInputBuffer.tsuseHistorySearch.tsuseArrowKeyHistory.tsxuseCommandQueue.ts ... - 生命周期useAfterFirstRender.tsuseExitOnCtrlCD.tsuseExitOnCtrlCDWithKeybindings.ts ... - 状态订阅useLogMessages.tsuseMergedClients.tsuseMergedCommands.tsuseMergedTools.ts ... - 网络useRemoteSession.tsuseDirectConnect.tsuseApiKeyVerification.tsuseSSHSession.ts ... - MCP / BridgeuseMailboxBridge.tsuseSwarmPermissionPoller.tsuseReplBridge.ts ... - 后台任务useBackgroundTaskNavigation.tsuseInboxPoller.ts ... - UIuseBlink.tsuseMinDisplayTime.tsuseFpsMetrics.ts(在 context/)... - 分析useElapsedTime.tsuseMemoryUsage.tsuseIdeLogging.ts ...

7. keybindings/ 键位系统(10 文件)

文件 作用
KeybindingProviderSetup.tsx 全局 Provider
useKeybinding.ts 单 binding 注册
useKeybindings.ts 多 bindings
useShortcutDisplay.ts 快捷键显示
shortcutFormat.ts 跨平台格式化

8. native-ts/ N-API 绑定(3 模块)

模块 作用
color-diff/ 颜色差异计算
file-index/ 文件索引(glob 加速)
yoga-layout/ Yoga flexbox 布局

9. vendor/ 外部 N-API(4 模块)

模块 作用
audio-capture-src/ macOS AVFoundation 音频
image-processor-src/ 剪贴板图像
modifiers-napi-src/ 键盘修饰键
url-handler-src/ URL scheme handler

10. 其他重要目录

目录 文件数 作用
src/commands/ 100+ 100+ 斜杠命令
src/tools/ 43 43 个工具
src/components/ 150+ 业务组件
src/components/messages/ 21 消息渲染器
src/components/design-system/ 14 设计系统
src/tasks/ 8 任务类型
src/services/ 100+ 业务服务
src/cli/ 5 CLI 子系统
src/bridge/ 20+ Bridge 桥接
src/skills/ 4 技能
src/plugins/ 2+ 插件

11. 用法

# 列某个目录所有文件 + 行数
ls src/state/ | xargs wc -l

# 找包含某关键词的文件
grep -rl "ToolPermission" src/

# 看哪个文件最大
find src -type f -name "*.ts" -exec wc -l {} + | sort -rn | head -20

12. 关键洞察

12.1 "关键文件" 不到 5%

1902 个文件里,真正"必读"的不超过 100 个。其余是配置 / 测试 / 工具。

12.2 "巨型文件" 占了一半行数

5594 + 5512 + 5105 + 5022 + 5005 + 4683 + 4436 + 3997 + 3419 + 3348 + 3302 + 3200 + 2999 + 2679 + 2643 + 2621 + 2592 + 2578 + 2465 + 2406 = 75,608 行,占 512,664 行的 14.7%

Top 20 文件 = 15% 的代码。这是典型的"长尾分布"。

12.3 按"行数"判断重要度是经验法则

但不是绝对的。比如 state/store.ts 60 行极其重要(核心抽象),而 state/teammateViewHelpers.ts 30 行不太重要。

关键"行数 × 调用频率" 才是真正的"重要性指标"。