经过前面28章的深度解析,你应该对Claude Code的架构有了全面了解。但如果你想去源码里亲自看看某个功能的实现,该去哪找?

这份索引手册按功能模块整理了Claude Code的核心源码文件,帮你快速定位想看的内容。

核心架构模块

Agent Loop核心

文件路径核心类/函数功能说明
src/core/agent.tsAgentAgent Loop主循环,查询-响应-处理流程
src/core/loop.tsrunLoop()消息循环执行器,处理用户输入和工具结果
src/core/query.tsprocessQuery()单次查询处理,工具调用与响应生成

工具系统

文件路径核心类/函数功能说明
src/tools/base.tsBaseTool抽象类所有工具的基类,定义通用接口
src/tools/registry.tsToolRegistry工具注册表,管理可用工具列表
src/tools/loader.tsloadTools()动态加载工具模块

具体工具实现

文件路径核心类/函数功能说明
src/tools/FileReadTool.tsFileReadTool文件读取,支持offset/limit分页
src/tools/FileEditTool.tsFileEditTool文件编辑,强制先读取再编辑
src/tools/BashTool.tsBashToolBash命令执行,含Git安全协议
src/tools/GrepTool.tsGrepTool代码搜索,基于ripgrep
src/tools/AgentTool.tsAgentTool派生子Agent,支持fork模式
src/tools/SkillTool.tsSkillTool技能系统,预算约束管理

上下文管理

自动压缩

文件路径核心类/函数功能说明
src/services/compact/compact.tscompact()手动压缩,摘要生成
src/services/compact/autoCompact.tsautoCompact()自动压缩,阈值触发
src/services/compact/prompt.ts压缩提示词模板定义压缩行为和摘要格式

微压缩

文件路径核心类/函数功能说明
src/services/compact/microcompact.tsmicrocompact()微压缩实现,三机制协同
src/services/compact/timeCleaner.tstimeCleaner()时间戳清理器
src/services/compact/cacheCleaner.tscacheCleaner()缓存感知清理器

Token预算

文件路径核心类/函数功能说明
src/constants/toolLimits.tsDEFAULT_MAX_RESULT_SIZE_CHARS工具结果大小限制(50K)
src/constants/toolLimits.tsMAX_TOOL_RESULTS_PER_MESSAGE_CHARS单消息工具结果限制(200K)
src/utils/tokenEstimator.tsestimateTokens()Token估算器,保守策略

提示词工程

系统提示词

文件路径核心类/函数功能说明
src/constants/prompts.tsgetSystemPrompt()系统提示词组装
src/constants/prompts.tsgetSimpleDoingTasksSection()极简主义指令组
src/constants/prompts.tsgetGitSafetyProtocol()Git安全协议

动态边界

文件路径核心类/函数功能说明
src/services/prompt/dynamicBoundary.tsSYSTEM_PROMPT_DYNAMIC_BOUNDARY动态边界标记
src/services/prompt/promptBuilder.tsbuildPrompt()提示词组装器

缓存系统

缓存中断检测

文件路径核心类/函数功能说明
src/services/api/promptCacheBreakDetection.tsrecordPromptState()记录提示词状态
src/services/api/promptCacheBreakDetection.tscheckResponseForCacheBreak()检测缓存中断
src/services/api/promptCacheBreakDetection.tsperToolHashes每个工具的独立哈希

缓存优化

文件路径核心类/函数功能说明
src/services/cache/dateMemoization.tsgetMemoizedDate()日期记忆化,避免午夜缓存中断
src/services/cache/schemaCache.tsschemaCache工具Schema缓存
src/services/cache/betaHeaderLatch.tsafkModeHeaderLatchedBeta Header锁存

权限与安全

权限系统

文件路径核心类/函数功能说明
src/utils/permissions/types.tsPermissionMode枚举权限模式类型定义
src/utils/permissions/modeResolver.tsresolvePermissionMode()权限模式解析
src/utils/permissions/denialTracking.tsDENIAL_LIMITS拒绝追踪阈值(3/20)
src/utils/permissions/denialTracking.tsshouldFallbackToPrompting()回退判定

YOLO分类器

文件路径核心类/函数功能说明
src/services/classifier/yoloClassifier.tsYOLOClassifierYOLO分类器主类
src/services/classifier/stage1Fast.tsstage1Fast()Stage 1快速过滤
src/services/classifier/stage2Deep.tsstage2Deep()Stage 2深度推理
src/services/classifier/whitelist.tsisWhitelisted()白名单检查

Agent系统

子Agent

文件路径核心类/函数功能说明
src/agents/base.tsBaseAgentAgent基类
src/agents/subAgent.tsSubAgent标准子Agent实现
src/agents/fork.tsforkAgent()Fork模式,继承上下文

协调者模式

文件路径核心类/函数功能说明
src/agents/coordinator.tsCoordinatorAgent协调者Agent
src/agents/coordinatorPrompt.ts协调者提示词“永远不要委托理解”
src/agents/worker.tsWorkerAgentWorker Agent

Agent生命周期

文件路径核心类/函数功能说明
src/agents/lifecycle.tsregisterAsyncAgent()注册后台Agent
src/agents/lifecycle.tscompleteAsyncAgent()标记Agent完成
src/agents/lifecycle.tsenqueueAgentNotification()结果通知注入

记忆系统

Memdir核心

文件路径核心类/函数功能说明
src/memory/memdir.tsMemdir记忆目录管理
src/memory/memdir.tsMEMORY_FILENAMEMEMORY.md索引文件

自动提取

文件路径核心类/函数功能说明
src/memory/extractMemories.tsextractMemories()自动记忆提取
src/memory/extractAgent.tsExtractAgent提取专用Agent

