<!-- @when: 需要管理自动化测试经验库，或了解经验检索/保存/融合机制时 -->

# 经验驱动优化闭环

MCP resource URI: `delphi://automation/experience-loop`。

通过 `experience` 工具的检索/保存/合并能力，AI 持续从历史测试中学习。

## G1. 优化循环

```
┌─ ① 检索经验 ──────────────────┐
│ 每次测试前搜索历史经验（top_k=3）│
└──────────────┬─────────────────┘
               ↓
┌─ ② 规划测试 ──────────────────┐
│ 参考成功模式，避免历史失败模式    │
└──────────────┬─────────────────┘
               ↓
┌─ ③ 执行测试 ──────────────────┐
│ 遇到失败 → 恢复模板 → 记录学习  │
└──────────────┬─────────────────┘
               ↓
┌─ ④ 保存经验 ──────────────────┐
│ experience(action="save", ...) │
│ 自动去重：相似度>0.85 合并      │
└──────────────┬─────────────────┘
               ↓
┌─ ⑤ 定期融合 ──────────────────┐
│ merge 同类经验 → prune 低价值  │
└──────────────┬─────────────────┘
               ↓
              回到①
```

**关键收益：**
- 同样的错误不会犯第二次
- 成功工具组合在同类场景复用
- 多方经验汇聚为团队知识
- 过期经验自动淘汰

## G2. 经验检索策略

| 场景 | 推荐 query |
|------|-----------|
| 新用例规划 | "{应用名} {功能模块} 自动化测试" |
| 执行失败恢复 | "{应用名} {失败操作} 失败恢复" |
| 特定控件操作 | "{控件类型} {操作}" |
| 弹窗处理 | "{弹窗标题} {应用名}" |

**流程：** 精确查询（top_k=3）→ 结果<2 则放宽 query → 仍<2 用默认策略

## G3. 经验融合

当同类经验积累到 5+ 条或同一失败模式出现 3+ 次时融合：

1. `experience(search, query="{场景大类}", top_k=20)`
2. `experience(merge, ids=[...], keep="最完整记录")`
3. `experience(update, id="merged", ...)` 更新为抽象做法

**抽象原则：** 不保存具体操作细节，保存通用模式。tags 覆盖各细分场景。