架构决策记录(ADR)
ADR(Architecture Decision Record)记录项目中影响架构方向的决策:背景是什么、决定了什么、为什么、放弃了哪些备选。
为什么需要 ADR
- Issue 和 PR 记录"做了什么",但"为什么这么做、当时还考虑过什么"随时间丢失
- 记忆系统这类长周期演进的模块,决策依据(调研数据、版本限制)需要固化下来,供后来者(包括未来的自己和 AI agent)复审
- 决策变更时不删除旧 ADR,而是新增一条并标记旧条目为 Superseded,保留演进轨迹
何时写 ADR
满足任一条件时写:
- 决策影响多个模块或长期方向(如记忆架构、插件系统)
- 引入/拒绝一个重要外部依赖
- 在多个可行方案中做了取舍,且理由不显然
小的实现选择(函数拆分、命名等)不需要 ADR。
格式
每条 ADR 一个文件,命名 NNNN-短横线标题.md,包含:
- 状态:Proposed(待评审)/ Accepted(已采纳)/ Superseded by NNNN(被取代)
- 背景:问题与约束
- 决策:做了什么决定
- 理由:为什么,及放弃的备选方案
- 后果:正面/负面影响、迁移与复审条件
索引
| 编号 | 标题 | 状态 | 日期 |
|---|---|---|---|
| 0001 | 记忆管线(曾用名 LLM Mode)— categories + wiki-links 取代 Neo4j 语义节点 | Accepted | 2026-07-08(修订 2026-07-10) |
| 0002 | memU — 借鉴设计而非引入依赖(fallback 于 0003 激活) | Accepted | 2026-07-08(修订 2026-07-16) |
| 0003 | memU 双面集成 — memu-cli 先行、memu-py 就绪后接入,作实验性第二记忆后端 | Accepted | 2026-07-16(修订 2026-07-18) |
| 0004 | 记忆职责边界 — 框架管确定性机制,应用管需要模型的判断 | Proposed | 2026-07-21 |