5820 字
29 分钟

Claude Code Memory 深潜:CLAUDE.md、Auto Memory 与渐进式上下文披露

Agent Memory Engineering 专栏 · 2/6。 本文不猜测未公开的 Claude Code Runtime,而是依据 Anthropic 当前官方文档,把可验证的加载、写入、召回与压缩行为还原成一套工程模型,并明确区分“官方契约”和“本文推导”。

专栏导航:总览与选型地图 · Codex · Claude Code · Hermes · Mem0 · Letta · Graphiti


0. 研究边界:能验证什么,不能声称什么#

Claude Code 的核心 Runtime 没有以可逐行审计的形式完整公开。因此,本文不会把行为观察写成“源码证明”,也不会伪造内部类名、数据库表或后台任务。

本文使用三层证据:

证据层可得出的结论不能越过的边界
Anthropic 官方 Memory 文档文件位置、加载顺序、导入规则、Auto Memory 容量与存储位置不能推出未公开的内部函数实现
官方 Context / Settings / Hooks 文档Compaction 后的恢复、策略层级、可观测事件不能证明所有平台实现细节完全相同
本文工程推导缓存层级、Token 成本、冲突模型、生产治理建议必须显式标为推导或建议

资料于 2026-07-15 联网复核。官方文档是持续更新的行为契约,文末记录了可复查链接与核对内容。

0.1 本文要回答的十个问题#

  1. CLAUDE.md、Auto Memory 和 Conversation Compaction 分别解决什么问题?
  2. Managed、User、Project、Local 与 Nested Instructions 如何组合?
  3. 为什么“离当前目录更近”不等于数据库式覆盖?
  4. @path Import 是模块化,还是 Token 优化?
  5. .claude/rules/ 如何实现路径级渐进披露?
  6. 为什么 MEMORY.md 只加载前 200 行或 25 KB?
  7. Topic Files 如何把 Hot Index 和 Cold Evidence 分开?
  8. /compact 之后哪些指令会恢复,哪些需要再次触发?
  9. 文件记忆如何被审计、污染、冲突或跨 Worktree 共享?
  10. 大型 Monorepo 应如何设计一套可测试的 Instruction Architecture?

1. Claude Code 不是一种 Memory,而是三条生命周期#

官方文档把 Claude Code 的持久上下文分成两类:CLAUDE.md 是人写的持久指令,Auto Memory 是 Claude 自己维护的跨会话笔记。[C1]

工程上还必须把第三类机制单独列出:Context Compaction。它不是跨会话事实库,而是让当前长会话继续运行的上下文压缩机制。[C2]

机制主要作者生命周期默认进入当前 Context 的方式主要用途
CLAUDE.md / Rules人、团队、组织跨会话、可版本控制启动加载或按路径触发规范、约束、项目知识
Auto MemoryClaude跨会话、机器本地MEMORY.md Hot Index + Topic File 按需读取纠正、偏好、踩坑经验
Conversation CompactionRuntime / Model当前会话压缩旧对话并继续推理保持长 Run 连续性

所以:

Instruction Memory ≠ Learned Memory ≠ Conversation Compaction

把它们混为一谈会产生三个典型错误:

  • 把强制安全策略写进 CLAUDE.md,误以为模型一定执行;
  • 把所有自动经验塞进 Always-on 文件,导致启动 Context 持续膨胀;
  • /compact 当作长期记忆,以为新会话仍能访问压缩摘要。

1.1 Control Plane、Data Plane 与 Working Set#

可以把三类机制进一步映射为:

Managed Settings / Permission Rules
→ Enforcement Control Plane
CLAUDE.md / .claude/rules
→ Behavioral Instruction Plane
Auto Memory
→ Learned Experience Plane
Conversation + Tool Results + Compaction
→ Current Working Set

官方明确说明:Managed Settings 可以禁止工具、路径或命令,CLAUDE.md 只是在 Context 中塑造行为,并不是客户端强制执行层。[C1][C3]

这条边界非常关键:

Policy 必须由 Runtime Enforcement 保证;Memory 只能影响模型决策,不能替代权限系统。


2. CLAUDE.md Loader:它不是单文件读取,而是指令解析器#

Claude Code 会从当前工作目录向文件系统根目录回溯,寻找每一级目录中的 CLAUDE.mdCLAUDE.local.md。[C1]

发现后的内容不是“最近文件覆盖上层文件”,而是按顺序拼接:

Filesystem Root
Ancestor CLAUDE.md
Ancestor CLAUDE.local.md
...
Current Directory CLAUDE.md
Current Directory CLAUDE.local.md

在同一级目录内,CLAUDE.local.md 追加在 CLAUDE.md 之后。离启动目录更近的内容因此出现在更靠后的 Context 位置,但官方同时提醒:相互矛盾的自然语言规则并没有数据库式确定性覆盖,模型可能任意选择其中一条。[C1]

2.1 五种 Scope 不是五种优先级覆盖表#

Scope典型位置所有者共享方式适合内容
Managed Policy/etc/claude-code/CLAUDE.md 等平台路径IT / DevOps机器策略分发组织编码规范与合规提醒
User~/.claude/CLAUDE.md~/.claude/rules/*.md个人本机个人工作流、偏好工具
Project./CLAUDE.md./.claude/CLAUDE.md,以及 .claude/rules/*.md团队Git架构、测试、提交规范
Local./CLAUDE.local.md个人通常 Git Ignore私有路径、本机命令
Nested子目录中的 CLAUDE.md,或面向子目录的 paths Rules子系统维护者Git局部模块约束

Managed Policy 的“不可由个人排除”来自客户端设置层,而不是因为它在 Prompt 中拥有某种不可违背的系统消息权重。[C1][C3]

2.2 启动加载与按需加载必须区分#

官方行为契约给出两条路径:[C1]

祖先目录中的 CLAUDE.md
→ 启动时完整加载
当前目录之下子目录中的 CLAUDE.md
→ Claude 读取该子目录文件时按需加载

这是一种典型的 Progressive Disclosure:

  • 仓库根规则进入 Hot Context;
  • 子模块规则保持 Cold;
  • 文件访问事件成为加载触发器;
  • 同一个会话的可见指令集会随工作路径变化。

如果把全部子项目规则都塞进根文件,Monorepo 的 Instruction Cost 会接近:

Cstartup=i=1Ntokens(rulei)C_{startup}=\sum_{i=1}^{N} tokens(rule_i)

按路径触发后,启动成本更接近:

Cstartup=tokens(root)+tokens(shared)C_{startup}=tokens(root)+tokens(shared)

而任务增量成本为:

Ctask=imatched pathstokens(rulei)C_{task}=\sum_{i \in matched\ paths} tokens(rule_i)

2.3 一个行为级 Loader 还原#

下面是依据官方发现与拼接规则整理的行为级伪代码,不是 Claude Code 原始源码:

def build_startup_instructions(cwd, settings):
project_root = resolve_project_root(cwd)
layers = []
layers += load_managed_policy(settings)
layers += load_user_instructions("~/.claude/CLAUDE.md", settings)
layers += load_unscoped_rules("~/.claude/rules", settings)
for directory in walk_from_fs_root_to(cwd):
# 项目根还支持 .claude/CLAUDE.md 这一存放形式。
for path in discover_directory_instructions(directory, project_root):
if exists(path) and not excluded(path, settings):
layers += expand_imports(path, max_depth=4)
layers += load_unscoped_rules(project_root / ".claude/rules", settings)
return concatenate(layers)
def on_file_read(path):
load_nested_claude_files_for(path)
activate_path_scoped_rules_matching(path)

这个模型揭示了一个常被忽略的问题:Context 不是启动时一次性固定的。Nested Instructions 让 Instruction Set 成为随工具访问动态变化的工作集。


3. @path Import:模块化语法,不是上下文分页#

CLAUDE.md 可以用 @path/to/import 引入其他文件。官方当前规则包括:[C1]

  • 支持相对路径和绝对路径;
  • 相对路径相对于包含 Import 的文件解析,而不是 Shell 当前目录;
  • 被引入文件还可以继续 Import,最大递归深度为四层;
  • Markdown Inline Code 与 Fenced Code Block 中的 @path 不会被解析;
  • 第一次遇到项目外部 Import 时,会展示文件清单并要求用户批准;
  • 用户拒绝后,外部 Import 保持禁用,不会每次重复弹窗。

3.1 为什么相对路径基准很重要#

假设:

repo/
├── CLAUDE.md
└── docs/
├── agent.md
└── rules/
└── testing.md

docs/agent.md 中写:

@rules/testing.md

正确解析目标是:

repo/docs/rules/testing.md

如果错误地以 repo/ 或进程 CWD 为基准,同一指令文件在不同启动位置会加载不同内容,Instruction Build 将不再可复现。

3.2 Import 不降低 Token 成本#

官方明确提醒:Import 适合组织内容,但被引入文件仍在启动时展开并进入 Context。[C1]

所以:

Split by @import
→ improves maintainability
→ does not automatically reduce startup tokens

如果目标是减少 Context,应该使用:

  • Nested CLAUDE.md 的目录触发;
  • .claude/rules/paths Frontmatter;
  • Auto Memory 的 Topic Files;
  • Agent 主动读取而不是 Always-on 注入。

3.3 Import 是一个供应链入口#

外部绝对路径 Import 能把 Home Directory、共享配置或工作区外规则引入 Prompt。这带来三个风险:

  1. 内容漂移:外部文件变化不经过当前仓库 Review;
  2. 信任扩散:项目成员看到 @path,却未必拥有同一文件;
  3. Prompt Supply Chain:被引入内容可以改变工具决策,但不会出现在当前仓库 Diff 中。

外部 Import 首次审批是一道重要信任门,但生产治理还应记录:

source_path
content_hash
approved_by
approved_at
loaded_at

官方目前承诺的是审批行为,不等于提供完整的版本锁定与变更审计。


4. .claude/rules/:把 Instruction Routing 做成路径匹配#

项目级 .claude/rules/ 与用户级 ~/.claude/rules/ 都会递归发现 Markdown 文件;用户级 Rules 先于项目级 Rules 加载。没有 paths Frontmatter 的规则在启动时加载;带 paths 的规则在 Claude 读取匹配文件时触发。[C1]

示例:

---
paths:
- "services/payment/**/*.java"
- "libs/money/**/*.kt"
---
# Money Rules
- 金额必须使用定点类型。
- 所有舍入模式必须显式声明。