Auto-Dream

文件路径核心类/函数功能说明
src/memory/autoDream.tsautoDream()自动夜间整合
src/memory/consolidator.tsConsolidatorAgent整合Agent
src/memory/lock.tsacquireConsolidateLock()PID锁机制

Session Memory

文件路径核心类/函数功能说明
src/memory/sessionMemory.tsSessionMemory会话摘要管理
src/memory/sessionMemory.tssummarizeSession()会话摘要生成

Hooks系统

Hooks核心

文件路径核心类/函数功能说明
src/hooks/registry.tsHookRegistryHook注册表
src/hooks/dispatcher.tsdispatchHook()Hook分发器
src/hooks/types.tsHookType枚举Hook类型定义

具体Hook实现

文件路径事件名触发时机
src/hooks/commandHooks.tsbefore:command命令执行前
src/hooks/commandHooks.tsafter:command命令执行后
src/hooks/agentHooks.tsbefore:agentAgent调用前
src/hooks/agentHooks.tsafter:agentAgent调用后
src/hooks/httpHooks.tsbefore:httpHTTP请求前
src/hooks/httpHooks.tsafter:httpHTTP响应后

技能系统

技能核心

文件路径核心类/函数功能说明
src/skills/registry.tsSkillRegistry技能注册表
src/skills/loader.tsloadSkill()技能加载器
src/skills/types.tsSkill接口技能类型定义

技能存储

文件路径核心类/函数功能说明
src/skills/storage.tsgetSkillStoragePath()获取技能存储路径
src/skills/storage.tsloadSkillManifest()加载技能清单

Feature Flags

Flag定义

文件路径核心类/函数功能说明
src/featureFlags/flags.tsfeature()函数构建时Flag检查
src/featureFlags/flags.tsKAIROSKAIROS模式Flag
src/featureFlags/flags.tsTRANSCRIPT_CLASSIFIER分类器Flag

远程配置

文件路径核心类/函数功能说明
src/featureFlags/remote.tsgetRemoteFlag()获取远程Flag值
src/featureFlags/growthbook.tsGrowthBookClientGrowthBook客户端

配置与设置

配置文件

文件路径用途说明
CLAUDE.md项目级配置编码规范、架构约束
.claude/settings.json用户设置个人偏好、功能开关
.claude/settings.local.json本地设置机器特定配置

设置管理

文件路径核心类/函数功能说明
src/settings/loader.tsloadSettings()设置加载器
src/settings/validator.tsvalidateSettings()设置验证器
src/settings/types.tsSettings接口设置类型定义

实用工具

Git操作

文件路径核心类/函数功能说明
src/utils/git/status.tsgetGitStatus()获取Git状态
src/utils/git/diff.tsgetGitDiff()获取Git差异
src/utils/git/worktree.tscreateWorktree()创建git worktree

文件操作

文件路径核心类/函数功能说明
src/utils/file/reader.tsreadFile()文件读取,分页支持
src/utils/file/writer.tswriteFile()文件写入
src/utils/file/watcher.tsFileWatcher文件变更监听

网络请求

文件路径核心类/函数功能说明
src/utils/http/client.tsHttpClientHTTP客户端
src/utils/http/retry.tsretryRequest()请求重试逻辑

快速查找索引

按功能查找

你想了解…先看这里
Agent Loop怎么工作src/core/agent.ts, src/core/loop.ts
工具怎么定义src/tools/base.ts, 各工具文件
上下文怎么压缩src/services/compact/目录
Token预算怎么算src/constants/toolLimits.ts
系统提示词怎么组装src/constants/prompts.ts
缓存怎么优化src/services/cache/目录
权限怎么判断src/utils/permissions/目录
YOLO分类器怎么工作src/services/classifier/目录
子Agent怎么派生src/agents/subAgent.ts
Fork模式怎么实现src/agents/fork.ts
记忆怎么存储src/memory/memdir.ts
自动提取怎么工作src/memory/extractMemories.ts
Auto-Dream怎么触发src/memory/autoDream.ts
Hooks怎么用src/hooks/目录
技能怎么加载src/skills/目录
Feature Flag怎么定义src/featureFlags/flags.ts
设置怎么读取src/settings/loader.ts

按问题查找

你有这个问题…查这些文件
为什么编辑前要读取src/tools/FileEditTool.ts
为什么Git操作有安全限制src/tools/BashTool.ts提示词
压缩后怎么恢复文件src/services/compact/compact.ts
Token估算为什么保守src/utils/tokenEstimator.ts
缓存为什么中断src/services/api/promptCacheBreakDetection.ts
分类器为什么拒绝src/services/classifier/yoloClassifier.ts
协调者为什么不编码src/agents/coordinatorPrompt.ts
记忆为什么不生效src/memory/memdir.ts, src/memory/extractMemories.ts
Hooks为什么不触发src/hooks/dispatcher.ts

使用建议

阅读源码的顺序

  1. 先看接口定义types.ts文件了解数据结构和契约
  2. 再看主流程:核心类的入口方法,把握整体逻辑
  3. 最后看细节:具体实现、边界条件、错误处理

调试技巧

  • 环境变量CLAUDE_CODE_DEBUG=1开启调试日志
  • 日志位置~/.claude/logs/查看详细日志
  • API日志CLAUDE_CODE_DUMP_AUTO_MODE=1导出分类器输入输出

贡献代码

  • 编码规范:参考CLAUDE.md中的项目规范
  • 测试要求:修改核心模块需要配套测试
  • 文档同步:代码变更同步更新相关文档

这份索引手册涵盖了Claude Code的主要源码文件。随着版本迭代,文件路径可能会有变化,但核心架构和设计理念保持稳定。建议收藏,需要时快速查阅。