Memdir
title Memdir
type concept
category tech
tags AI工程记忆系统上下文
created 2026-04-20
sources 1
Memdir
定义
Claude Code 设计的一套结构化记忆机制,将记忆明确拆解为四种核心类型,每种类型承载不同的业务语义。
为什么强调"结构化"
因为非结构化的记忆虽然灵活,但在实际工程中极易导致上下文膨胀和检索噪声。
四种核心类型
User(用户级)
- 用途:记录用户的个人偏好、操作习惯及特定指令风格
- 价值:让 Claude Code 越用越懂你
Feedback(反馈级)
- 用途:存储模型行为的修正记录和历史纠错案例
- 价值:形成"避坑指南",防止同类错误复发
Project(项目级)
- 用途:固化项目层面的技术选型、架构决策和约束条件
- 价值:确保多轮对话中技术立场的一致性
Reference(参考级)
- 用途:沉淀通用的文档片段和代码模式
- 价值:作为高频调用的知识底座
记忆加载与检索
记忆加载
loadMemoryPrompt 作为记忆加载的主入口,这个函数并非简单的文件读取,而是一个精密的"过滤器":
- 扫描记忆目录,将分散的记忆条目按上述四种类型进行归类整理
- 严格应用预算限制,根据当前任务的上下文窗口大小,动态裁剪记忆内容
- 生成格式化后的记忆提示词注入到 Prompt 中
这一步至关重要,它确保了进入 LLM 上下文的每一字节都是高价值的,避免了因记忆过载导致的"注意力分散"。
LLM-in-the-loop 的检索策略
在 memdir/findRelevantMemories.ts 中,Claude 使用的是 Sonnet 模型来理解语义驱动检索过程。
- 系统不再依赖简单的关键词匹配或固定的相似度阈值
- 让大模型亲自充当"图书管理员",对候选记忆进行语义相关性判断
- 强制约束其只返回最多 5 条最相关的记忆
这种设计巧妙地平衡了"召回率"与"精确度":
- 一方面利用大模型的推理能力解决了传统检索在复杂语义下的失效问题
- 另一方面通过数量限制严格控制了 Token 消耗和延迟
与 OpenClaw 的对比
- Claude Code 的 Memory:更偏向于记忆项目文档、参考、用户偏好和反馈
- OpenClaw 的 Memory:记录的更多是对话中的重点历史信息,在 MEMORY.md 中记录了长期记忆,在 memory/日期.md 里面存储每日的笔记,将长期和短期记忆相结合,并且引入了记忆检索和时间衰减来模拟一个真实的"人"的记忆的衰减过程
还是那句话,Agent 系统定位的区别,导致 Memory 记忆机制的设计差异。
价值
从静态的规则组装到动态的 LLM 语义筛选,这套记忆体系让 Claude Code 不再是"用完即走"的一次性工具,而是具备了持续学习和自我修正能力的 AI Coding Agent。