174 lines
7.3 KiB
Markdown
174 lines
7.3 KiB
Markdown
# 调研专题:对话历史蒸馏为 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)一次成功 | ⭐⭐ | Hermes(5+ 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 体系建立后落地。
|