独立经验召回架构¶
- 沉淀时间:2026-09-09
- 来源:PR #7 / PR #9;
scripts/memory/ - 成熟度:
confirmed - 适用范围:希望复用历史任务经验,又不想侵入现有业务 Skill 的 Agent
核心决策¶
Memory 作为任务启动前的独立层:从正式结果中抽取经验,存入结构化索引,按当前输入召回少量候选,再把候选加入初始提示词。业务 Skill 不感知 Memory,也不承担存取逻辑。
历史 result → adapter 校验与特征抽取 → experience_memory.jsonl
↓ Top K
当前 SQL + db_mode ───────────────────────→ 初始提示词 → 原业务 Skill
数据边界¶
经验条目保留两类字段:
- 原始可信字段:数据库模式、选择的技能、风险、优化率、结果一致性。
- 程序生成字段:稳定
memory_id、触发特征、来源引用。
JSONL 是程序真相源,Markdown 是人读镜像。缺少 result_identical 的旧结果可以兼容入库,但必须保留 null、降低召回权重,并提示重新验证,不能补写成 true。
召回原则¶
- 先校验来源结果,再提取结构特征。
- 查询只返回少量候选,当前实现最多 3 条,避免 Memory 反过来挤占上下文。
- 经验只提供参考,当前 case 仍需重新执行和验证。
update-index以memory_id去重,更新时不覆盖历史来源。- 索引路径可配置,测试使用隔离文件,避免污染正式经验库。
为什么放在启动层¶
- 不修改集中式、分布式等业务 Skill,减少冲突和耦合。
- 同一 Memory 可以服务不同工作流,只需增加 adapter。
- 可同时保留“有 Memory”和“无 Memory”两条路径做 A/B 测试。
- Memory 故障时可以跳过召回,业务流程仍可运行。
反模式¶
- 把历史结果全文塞入 prompt。
- 用文件名或原始 SQL 文本做脆弱的精确匹配。
- 把缺失的一致性字段默认成通过。
- 为接入 Memory 修改每个业务 Skill。
- 只保存成功经验,忽略失败条件和风险。
限制¶
结构指纹对轻微 SQL 变化是否过严仍需真实样本验证。origin/feature/memory 的后续提交 6dc1c5d 尚未进入 develop,应单独判断是否属于本架构的必要修订。