4.1 Rules 是 Retrieval Router,不只是文件拆分#

可以把路径规则理解成一个确定性 Retriever:

Current File Path
→ Glob Match
→ Applicable Instruction Set
→ Context Injection

它和 Vector Retrieval 的差别是:

维度Path RulesVector Memory
召回键文件路径语义相似度
确定性近似
可解释性可指出匹配 Glob需要解释相似度与重排
适合内容模块约束、语言规范模糊经验、跨任务事实

对于 Coding Agent,文件路径本身携带强结构信号,因此确定性 Routing 往往比“把所有规范做 Embedding”更可靠。

官方文档说明 .claude/rules/ 支持 Symlink,循环 Symlink 会被检测;新版本还支持通过指向项目的 Symlink Path 触发 paths 匹配。[C1]

这意味着规则匹配不能只比较未经规范化的字符串路径。一个合理的行为模型至少需要:

Input Path
→ Resolve / Normalize
→ Detect Symlink Cycle
→ Establish Project Boundary
→ Glob Match

在大型 Monorepo 中,claudeMdExcludes 可以跳过无关祖先文件或其他团队的规则目录;Managed Policy 文件不能被排除。[C1]


5. Auto Memory:Hot Index 与 Topic Files 的双层结构#

Auto Memory 默认开启。Claude 会基于未来复用价值决定是否记录构建命令、调试经验、架构说明、代码偏好和工作习惯;它并不保证每个会话都写入。[C1]

每个项目对应一个目录:

~/.claude/projects/<project>/memory/
├── MEMORY.md
├── debugging.md
├── architecture.md
└── workflows.md

