C Claude Code Internals
| EN | ES

内存系统

Claude Code 使用 ~/.claude/ 中基于文件的内存系统在会话之间持久化信息。它使用 4 种类型的内存类别和一个始终加载到上下文中的索引文件(MEMORY.md)。

4 内存类型 200 MEMORY.md 行数限制 25KB MEMORY.md 大小限制

内存类型

user

User

· 角色、偏好、知识水平

Example: "Is a data scientist, new to React. Explain frontend concepts via backend analogues."

When to save: 当你了解用户的背景、目标或工作风格时。

feedback

Feedback

· 纠正和验证的方法

Example: "Don't mock the database in tests. A previous incident showed mock/prod divergence breaks migrations."

When to save: 当用户纠正方法或确认非显而易见的选择有效时。

project

Project

· 正在进行的工作、截止日期、事件

Example: "Merge freeze begins 2026-03-05 for mobile release cut. Flag non-critical PRs after that date."

When to save: 当你了解谁在做什么、为什么或何时做时。相对日期转换为绝对日期。

reference

Reference

· 指向外部系统的指针

Example: "Pipeline bugs are tracked in Linear project INGEST."

When to save: 当你了解外部工具中的资源(Linear、Grafana、Slack 频道等)时。

文件结构

每个内存存储为带有 YAML 前言的单独 markdown 文件。MEMORY.md 是索引。

~/.claude/projects/<slug>/memory/

├── MEMORY.md # index, max 200 lines / 25KB

├── user_role.md

├── feedback_testing.md

└── reference_tools.md

什么不保存在内存中

× 代码模式、约定或文件路径(可从代码派生)
× Git 历史或谁更改了什么(使用 git log / git blame)
× 调试解决方案或修复配方(修复在代码中)
× CLAUDE.md 中已记录的任何内容
× 当前会话的临时任务细节
× PR 列表或活动摘要(时间冻结,很快过时)

自动内存提取

在后台运行 : 主代理的分叉处理提取而不阻塞你的会话。
静默轮次后触发 : 当主模型完成一轮而不进行任何工具调用时激活。
最多 5 轮 : 提取代理最多 5 轮来识别和保存相关记忆。
受限权限 : Read/Grep/Glob 不受限。Bash 只读。Write/Edit 仅限于内存目录。
去重 : 如果主代理在同一会话中已写入内存,则不运行,避免重复。
缓存共享 : 与父会话共享提示词缓存以提高效率。
! MEMORY.md 在 200 行时会被静默截断
如果 MEMORY.md 索引超过 200 行或 25KB,它会被截断而不发出警告。 超过限制的条目根本不会加载到上下文中。保持索引简洁:每个内存文件一行, 每行不超过 150 个字符。