跳转至

独立经验召回架构

  • 沉淀时间: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。

召回原则

  1. 先校验来源结果,再提取结构特征。
  2. 查询只返回少量候选,当前实现最多 3 条,避免 Memory 反过来挤占上下文。
  3. 经验只提供参考,当前 case 仍需重新执行和验证。
  4. update-index 以 memory_id 去重,更新时不覆盖历史来源。
  5. 索引路径可配置,测试使用隔离文件,避免污染正式经验库。

为什么放在启动层

  • 不修改集中式、分布式等业务 Skill,减少冲突和耦合。
  • 同一 Memory 可以服务不同工作流,只需增加 adapter。
  • 可同时保留“有 Memory”和“无 Memory”两条路径做 A/B 测试。
  • Memory 故障时可以跳过召回,业务流程仍可运行。

反模式

  • 把历史结果全文塞入 prompt。
  • 用文件名或原始 SQL 文本做脆弱的精确匹配。
  • 把缺失的一致性字段默认成通过。
  • 为接入 Memory 修改每个业务 Skill。
  • 只保存成功经验,忽略失败条件和风险。

限制

结构指纹对轻微 SQL 变化是否过严仍需真实样本验证。origin/feature/memory 的后续提交 6dc1c5d 尚未进入 develop,应单独判断是否属于本架构的必要修订。

关联