项目标识优先由 Git Repository 推导,因此同一仓库的不同 Worktree 和子目录共享同一个 Auto Memory Directory;Git 仓库之外则使用 Project Root。Auto Memory 是机器本地状态,不会自动跨机器或云环境同步。[C1]

5.1 MEMORY.md 是 Index,不是无限正文#

每次新会话启动时,只加载 MEMORY.md 的:

前 200 行
前 25 KB
取先到者

这个限制只针对 Auto Memory 的 MEMORY.mdCLAUDE.md 仍会完整加载,只是官方建议每个文件尽量低于 200 行以减少 Context 成本和规则失遵。[C1]

MEMORY.md 的工程角色更接近:

Compact Registry
+ Routing Summary
+ Most Valuable Always-on Lessons

详细信息移动到 Topic Files 后,由 Agent 根据索引按需读取。

5.2 两级读取路径#

flowchart LR
S["Session Start"] --> C["CLAUDE.md Loader"]
S --> M["MEMORY.md: first 200 lines or 25 KB"]
C --> H["Hot Context"]
M --> H
H --> D{"Need detailed memory?"}
D -->|"yes"| T["Read topic file on demand"]
T --> W["Current working context"]
D -->|"no"| W
F["File access"] --> R["Load nested rules"]
R --> W

这是一种非常实用的 Cache Hierarchy:

层级容量延迟进入 Context 的频率
Root / Managed CLAUDE.md启动时每次
MEMORY.md Index有硬上限启动时每次
Topic Files可扩展需要文件读取按需
Repository / External Docs很大搜索与工具调用任务相关

5.3 一个行为级 Write Path#

官方没有公开完整内部写路径。根据其行为契约,只能严谨还原到:

Conversation / Tool Observation
→ Claude judges future usefulness
→ Write or update MEMORY.md / topic file
→ Future session loads bounded index
→ Agent may read topic file on demand

生产系统还需要但官方文档未承诺的能力包括:

  • 多进程 File Lock;
  • Optimistic Version Check;
  • Mutation Log;
  • Write-time Secret Detection;
  • Topic File Garbage Collection;
  • 跨机器同步冲突解决。

这些不能被写成 Claude Code 已实现,只能作为 File Memory 的生产化补强。

5.4 /memory 是最小治理面#

/memory 会列出当前会话加载的 CLAUDE.mdCLAUDE.local.md 和 Rules 文件,并提供 Auto Memory 开关与目录入口。Auto Memory 文件是普通 Markdown,可由用户审计、编辑或删除。[C1]

这使系统获得三个重要性质:

  • Inspectable:人可以看到 Agent 记了什么;
  • Correctable:错误记忆可直接修正;
  • Deletable:不需要调用专有数据库 API 才能删除。

但“文件已删除”是否等于“当前 Context 已清除”仍要区分:已经注入本轮 Context 的内容不会因为磁盘文件删除而自动从模型输入中撤回。

同一套有界索引模式还可以隔离到 Subagent。Subagent Frontmatter 可声明 memory: user|project|local,Claude Code 会按 Subagent 名称建立独立目录,在启动时注入其 MEMORY.md 的前 200 行或 25 KB,并自动开放 Read、Write、Edit 工具供其维护记忆。[C5] 这让代码审查、测试或架构分析等角色可以分别积累经验,而不是把所有角色状态混入主 Agent;其中 project Scope 可进入版本控制,也应按仓库贡献者可修改的输入来治理。


6. Auto Memory 的一致性边界#

文件结构简单,不代表一致性问题消失。

6.1 Worktree 共享会产生并发写入面#

官方说明同一 Git Repository 的 Worktree 和子目录共享一个 Auto Memory Directory。[C1]

如果两个 Claude Code Session 同时更新 MEMORY.md

Session A reads v1
Session B reads v1
Session A writes v2
Session B writes v3 based on v1

没有锁或版本校验时,A 的更新可能被覆盖。这是由官方存储边界推导出的并发风险,不代表官方文档确认存在该 Bug。

