本章总览
src/memdir/ 是 Claude Code 自动记忆(auto-memory) 的核心:9 文件、约 1746 行。负责 ~/.claude/projects//memory/ 路径解析、MEMORY.md 索引加载与截断、四类型记忆 taxonomy 文案、query 时 findRelevantMemories 召回、以及为 extractMemories 提供 scan 原语。与 commands/memory(/memory UI)、services/extractMemories(回合末后台提取)、QueryEngine.loadMemoryPrompt 紧密协作。
学完本章你应该能
- 理解 isAutoMemoryEnabled 优先级链
- 知道 MEMORY.md 与 topic .md 文件的索引关系
- 区分 loadMemoryPrompt 与 buildMemoryPrompt
- 了解 extractMemories 与主 agent 写 memory 的互斥
- 能找到 /memory 命令与 memdir 路径的连接
- 理解 TEAMMEM feature 对 teamMemPaths 的影响
建议学习步骤
- 浏览子章节导航
- 点击 SourceTree module=memdir
- 建议顺序:memdir-core → memory-extraction → memdir-commands
模块在架构中的位置
memdir 是 src/ 下的一级目录,共 9 个文件、1,746 行。建议结合「系统架构」章节理解它与其他层的调用关系。
概览
| 指标 | 数值 |
|---|---|
| 行数 | 1,746 |
| 文件 | 9 |
子章节导航
| 子章节 | 主题 | 核心路径 |
|---|---|---|
| memdir-core | 加载/保存、路径、taxonomy | memdir.ts, paths.ts, memoryTypes.ts |
| memory-extraction | extractMemories、SessionMemory | services/extractMemories/, memoryScan.ts |
| memdir-commands | /memory、/remember 集成 | commands/memory/, skills/bundled/remember.ts |
9 文件职责图
| 文件 | 职责 |
|---|---|
| memdir.ts | ENTRYPOINT_NAME、truncate、buildMemoryLines、loadMemoryPrompt |
| paths.ts | isAutoMemoryEnabled、getAutoMemPath、validateMemoryPath |
| memoryTypes.ts | MEMORY_TYPES、TYPES_SECTION_*、frontmatter 示例 |
| memoryScan.ts | scanMemoryFiles、formatMemoryManifest |
| findRelevantMemories.ts | query 时 Sonnet 选文件 |
| memoryAge.ts | 记忆新鲜度辅助 |
| memoryShapeTelemetry.ts | MEMORY_SHAPE_TELEMETRY 分析 |
| teamMemPaths.ts / teamMemPrompts.ts | TEAMMEM feature 团队目录 |
memdir/ 不实现 slash 命令 UI——/commands/memory 调用 utils/claudemd getMemoryFiles。
数据流概览
Session start → loadMemoryPrompt() → system/user context 注入 MEMORY.md + 指南
User query → findRelevantMemories (optional) → 附加 topic 文件
Turn end → extractMemories (feature+gate) → fork agent 写 .md
User /memory → MemoryFileSelector → editFileInEditor
Main agent Write → hasMemoryWritesSince → extract 跳过重叠区间
9 文件全部在 src/memdir/ 根下,无子目录。相关服务代码在 services/extractMemories/ 与 commands/memory/,子章节通过 highlightFiles 跳转。
启用门控
isAutoMemoryEnabled:CLAUDE_CODE_DISABLE_AUTO_MEMORY → CLAUDE_CODE_SIMPLE → CCR 无 REMOTE_MEMORY_DIR → settings.autoMemoryEnabled → 默认 true。
isExtractModeActive:GrowthBook tengu_passport_quail + 非 headless(或 slate_thimble 允许)。
feature('EXTRACT_MEMORIES') 在调用点 if 直接使用——不可收进 isExtractModeActive alone(tree-shake 要求)。
本章小结与延伸
memdir = 磁盘记忆布局 + 系统 prompt 注入 + 扫描原语。命令与提取服务在子章节展开。 继续学习: