Claude Code 源码研究(二)目录结构速查

src/ 下 53 个子目录、200+ 文件在干什么——一份按职责分层的速查表,从入口、引擎、工具到 UI 全覆盖。
claude-codesource-coderesearcharchitecture

这是 Claude Code 源码研究系列的第 2 篇。本篇是速查地图——后面 8 篇会按模块挖。

src/ 顶层裸文件(按职责)

文件大小作用
src/main.tsx804 KB主入口巨型文件,CLI 启动 / REPL 初始化等聚合
src/query.ts69 KB查询循环主逻辑(消息流 + 工具编排)
src/QueryEngine.ts47 KB顶层会话管理类
src/interactiveHelpers.tsx57 KB交互模式辅助
src/Tool.ts30 KBTool 接口契约
src/commands.ts25 KB命令注册表
src/dialogLaunchers.tsx23 KB模态对话框启动器
src/setup.ts20 KB启动初始化(配置、目录、迁移)
src/tools.ts17 KB工具注册表
src/history.ts14 KB会话历史管理
src/cost-tracker.ts11 KBToken/费用计费
src/context.ts6 KB上下文管理
src/Task.ts3 KBTask 抽象层
src/tasks.ts1 KBTask 注册表

src/ 子目录分类

入口与启动

目录内容要点
src/entrypoints/cli.tsxmcp.tssdk/agentSdkTypes.tssandboxTypes.ts
src/bootstrap/state.ts — 启动期全局状态
src/cli/I/O:print.tsstructuredIO.tsremoteIO.tstransports/handlers/

引擎与协议

目录内容要点
src/query/查询子模块:config.tsdeps.tsstopHooks.tstokenBudget.ts
src/schemas/hooks.ts — Hook 系统 zod schema
src/types/全局类型:command.tshooks.tsids.tspermissions.tsplugin.tsgenerated/
src/constants/22 个常量文件:prompts.tsproduct.tsapiLimits.tstoolLimits.tsbetas.tsoauth.tsfigures.tsxml.ts

工具与命令

目录数量内容要点
src/tools/43 子目录文件 / Shell / 网络 / 代理 / 任务 / 计划 / MCP / 元工具 / Worktree / 远程
src/commands/100+ 子目录认证 / 会话 / 代码工作流 / 配置 / 集成 / 上下文 / 计划 / 调试 / 代理 / 团队

多代理与未上线

目录内容要点
src/assistant/KAIROS 助手(仅 sessionHistory.ts,核心被 gate)
src/coordinator/多代理协调(仅 coordinatorMode.ts
src/bridge/远程桥接(30 文件):bridgeApi、replBridge、pollConfig、jwtUtils、trustedDevice
src/remote/RemoteSessionManagerSessionsWebSocketremotePermissionBridge
src/server/direct connect 服务端
src/upstreamproxy/上游代理
src/tasks/7 种任务实现
src/skills/Skill 系统:bundled/loadSkillsDir.tsmcpSkillBuilders.ts
src/plugins/插件系统:builtinPlugins.tsbundled/
src/buddy/虚拟宠物:companion、sprites、prompt、useBuddyNotification
src/voice/voiceModeEnabled.ts
src/memdir/记忆目录:findRelevantMemories、memoryAge、teamMemPaths
src/outputStyles/输出风格目录加载

UI 层

目录数量内容要点
src/ink/50 文件自研 ink fork:reconciler、布局、ANSI、selection、hyperlinks、bidi
src/components/144 文件React 组件:App.tsx、对话框、状态条、进度行、自动更新器
src/screens/3 文件REPL.tsxDoctor.tsxResumeConversation.tsx
src/hooks/84 文件React hook:useApiKeyVerificationuseTextInputuseTasksV2useVoice*
src/context/React Context:mailboxmodalContextnotificationsoverlayContext
src/state/全局状态:AppState.tsxAppStateStore.tsselectors.tsstore.ts

服务层 — src/services/

子目录作用
analytics/遥测埋点(Statsig/Datadog)
api/Anthropic API 客户端
oauth/OAuth 认证流
mcp/MCP 服务器接入
compact/上下文压缩(核心 reactiveCompact.js 缺失)
extractMemories/, SessionMemory/, teamMemorySync/, MagicDocs/记忆与文档
policyLimits/, claudeAiLimits.ts, mockRateLimits.ts速率/策略限制
remoteManagedSettings/, settingsSync/远程托管设置(每小时轮询)
voice.ts, voiceStreamSTT.ts, voiceKeyterms.ts语音模式
autoDream/后台 Dream Task
AgentSummary/, PromptSuggestion/, tips/, notifier.ts智能提示与通知
lsp/, tools/, toolUseSummary/LSP / 工具运行汇总
internalLogging.ts, diagnosticTracking.ts, vcr.ts内部日志、诊断、VCR 录制

系统层

目录内容要点
src/keybindings/parser、resolver、validator、defaultBindings.tsreservedShortcuts.ts
src/vim/motions.tsoperators.tstextObjects.tstransitions.ts
src/migrations/11 个迁移migrateFennecToOpusmigrateSonnet45ToSonnet46migrateBypassPermissionsAcceptedToSettings
src/native-ts/color-diff/file-index/yoga-layout/
src/moreright/useMoreRight.tsx
src/utils/329 个文件:Shell、Cursor、CircularBuffer、QueryGuard、auth、attachments、advisor、ansi*、bash/、background/、claudeInChrome/、cliHighlight 等

核心架构分层图

┌─────────────────────────────────────────────────────────┐
│ entrypoints/cli.tsx → main.tsx → screens/REPL.tsx        │  入口
├─────────────────────────────────────────────────────────┤
│ QueryEngine.ts / query.ts ── 消息循环 / 工具编排         │  引擎
├──────────────┬──────────────┬───────────────────────────┤
│ tools/ (43)  │ commands/    │ skills/ + plugins/         │  能力
│              │ (100+)       │                            │
├──────────────┴──────────────┴───────────────────────────┤
│ services/ (api, oauth, mcp, voice, analytics, compact)   │  服务
├─────────────────────────────────────────────────────────┤
│ bridge/ + remote/ + server/ + upstreamproxy/             │  远程
├─────────────────────────────────────────────────────────┤
│ components/ + screens/ + hooks/ + ink/ + state/          │  UI
├─────────────────────────────────────────────────────────┤
│ utils/ (329) + constants/ + types/ + schemas/            │  基础
└─────────────────────────────────────────────────────────┘

下一篇

下一篇钻进核心:QueryEnginequery.ts 主循环——这两个文件加起来 3024 行,是整个 CLI 的发动机。