一个生产级写入协议应至少是:

Read(content, hash)
→ Build mutation
→ Lock project memory
→ Re-read current hash
→ Reject or merge on drift
→ Atomic replace
→ Append audit event

6.2 机器本地意味着可用性优先于分布式一致性#

Auto Memory 没有形成多副本分布式系统,因此严格来说这不是 CAP 定理中的一致性取舍。它做的是更直接的产品选择:用无跨机器协调换取本地可用性和低延迟,代价是没有跨机器一致性:

  • 本地读写简单、低延迟;
  • 不需要中央服务;
  • 离线可用;
  • 但换机器后没有相同经验;
  • 团队无法天然共享 Agent 自己积累的知识;
  • 备份与删除证明由本地文件系统负责。

需要跨机器共享的团队事实应该优先进入 Version-controlled CLAUDE.md、Rules、文档或受治理的外部 Memory Service,而不是假设 Auto Memory 是团队知识库。

6.3 Index Drift#

MEMORY.md 指向已经删除、改名或内容漂移的 Topic File,会产生:

Registry says memory exists
but evidence cannot be loaded

可观测指标应包括:

broken_topic_link_count
orphan_topic_file_count
memory_index_bytes
memory_index_lines
topic_read_hit_rate
stale_memory_correction_rate

7. Compaction:为什么它和 Memory 必须分开#

Context Compaction 解决当前会话 Token 接近上限的问题。它压缩旧对话和工具结果,让同一个 Run 能继续;Auto Memory 与 CLAUDE.md 则跨会话存在。[C2]

官方故障排查文档给出一个很有价值的恢复差异:[C1]

Project-root CLAUDE.md
→ /compact 后从磁盘重新读取并注入
Nested CLAUDE.md
→ 不会在 compact 后统一重新注入
→ 之后再次读取对应子目录文件时才重载

所以 Compaction 之后的 Instruction Working Set 可能暂时缩小:

Before compact:
Root Rules + Nested A + Nested B + Conversation
After compact:
Root Rules + Compacted Conversation
Later reads module A:
Root Rules + Nested A + Compacted Conversation

7.1 三类状态的恢复语义#

状态/compact新会话后磁盘删除后
Root CLAUDE.md重新注入重新加载下一次恢复时消失
Nested Instructions路径再次触发路径触发未再次注入
MEMORY.md当前 Runtime 行为依官方实现启动载入受限前缀新会话不再载入
Topic FileAgent 按需读取Agent 按需读取后续读取失败
Conversation-only Instruction取决于摘要保留消失不适用

因此,希望跨会话或跨 Compaction 稳定存在的关键约束,不应只出现在 Conversation 中。


8. Security:Memory 是可持久化 Prompt Injection 面#

Claude Code 官方文档强调 CLAUDE.md 是 Context,而不是强制配置。[C1][C3] 这意味着任何能修改这些文件的主体,都可能持续改变未来会话行为。

8.1 信任域必须分层#

Managed Policy
→ organization-controlled
Repository CLAUDE.md / Rules
→ repository contributor-controlled
CLAUDE.local.md
→ local user-controlled
Auto Memory
→ model-written from observed content
External Import
→ external file owner-controlled

最危险的错误是把所有层都当成“可信系统提示词”。

8.2 Auto Memory Poisoning#

可能的攻击链:

Untrusted issue / webpage / repository text
→ model treats instruction as useful lesson
→ writes persistent auto memory
→ malicious guidance survives future sessions
→ later tool decision is influenced

文件可读可删降低了恢复难度,但不能阻止写入发生。生产化防护应包括:

  • 写入时标注来源类型与 Trust Label;
  • 外部内容不得直接升级为行为指令;
  • Secret / Credential Pattern 检测;
  • 高风险 Mutation 进入 Quarantine;
  • 周期性 Diff 与异常写入速率告警;
  • 工具权限独立于 Memory 内容执行。

这些措施对应的是持久化 Prompt Injection 的分层防护,而不是依赖某一个字符串过滤器证明 Memory 安全。[C6]

