Files
sanguo_moziplus_v2/docs/research/trajectory-distillation-research.md
T
2026-05-26 23:21:11 +08:00

174 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 调研专题:对话历史蒸馏为 Skill
> 日期:2026-05-26
> 状态:方案已确认,待执行
> 发起人:主公
> 执行人:诸葛亮(调度)+ 庞统/司马懿(数据源)
---
## 1. 背景
庞统和司马懿积累了大量对话历史(共 ~2GB JSONL),其中包含丰富的实践经验——用户纠正、反复试错、成功模式、协作流程等。这些经验目前只埋在历史对话里,每次遇到类似问题还要重新沟通、重新纠正。
**目标**:从历史对话中批量蒸馏经验,形成结构化 Skill,供所有将军直接使用。
**Skill 存放位置**`~/.openclaw/sanguo_projects/sanguo_moziplus_v2/skills/`(开发目录,部署位置待定)
---
## 2. 数据源全貌
| 数据源 | 位置 | 规模 | 价值 |
|--------|------|------|------|
| 庞统 JSONL | `~/.openclaw/agents/pangtong-fujunshi/sessions/` | 961 文件, 1.2G | ⭐⭐⭐ 最丰富,含完整 tool 调用链 |
| 司马懿 JSONL | `~/.openclaw/agents/simayi-challenger/sessions/` | 410 文件, 751M | ⭐⭐⭐ 代码评审经验 |
| Sanguo Mail | `~/.sanguo_projects/sanguo_mail/mail/` | 80 封邮件, 404K | ⭐⭐ 协作流程和决策记录 |
| 各将军 MEMORY.md | `workspace-*/MEMORY.md` | 庞统 ~80 行, 司马懿 ~30 行 | ⭐⭐ 已沉淀的经验(可直接用) |
| 诸葛亮 MEMORY.md | `~/.openclaw/workspace/MEMORY.md` | ~150 行 | ⭐⭐ 全局经验 |
**合计**:约 2GB JSONL + 80 封邮件 + 若干 MEMORY/notes
### JSONL 数据格式说明
OpenClaw 的 JSONL 格式(v3):
```json
// 每行一个 JSON 对象,type 字段区分
{"type": "session", "id": "...", "timestamp": "...", "cwd": "..."} // 会话开始
{"type": "model_change", "provider": "zhipu", "modelId": "glm-5.1"} // 模型信息
{"type": "message", "message": {"role": "user/assistant", "content": [...]}} // 消息
```
消息内容(`message.content`)为数组,每项:
- `{"type": "text", "text": "..."}` — 文本
- `{"type": "tool_use", "name": "...", "input": {...}}` — 工具调用
- `{"type": "tool_result", "content": "..."}` — 工具返回
另有 trajectory JSONL(含 `traceSchema: openclaw-trajectory`),格式略有不同但同样包含完整的消息流。
---
## 3. 扫描模式(6 种)
来自业界研究 + 三国团队实践整合:
| # | 模式 | 信号特征 | 蒸馏价值 | 理论来源 |
|---|------|---------|---------|---------|
| ① | **纠正模式** | 用户消息含"不对/错了/不要/停/我说的不是" | ⭐⭐⭐ 最高 | Trace2Skill(失败轨迹分析)、Hermes self-improvement |
| ② | **反复试错模式** | 同一任务 3+ 次连续 tool call 失败后成功 | ⭐⭐⭐ | AgenTracer(反事实归因)、SkillRL(失败教训蒸馏) |
| ③ | **成功模式** | 复杂任务(5+ tool calls)一次成功 | ⭐⭐ | Hermes5+ tool calls 自动保存 skill |
| ④ | **协作模式** | Sanguo Mail 往来、agent 间 send_message | ⭐⭐ | 三国团队实践 |
| ⑤ | **决策分歧模式** | 用户说"先不要"/"方案"/"等等"后 Agent 调整方向 | ⭐⭐ | 三国团队实践——Agent 学会"什么时候该问不该做" |
| ⑥ | **经验声明模式** | Agent 自发总结"以后应该XX"/"这个方法好" | ⭐⭐ | 三国团队实践——Agent 自己的经验判断,常被遗忘 |
### 理论参考
| 论文/项目 | 核心思路 | 我们的借鉴点 |
|-----------|---------|-------------|
| **Trace2Skill** (2603.25158) | 并行子 Agent 分析多条 trajectory,提取局部经验,归纳合并为统一 Skill | 批量处理 + 归纳合并的思路 |
| **Hermes Curator** (v0.12) | 后台 Agent 定期评分/合并/修剪 Skill 库(7 天周期) | 长期维护机制 |
| **SkillRL** (aiming-lab) | 成功轨迹→战略模式,失败轨迹→简明教训 | 双向蒸馏(成功+失败) |
| **AgenTracer** (2509.03312) | 反事实回放定位失败轨迹中的关键错误步骤 | 精确归因"错在哪" |
| **Hermes self-improvement** | 复杂任务(5+ tool calls)后自动保存 Skill | 触发阈值设计 |
---
## 4. 提炼流程(5 步)
### Step 1: 分类扫描
**输入**:所有 JSONL 文件 + Sanguo Mail + MEMORY.md
**方法**:Python 脚本遍历,按 6 种模式的关键词和结构特征标记片段
**产出**:带标签的片段索引
```python
# 纠正模式信号词
CORRECTION_SIGNALS = [
"不对", "错了", "不要", "", "我说的不是", "不是这个意思",
"重新来", "重来", "别这样", "不要这样", "你再看看",
"no", "wrong", "stop", "not what I meant", "redo"
]
# 试错模式:连续 3+ 次 tool_result 含错误信息
# 成功模式:5+ tool_use 且最终用户满意(无纠正信号)
# 协作模式:send_message / Sanguo Mail 引用
# 决策分歧:用户消息含"先不要"/"方案"/"等等"/"确认"
# 经验声明:Agent 消息含"以后"/"应该"/"建议"/"经验"
```
### Step 2: 片段提取
**输入**:片段索引
**方法**:按标签提取上下文窗口(纠正/试错前后各 5 轮对话)
**产出**:候选经验片段集合(预计几百条)
### Step 3: LLM 归纳(sub-agent 并行)
**输入**:按模式分组的片段集合
**方法**:每个 sub-agent 处理一批同类片段,输出经验卡片
**产出**:经验卡片(格式如下)
```yaml
# 经验卡片格式
场景: "什么情况下遇到"
做法: "正确的处理方式"
关键细节: "容易踩的坑"
反面教训: "错误做法及后果"
来源: "agent名/session-id/行号"
置信度: "high/medium/low"
```
### Step 4: 合并去重 → Skill 初稿
**输入**:经验卡片集合
**方法**:同类卡片合并为 Skill 文件,遵循 SKILL.md 标准结构
**产出**:若干 SKILL.md 初稿
### Step 5: 主公审阅
**输入**Skill 初稿
**方法**:展示给主公,确认/修改后放入 `~/.openclaw/sanguo_projects/sanguo_moziplus_v2/skills/`
**产出**:正式 Skill 文件
---
## 5. 预期产出 Skill
| Skill | 主要来源模式 | 说明 |
|-------|------------|------|
| `mozi-task-creation-guide` | ①② | 创建 mozi 任务时的避坑指南 |
| `code-review-checklist` | ③④ | 司马懿的评审模式总结 |
| `agent-collaboration-patterns` | ④⑤ | 将军间协作最佳实践 |
| `requirement-clarification-patterns` | ⑤ | 什么时候该问、怎么问 |
| `error-recovery-patterns` | ② | 常见错误和恢复方式 |
| `coding-anti-patterns` | ① | 编码中常犯的错误 |
> 以上为预判,实际产出取决于扫描结果。
---
## 6. 执行计划
| 阶段 | 内容 | 负责人 | 状态 |
|------|------|--------|------|
| 调研 | 本文档 | 诸葛亮 | ✅ 完成 |
| Step 1 | 编写扫描脚本 + 运行 | 诸葛亮 → sub-agent | ⏳ 待执行 |
| Step 2 | 片段提取 | sub-agent | ⏳ 待执行 |
| Step 3 | LLM 归纳 | sub-agent(并行) | ⏳ 待执行 |
| Step 4 | 合并为 Skill 初稿 | 诸葛亮 | ⏳ 待执行 |
| Step 5 | 主公审阅 | 主公 | ⏳ 待执行 |
| Step 5 | 主公审阅 | 主公 | ⏳ 待执行 |
---
## 7. 长期机制(Curator
蒸馏完成后,需要建立持续改进机制(参考 Hermes Curator):
- **触发条件**:每次复杂任务完成后,Agent 自动判断是否值得保存
- **周期清理**:定期检查 Skill 使用频率,淘汰僵尸 Skill
- **使用中改进**:使用 Skill 时发现过时立即 patch
这部分待 Skill 体系建立后落地。