61 lines
1.7 KiB
Markdown
61 lines
1.7 KiB
Markdown
# Replay and Retrieval
|
||
|
||
## 目标
|
||
|
||
把 memabra 的最小闭环接起来:
|
||
- retrieval 负责把 memory / skill / tool 候选召回出来
|
||
- replay 负责读取 trajectories 并汇总行为结果
|
||
|
||
这两者一接上,系统就不再只是静态文档和单点 router,而是具备了:
|
||
- 候选输入
|
||
- 决策输出
|
||
- 轨迹回放
|
||
- 基础统计
|
||
|
||
## 当前实现
|
||
|
||
### retrieval.py
|
||
提供:
|
||
- `CandidateProvider` 协议
|
||
- `InMemoryCandidateProvider`
|
||
- `CandidateRetriever`
|
||
- `RetrievalResult`
|
||
|
||
当前策略:
|
||
- 使用 trigger/tag 与任务文本做简单 lexical matching
|
||
- 结合 confidence / success_rate / freshness / cost / risk 做 baseline 排序
|
||
- 对不同 provider 输出做按类型聚合与去重
|
||
|
||
### replay.py
|
||
提供:
|
||
- `TrajectoryReplay`
|
||
- `ReplaySummary`
|
||
|
||
当前能力:
|
||
- 加载单个 trajectory JSON
|
||
- 加载目录下多个 trajectory
|
||
- 汇总 outcome counts
|
||
- 汇总 reward、latency、steps、user corrections
|
||
- 统计各类 decision_type 次数
|
||
|
||
## 为什么这一步重要
|
||
|
||
没有 retrieval,router 只能对空候选做假动作。
|
||
没有 replay,reward 和 trajectory 只是躺在磁盘上的 JSON 标本。
|
||
|
||
这一步之后,memabra 第一次拥有了最小闭环:
|
||
任务 -> 候选 -> 决策 -> 轨迹 -> 回放统计
|
||
|
||
## 当前局限
|
||
|
||
- retrieval 还是词面匹配,不是 embedding 或 learned ranking
|
||
- replay 只做汇总,不做 schema 校验和 counterfactual 对比
|
||
- 还没有把 router 与 retriever 真正串成 end-to-end runner
|
||
|
||
## 下一步
|
||
|
||
1. 加 `schemas.py` 做运行时校验
|
||
2. 做 `memory_store.py` 和 provider 接口
|
||
3. 做 `runner.py` 把 retrieval + router + telemetry 串起来
|
||
4. 给 replay 加基线比较和 reward breakdown 分析
|