8.3 Managed Settings 与 Managed Instructions 的职责#

需求应使用的控制面
禁止危险命令permissions.deny 等设置
强制 SandboxManaged Settings
强制认证方式Managed Settings
提醒代码规范Managed CLAUDE.md
项目架构说明Project CLAUDE.md / Rules
Agent 经验Auto Memory

“禁止”与“建议”不能只靠措辞强度区分,必须由不同 Runtime 层承载。


9. Monorepo:如何设计可持续的 Instruction Architecture#

一个常见失败模式是把目录树、依赖列表、所有命令和每个团队规范都塞进根 CLAUDE.md。官方建议每个 CLAUDE.md 尽量低于 200 行,并指出过长文件会消耗 Context、降低遵循率;/doctor 还能建议删除模型可从仓库自行推导的内容。[C1]

9.1 推荐目录#

repo/
├── CLAUDE.md # 全局不变量、路由索引、关键命令
├── .claude/
│ ├── rules/
│ │ ├── security.md # Always-on
│ │ ├── java.md # paths: **/*.java
│ │ ├── frontend.md # paths: apps/web/**
│ │ └── database.md # paths: migrations/**
│ └── settings.json
├── services/
│ ├── billing/CLAUDE.md # Billing 局部不变量
│ └── identity/CLAUDE.md # Identity 局部不变量
└── AGENTS.md # 通过根 CLAUDE.md 显式导入

9.2 根文件只保留“不可从代码廉价推导”的信息#

适合保留:

  • 构建或测试中的反直觉前置条件;
  • 容易造成生产事故的架构约束;
  • 团队明确选择及其理由;
  • 常见失败路径;
  • 进入详细规则的路由说明。

不适合长期重复:

  • 可由 package.json、Gradle 或目录结构直接读出的事实;
  • 生成后很快漂移的文件清单;
  • 每个模块的完整 API 文档;
  • 没有明确行为影响的背景介绍。

9.3 Conflict Matrix#

每条重要规则应能回答:

字段示例
Scopeservices/payment/**
OwnerPayment Platform Team
EnforcementTest / Lint / Runtime / Prompt only
Source.claude/rules/money.md
Supersedes旧规则 ID
Review date2026-07-15

如果一条规则只有 Prompt 文本、没有测试或 Runtime Enforcement,就应明确标注为 Best-effort Instruction。


10. 可观测性与测试:如何证明“正确规则在正确时刻被加载”#

官方提供 InstructionsLoaded Hook,用于记录哪些 Instruction Files 在何时、因为什么原因被加载。[C1][C4]

这让 Instruction System 可以从“感觉 Claude 应该看到了”升级为可观测路径:

File Read
→ Rule Match
→ InstructionsLoaded Event
→ Context Change
→ Agent Decision

10.1 建议记录的事件字段#

{
"session_id": "...",
"instruction_path": "...",
"scope": "project|local|nested|rule|managed",
"load_reason": "startup|path_match|post_compaction|manual",
"content_hash": "sha256:...",
"bytes": 2310,
"loaded_at": "..."
}

10.2 必须做的测试#

Loader Contract Test#

构造临时目录树,验证祖先顺序、Local 追加顺序、Exclude 与 Managed Policy 不可排除。

Import Test#

覆盖相对路径、绝对路径、四层递归上限、Code Fence 跳过、循环引用和外部审批。

Path Rule Test#

为每个 Glob 提供 Positive / Negative Fixture,避免 **/*.java 之类规则意外覆盖生成目录。

Compaction Recovery Test#

记录 Compact 前后 Instruction Set,验证 Root 重新注入、Nested 仅在再次访问时恢复。

Memory Poisoning Eval#

把“要求 Agent 永久记住危险指令”的文本放入不可信文件,检查是否进入 Auto Memory、是否被标注来源、是否影响后续工具调用。

10.3 指标不能只看 Token#

startup_instruction_tokens
path_rule_activation_count
instruction_conflict_rate
instruction_adherence_rate
auto_memory_write_rate
auto_memory_correction_rate
topic_file_read_hit_rate
post_compaction_instruction_miss_rate

