AI 项目记忆库搭建
设计哲学
奥卡姆剃刀:每个项目固定 3 个文件,不多不少。多了是噪音,少了是残缺。
每项目 3 个文件的结构,对应 AI 需要知道的"我是谁、我在干什么、我踩过什么坑"三个最核心问题。
| 文件 | 回答 | 操作 |
|---|---|---|
_项目概况.md |
我是谁?(定位/技术栈/约束) | 只读 |
当前状态.md |
我在干什么?(最近/下一步/阻塞) | 覆盖 |
经验教训.md |
我踩过什么坑? | 追加 |
目录结构
00_Memory/AI_项目记忆/
├── _MOC.md # 总索引
├── AIasMe/
│ ├── _项目概况.md
│ ├── 当前状态.md
│ └── 经验教训.md
├── HankKnowledge/
│ ├── _项目概况.md
│ ├── 当前状态.md
│ └── 经验教训.md
├── Broker/
│ ├── _项目概况.md
│ ├── 当前状态.md
│ └── 经验教训.md
└── news/
├── _项目概况.md
├── 当前状态.md
└── 经验教训.md
4 项目 × 3 文件 + 1 索引 = 共 13 个文件。
架构:两层机制
第1层 — CODEBUDDY.md 被动引用(核心,零成本)
每项目 CODEBUDDY.md 末尾引用 3 个记忆文件,AI 每次对话自动读取。
## AI 项目记忆(HankKnowledge 共享)
先读取以下文件了解项目上下文:
- D:\myKnowledge\HankKnowledge\00_Memory\AI_项目记忆\<项目>\_项目概况.md
- D:\myKnowledge\HankKnowledge\00_Memory\AI_项目记忆\<项目>\当前状态.md
- D:\myKnowledge\HankKnowledge\00_Memory\AI_项目记忆\<项目>\经验教训.md
当遇到重要决策、踩坑经验、项目状态变化时,更新对应文件。
总索引: D:\myKnowledge\HankKnowledge\00_Memory\AI_项目记忆\_MOC.md
第2层 — project-memory SKILL 主动管理(按需触发)
触发词:项目记忆、记录经验、踩坑记录、跨项目查询、更新项目状态。
写入规则:
- 经验教训.md — 追加,条目按时间倒序,不覆盖已有内容
- 当前状态.md — 覆盖更新,只保留当前状态
- 写入后必须向用户展示:写入了哪个文件、当前共多少条记录
为什么不用 Hook
Hook 是全量记录(每次对话存档),项目记忆需要人工判断"什么是值得记住的"。两者不冲突,各司其职。
为什么选 CODEBUDDY.md 而不是单独 SKILL
| 对比 | CODEBUDDY.md | 仅 SKILL |
|---|---|---|
| 加载时机 | 每次对话自动 | 需主动触发 |
| 适用场景 | 被动提醒(开局有记忆) | 主动操作(精准记录) |
CODEBUDDY.md 和 SKILL 互补,不是替代关系。
经验教训格式
### YYYY-MM-DD 标题
- **现象**: 问题的表面表现
- **根因**: 根本原因分析
- **方案**: 具体解决方案
- **避免**: 如何预防重复
踩过的坑
- SKILL 写成文档而不是指令 — AI 只输出分析不写文件。教训:SKILL.md 的第一读者是 AI,不是人类,必须用强制语言。
- 初始数据为空 — 搭建完模板后没有立即填充初始数据。教训:搭建即填充,模板不等于完成。
- 缺少确认机制 — 写入操作后没有向用户展示结果。教训:每个写操作必须有可见的输出反馈。
- 过早抽象 — 曾为 AIasMe 增加了变更日志、AI 规范索引、L2_SOP 子目录,实际运行中冗余低效。教训:MVP 先跑通核心流程,不要提前设计"可能有用"的结构。
参考
- 项目记忆索引: _MOC
- project-memory SKILL:
../.codebuddy/skills/project-memory/SKILL.md