情景记忆 few-shot Plugin。
长期记忆的「情景记忆(episodic)」类型 — 记住"成功的过往交互"作为下次类似 query 的 few-shot 示例。
与现有 Memory 模块的关系
CMDC 现有记忆模块各司其职:
| 模块 | 类型 | 用途 |
|---|---|---|
Plugin.Builtin.MemoryLoader | 程序记忆 | 加载 AGENTS.md 静态规则到 system prompt |
Plugin.Builtin.MemoryFlush | 语义记忆 | 压缩前提取关键事实 → AGENTS.md |
cmdc_skill_engine | 可复用能力 | Skill 进化(成功/失败评分) |
Plugin.Builtin.EpisodicMemory(本模块) | 情景记忆 | 完整成功对话的 few-shot 复用 |
情景记忆与 Skill 的区别:
- Skill:抽象的可复用能力("如何做 X")
- Episodic:具体的成功对话片段("上次 X 是怎么做成的")
工作流程
:session_end:检查 session 是否成功(自定义judge_fn或简单启发式)- 成功 session → 抽取
{query, plan, tool_trajectory, final_answer}→ 写入CMDC.Memory后端(默认CMDC.Memory.ETS) :session_start:用当前用户首条消息 → 语义检索 top-K episodes → inject 到 system prompt 作为 few-shot 示例
配置
{EpisodicMemory, [
memory_store: :episodic_memory, # 必填,CMDC.Memory backend 表名
memory_module: CMDC.Memory.ETS, # 默认 ETS(cmdc_memory_pg 可换 PG)
judge_fn: &MyApp.judge_success/2, # 自定义成功判断函数
top_k: 3, # session_start 检索 top-K
max_episodes_per_user: 100 # 按 user_id 上限避免内存爆
]}v0.4.0 实现说明
judge_fn默认启发式:session.turn >= 2 且无 abort/error 视为成功- 语义检索:调用
CMDC.Memorybehaviour 的search/3callback(关键词包含匹配;若 backend 支持向量检索会自动升级为语义检索) - 按
ctx.user_data[:user_id]namespace 隔离(多租户支持)
Summary
Functions
默认 judge:session.turn >= 2 且无 abort/error 视为成功。