Token 降低但关键规则漏载,不是优化;规则全部加载但冲突率上升,也不是成功。


11. Claude Code 路线的优势与边界#

11.1 优势#

  • 与 Coding Agent 的文件世界天然一致;
  • 人类可读、可审计、可修改;
  • Project Instructions 可进入 Git Review;
  • Directory 与 Glob 提供确定性 Routing;
  • Hot Index + Topic Files 支持渐进披露;
  • 不依赖独立 Vector DB 才能形成有效长期上下文。

11.2 边界#

  • 自然语言冲突没有数据库式确定性覆盖;
  • CLAUDE.md 是 Best-effort 行为指令,不是权限执行层;
  • Auto Memory 机器本地,不能天然充当团队知识库;
  • 文件共享会引入多 Session 并发和 Drift 问题;
  • Topic Index 可能出现断链与过期;
  • 对模糊跨项目语义召回,纯路径结构不一定足够;
  • 动态事实的有效时间与冲突历史需要额外 Temporal Model。

11.3 最准确的架构定义#

Claude Code Memory 不是:

Markdown instead of Vector DB

而是:

Hierarchical Instruction Loader
+ Path-triggered Retrieval
+ Bounded Auto-memory Index
+ Agentic Topic-file Read
+ Human-auditable Local Storage
+ Compaction-aware Reinjection

它最值得学习的不是“用文件就够了”,而是:

利用代码仓库现有的目录、路径、版本控制和文件工具,把 Memory Retrieval 变成可解释的 Progressive Disclosure。


12. 工程落地清单#

在团队中采用类似路线时,至少确认:

  1. CLAUDE.md 是否只保留全局不变量?
  2. 路径规则是否有 Positive / Negative Fixture?
  3. Import 是否有外部路径审批与 Hash 审计?
  4. 安全限制是否由 Settings / Sandbox 强制,而非只写 Prompt?
  5. Auto Memory 是否有来源、Secret 与 Poisoning 检查?
  6. 多 Worktree Session 是否会覆盖同一文件?
  7. MEMORY.md 是否保持在启动预算内?
  8. Topic File 是否有断链与过期清理?
  9. Compaction 后是否验证关键 Root Instructions 重新注入?
  10. /memoryInstructionsLoaded 是否进入日常排障流程?

参考资料#

下列资料均于 2026-07-15 联网核对。Claude Code Runtime 未完整开源,因此本文只把官方文档写成“行为契约”;伪代码、成本模型和生产化补强均为本文工程推导。

[C1] Anthropic:How Claude remembers your project#

  • How Claude remembers your project
  • Markdown 原文
  • 核对内容:CLAUDE.md Scope 与加载顺序、Nested Lazy Load、@ Import、四层递归、外部审批、Rules、claudeMdExcludes、Auto Memory 位置、200 行 / 25 KB、Worktree 共享、/memory、Compaction 后 Root / Nested 恢复差异。

[C2] Anthropic:Manage context and compaction#

  • Context window
  • 核对内容:Context Working Set、Compaction 目的与跨会话 Memory 的职责差异。

[C3] Anthropic:Settings and permissions#

  • Settings
  • Permissions
  • 核对内容:Managed Settings、权限拒绝、Sandbox 与 CLAUDE.md Best-effort 行为指令的边界。

[C4] Anthropic:Hooks#

  • Hooks reference
  • 核对内容:InstructionsLoaded 事件与指令加载可观测性。

[C5] Anthropic:Subagents#

  • Subagents
  • 核对内容:Subagent 可维护独立持久 Memory,避免把所有角色经验混入主 Agent。

[C6] OWASP:Agent Memory Security#


上一篇:Codex Memory 源码深潜 · 下一篇:Hermes Memory 源码深潜

Claude Code Memory 深潜:CLAUDE.md、Auto Memory 与渐进式上下文披露
https://jupiter-ws.cn/posts/ai-coding/agent-memory-claude-code-deep-dive/
作者
Jupiter
发布于
2026-07-15
许可协议
CC BY-NC-SA 4.0