Files
sanguo_moziplus_v2/docs/research/distill-full-design.md
T
2026-05-27 00:35:07 +08:00

742 lines
27 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.
# 对话历史蒸馏为四层知识体系 — 完整调研与设计文档
> 版本:v1.0
> 日期:2026-05-27
> 作者:诸葛亮(总军师)🎖️
> 状态:方案已确认,待执行改造
---
## 第一部分:问题定义
### 1.1 背景
三国量化团队运行两个月以来,庞统(副军师)和司马懿(质量总监)积累了大量对话历史:
| Agent | 数据量 | 文件数 |
|-------|--------|--------|
| 庞统 | 1.2 GB | 961 个 JSONL |
| 司马懿 | 751 MB | 410 个 JSONL |
| Sanguo Mail | 404 KB | 80 封邮件 |
| 各将军 MEMORY.md | ~19 KB | 3 个文件 |
**合计约 2 GB 对话历史。**
这些历史中包含丰富的实践经验——用户纠正、反复试错、成功模式、协作流程、决策分歧、经验声明。但经验只存在于 JSONL 文件中,session 结束就消失了。每次遇到类似问题,Agent 都在"重新发明轮子"。
**典型场景**
- 张飞修了 7 次类似的 bug,每次都是"重新发现"
- 庞统被纠正了 33 次"不要跳过 GATE 流程"
- 庞统被纠正了 17 次"不要绕圈子"
- 司马懿在评审中发现状态枚举不一致的 Bug 出现了 3+ 次
### 1.2 目标
从对话历史中批量蒸馏经验,填入 moziplus v2.0 已有的四层知识体系框架,让所有 Agent 能直接受益。
### 1.3 约束
1. **不新增架构**——用现有的四层框架(L0/L1/L2/L3
2. **不新增加载逻辑**——用现有的 guardrails.yaml、bootstrap.py、skill_system.py
3. **按层级归位**——每条经验去它该去的层
4. **Skill 存放位置**`~/.openclaw/sanguo_projects/sanguo_moziplus_v2/`(开发目录)
---
## 第二部分:现有体系诊断
### 2.1 moziplus v2.0 四层知识体系架构
> 来源:`docs/design/technical-design-v2.6.md` §5
```
L0 铁律层(~500 tokens)→ Hook 注入,每轮强制
L1 角色层(~2000 tokens)→ SOUL.md / IDENTITY.mdAgent 自带)
L2 引擎注入层(~1500 tokens)→ prompt_templates 按 role 拼装
① 操作规范(executor.md / reviewer.md / planner.md
② 项目背景(project_context.yaml
③ 任务上下文(黑板数据)
④ 前序信息(depends_on 产出摘要)
⑤ Guardrail 规则(guardrails.yaml,仅执行者)
⑥ 审查协议(review_protocols/,仅审查者)
⑦ 经验注入(experiences 表按 tag 匹配)
L3 被动参考层(按需加载)→ Skill description 四要素
```
### 2.2 各层当前状态
| 层 | 有什么 | 实际填充状态 |
|---|-------|------------|
| **L0 铁律** | `config/guardrails.yaml` — 6 条安全红线 | ✅ 已有:实盘拦截、删除拦截、配置变更拦截、token 超限、步骤超限、连续失败 |
| **L1 角色** | SOUL.md / IDENTITY.md | ✅ 已有:各 Agent 自带 |
| **L2 引擎注入** | `prompt_templates/` + `bootstrap.py` | ❌ **空的**`bootstrap.py` 按角色名加载 executor.md/reviewer.md/planner.md,但这 3 个文件从未创建 |
| **L3 Skill** | `skills/` + `skill_system.py` | ❌ **空的**`skill_system.py` 只认 .json 格式,从未注册任何 skill |
| **Memory** | experiences 表 | ❌ **未建表**`bootstrap.py` 已有 `_format_experiences()` 逻辑,但表不存在 |
**一句话诊断:四层架构的代码框架已写好,但 L2、L3、Memory 都是空壳。**
### 2.3 代码中的加载机制
#### L0 — guardrail.py
```python
# 读取 config/guardrails.yaml
# 在 Guardrail check 环节执行
# 当前只有 rules(安全红线),没有 behavior_rules
```
#### L2 — bootstrap.py
```python
class BootstrapBuilder:
def build(self, role, task_context, ...):
# L2a: 操作规范 — 按 role 加载 {role}.md
role_template = self._load_template(f"{role}.md") # ← 文件不存在,返回 None
# L2e: Guardrail 规则(仅执行者)
if role == "executor" and guardrail_rules:
layers.append(guardrail_rules)
# L2g: 经验注入
if experiences:
layers.append(self._format_experiences(experiences)) # ← 表不存在,无数据
# L3: Skill descriptions
if skill_descriptions:
layers.append(self._format_skills(skill_descriptions)) # ← registry 空,无数据
```
#### L3 — skill_system.py
```python
class SkillRegistry:
def _load_from_dir(self, dir_path: Path) -> None:
# 只加载 .json 文件
for f in dir_path.glob("*.json"):
data = json.loads(f.read_text())
skill = Skill.from_dict(data)
self._skills[skill.id] = skill
# ← skills/ 目录为空,没有任何 .json
```
---
## 第三部分:方法论调研
### 3.1 业界 Skill 蒸馏方法论
> 调研时间:2026-05-26
#### 方法 1Hermes 自改进循环 + Curator
> 来源:Hermes Agent v0.12-v0.14Nous Research
**核心思路**:Agent 每完成复杂任务后自动保存 Skill,后台 Curator 定期评分/合并/修剪。
| 机制 | 做法 |
|------|------|
| **自动保存** | 复杂任务(5+ tool calls)完成后自动创建 SKILL.md |
| **使用中改进** | 使用 Skill 时发现过时立即 patch |
| **Curator** | 后台 Agent 7 天周期评分(使用频率 + 成功率),评分低的合并或淘汰 |
| **三级载体** | MemoryMEMORY.md)→ SkillSKILL.md)→ Ruleprompt injection |
**我们借鉴的**
- 三级载体思路(Memory → Skill → Rule)→ 对应我们的 Memory → L3 Skill → L0 铁律
- Curator 的淘汰机制(30 天无引用 → deprecated
- 使用频率作为进化驱动力
#### 方法 2Trace2Skill — 并行子 Agent 分析轨迹池
> 来源:arXiv 2603.251582026-03
**核心思路**dispatch 一组子 Agent 并行分析多条 trajectory,提取局部经验,再归纳合并为统一 Skill。
| 步骤 | 说明 |
|------|------|
| 1. 聚类 | 按任务类型分类 trajectory |
| 2. 并行提取 | 子 Agent 独立提取每条的经验教训 |
| 3. 归纳合并 | 层级归纳,合并为无冲突 Skill 目录 |
**我们借鉴的**
- 按"扫描模式"分类(对应他们的按任务类型聚类)
- 并行 sub-agent 提取经验卡片(对应他们的并行子 Agent)
- 合并去重(对应他们的归纳合并)
#### 方法 3SkillRL — 成功/失败双向蒸馏
> 来源:github.com/aiming-lab/SkillRL
**核心思路**
- 成功轨迹 → 战略模式("怎么做对的")
- 失败轨迹 → 简明教训("千万别这样")
**我们借鉴的**
- 6 种扫描模式中的①纠正(失败教训)和③成功(成功模式)就是双向蒸馏
#### 方法 4SoK: Agentic Skills — 技能习得分类
> 来源:arXiv 2602.208672026-02
**核心分类**
- Demonstration distillation — 从观测轨迹中提取可复用流程
- Trial-and-error — 从失败中学习
- Instruction — 从明确指令中学习
**我们借鉴的**
- 我们的 6 种扫描模式直接对应:①纠正=Instruction、②试错=Trial-and-error、③成功=Demonstration
#### 方法 5Nevo — 三级 scope
> 来源:nevo.systems(生产 Agent 系统)
**三级 scope**
- user-level — 用户偏好
- project-level — 项目特定
- generated — 自动生成
**我们借鉴的**
- 对应我们的三层适用范围:L0 全局 > L2 角色级 > L3 按需
### 3.2 我们已有的知识管理方法论
> 来源:wiki-vault `practices/knowledge-management-system`
#### 四层金字塔
```
L0 记忆层(MEMORY.md)→ L1 经验层 → L2 知识层(wiki) → L3 体系层(设计文档)
```
#### 五路径增长
| 路径 | 说明 |
|------|------|
| 调研驱动 | 从外部项目学习 |
| 问题驱动 | 从 bug/纠正中学习 |
| 外部注入 | 从用户指导中学习 |
| 反向触发 | 从失败中学习 |
| 交叉碰撞 | 从多 Agent 交互中学习 |
**与我们的映射**
- 调研驱动 → ③ 成功模式(从别人的成功学习)
- 问题驱动 → ① 纠正模式(从被纠正中学习)
- 外部注入 → ⑤ 决策分歧(从用户指导中学习)
- 反向触发 → ② 试错模式(从失败中学习)
- 交叉碰撞 → ④ 协作模式(从 Agent 交互中学习)
### 3.3 moziplus v2.0 课题6 — 经验沉淀闭环
> 来源:`docs/design/topic6-experience-loop-proposal.md`
#### 三种载体
| 载体 | 内容 | 生命周期 | 对应层 |
|------|------|---------|-------|
| **Rule(规则)** | 确定性的操作规范 | 长期稳定 | L0 |
| **Skill(技能)** | 半确定性的操作方法 | 中期演进 | L3 |
| **Memory(记忆)** | 非确定性的经验片段 | 短期,可蒸馏 | experiences 表 |
#### 进化路径
```
Memory(发现)→ Skill(方法)→ Rule(铁律)
↓ 蒸馏 ↓ 固化 ↓ 强制
非确定性 半确定性 确定性
短命 中等 长命
```
#### 两级蒸馏
| 级别 | 触发 | 执行者 |
|------|------|--------|
| 一级蒸馏 | 每个任务完成后 | 庞统(~30s 提取 1-3 条经验写入 experiences 表) |
| 二级蒸馏 | 同类 experience ≥ 5 条 | 庞统(subagent 模式,生成 SKILL.md |
---
## 第四部分:6 种扫描模式设计
### 4.1 设计推导
从三种来源推导出 6 种模式:
**来源 1:业界研究**
- SoK: Agentic Skills 的三种习得方式(Demonstration / Trial / Instruction
- AgenTracer 的反事实归因(定位关键错误步骤)
- SkillRL 的成功/失败双向蒸馏
**来源 2:三国团队实践**
- Sanguo Mail 中的协作记录(独特的多 Agent 交互)
- 决策分歧中 Agent "不知道该不该动手"的场景(不是犯错,是犹豫)
- Agent 自发的经验声明("以后应该 XX")常被遗忘
**来源 3:数据探索**
- 抽样 JSONL 文件观察实际对话模式
- 庞统被纠正最多的场景(GATE 流程、绕圈子)
- 司马懿作为评审者的独特视角(设计-代码不一致、状态枚举 Bug)
### 4.2 六种模式定义
| # | 模式 | 信号特征 | 蒸馏价值 | 理论来源 |
|---|------|---------|---------|---------|
| ① 纠正模式 | 用户消息含"不对/错了/不要/停/我说的不是" | ⭐⭐⭐ 最高 | SoKInstruction)、Hermes self-improvement |
| ② 试错模式 | 同一任务 3+ 次连续 tool call 失败后成功 | ⭐⭐⭐ | AgenTracer(反事实归因)、SkillRL(失败教训蒸馏) |
| ③ 成功模式 | 复杂任务(5+ tool calls)一次成功 | ⭐⭐ | Hermes5+ tool calls 自动保存 skill)、SoKDemonstration |
| ④ 协作模式 | Sanguo Mail 往来、agent 间 send_message | ⭐⭐ | 三国团队实践(多 Agent 交互记录) |
| ⑤ 决策分歧模式 | 用户说"先不要/方案/等等/确认"后 Agent 调整方向 | ⭐⭐ | 三国团队实践(Agent 学会"什么时候该问不该做" |
| ⑥ 经验声明模式 | Agent 自发总结"以后应该XX/这个方法好" | ⭐⭐ | 三国团队实践(Agent 自己的经验判断,常被遗忘) |
### 4.3 信号词定义
```python
# ① 纠正模式
CORRECTION_SIGNALS = [
"不对", "错了", "不要", "", "我说的不是", "不是这个意思",
"重新来", "别这样", "不要这样", "你再看看",
"no", "wrong", "stop", "not what I meant", "redo"
]
# ② 试错模式:同一任务 3+ 次 tool_result 含错误信息后成功
# ③ 成功模式:5+ tool_use 且最终用户满意(无纠正信号)
# ④ 协作模式:send_message / Sanguo Mail 引用
# ⑤ 决策分歧模式
DECISION_SIGNALS = ["先不要", "方案", "等等", "确认", "等等看", "再说", "先看看", "确认一下"]
# ⑥ 经验声明模式
EXPERIENCE_SIGNALS = ["以后应该", "这个方法好", "经验是", "教训是", "下次注意", "注意要", "记住", "千万不要"]
```
---
## 第五部分:数据扫描结果
### 5.1 扫描统计
> 扫描脚本:`docs/research/distill-scan-pangtong.py` 和 `distill-scan-simayi.py`
> 扫描时间:2026-05-26
| 数据源 | 文件数 | 总消息数 | 经验片段数 |
|--------|--------|---------|-----------|
| 庞统 JSONL | 351 | 24,643 | 2,241 |
| 司马懿 JSONL | 127 | 3,859 | 911 |
| Sanguo Mail | 80 封 | — | 79 |
| MEMORY.md | 3 个 | — | 3 |
| **合计** | — | **28,502** | **3,234** |
### 5.2 各模式片段分布
| 模式 | 庞统 | 司马懿 | 邮件 | 合计 |
|------|------|--------|------|------|
| ① 纠正 | 469 | 122 | 8 | **591** |
| ② 试错 | 200 | 26 | — | **226** |
| ③ 成功 | 158 | 42 | — | **200** |
| ④ 协作 | 735 | 138 | 79 | **952** |
| ⑤ 决策分歧 | 658 | 583 | — | **1,241** |
| ⑥ 经验声明 | 21 | 0 | — | **21** |
### 5.3 数据格式说明
OpenClaw JSONL v3 格式,每行一个 JSON 对象:
```json
{"type": "session", "id": "xxx", "timestamp": "...", "cwd": "..."}
{"type": "model_change", "provider": "zhipu", "modelId": "glm-5.1"}
{"type": "message", "message": {"role": "user/assistant", "content": [
{"type": "text", "text": "..."},
{"type": "tool_use", "name": "...", "input": {...}},
{"type": "tool_result", "content": "..."}
]}}
```
---
## 第六部分:LLM 归纳结果
### 6.1 归纳方法
采用 Trace2Skill 的并行子 Agent 方法:
- 按"扫描模式"分批(对应 Trace2Skill 的按任务类型聚类)
- 每批 sub-agent 独立归纳(对应他们的并行子 Agent)
- 交叉去重合并
### 6.2 归纳批次与产出
> 并发限制:主公要求 ≤ 2
| 批次 | 输入 | 模式 | 产出 |
|------|------|------|------|
| 1 | 庞统纠正 top 100 | ① | 14 张经验卡片 |
| 2 | 司马懿纠正 122 + 庞统经验 21 + 邮件 8 | ①⑥④ | 15 张经验卡片 |
| 3 | 庞统+司马懿成功 top 50 | ③ | 9 个最佳实践模式 |
| 4 | 评审经验+经验声明 | ①⑥ | 4+3=7 个模式 |
| 5 | 协作经验 | ④ | 119 条 Memory(直接存表) |
### 6.3 核心发现
#### 纠正模式 Top 5(按频率)
| 排名 | 纠正类型 | 频率 | 严重度 |
|------|---------|------|--------|
| 1 | GATE 流程违规(跳过确认/查因/评估) | 33 次 | high |
| 2 | 绕圈子/不聚焦(反复讨论已确认的前提) | 17+3=20 次 | high |
| 3 | 先确认再改(不确认设计意图就动手) | 6 次 | medium |
| 4 | 被动跟随/丢失原始需求 | 4 次 | high(单次影响最严重) |
| 5 | 未经确认改代码(bug 没查清就动手) | 4 次 | high |
#### 试错模式核心教训
| 教训 | 频率 | 根因 |
|------|------|------|
| Counter/锁生命周期不成对 | 3+ 次 | retry 提前释放 counter → 并发失控 |
| 续杯 retry 死循环 | 5+ 次 | retry_count 不递增 + 模板含状态转换指令 |
| 进程退出 ≠ 资源释放 | 2 次 | on_complete 未调用 → counter 泄漏 |
| 广播路径缺参数 | 3+ 次 | 广播 spawn 不传 task_id → 续杯无状态 |
| stdout JSON 解析路径错误 | 2 次 | 猜路径而非实测 → 静默失败 |
#### 评审模式核心经验
| 经验 | 来源 |
|------|------|
| 评审闭环必须包含最终代码确认(不只是方案) | 庞统 M2 阶段,一键三连未闭环 |
| 状态枚举不一致是高频 Bug 根源 | P0-1/P0-2`executing` vs `working` |
| 设计文档-代码三层对照不可省 | spawner-monitor B2 实现遗漏 |
| 评审者自我纠正 = 高质量标志 | 庞统和司马懿在评审中互相纠正 |
---
## 第七部分:组织方式演进
### 7.1 第一次组织(v1 — 按能力领域)
将 29 张经验卡片按"能力领域"分组为 5 个 Skill
| Skill | 条目 |
|-------|------|
| agent-execution-discipline | 7 |
| code-review-quality | 6 |
| system-design-lessons | 7 |
| agent-collaboration-patterns | 5 |
| frontend-design-ai-native | 2 |
**问题**(主公指出):
1. 与 6 种扫描模式对不上——Agent 不知道"我被纠正了"该加载哪个 Skill
2. 经验层次不清晰——高频铁律和低频记忆混在一起
3. 没有复用 moziplus v2.0 的四层金字塔架构
### 7.2 第二次组织(v2 — 按扫描模式 × 四层金字塔)
**核心改变**
1. **扫描模式作为分类骨架**——经验从哪来,就按哪分类
2. **四层金字塔作为目标层级**——每条经验按确定性和频率决定去哪层
3. **进化路径**Memory → Skill → Rule
**筛选标准**
| 层 | 频率要求 | 确定性要求 | 来源模式 |
|----|---------|-----------|---------|
| L0 铁律 | ≥ 20 次 | 必须明确("必须/禁止") | ① 纠正(高频) |
| L2 模板 | 5-19 次 | 有触发场景("当 X 时,先 Y" | ①⑤ 纠正+决策分歧 |
| L3 Skill | 不限 | 可复用流程 | ②③⑥ 试错+成功+经验声明 |
| Memory | 不限 | 不限 | ④ 协作(低频非通用) |
**最终映射**
| 扫描模式 | → L0 | → L2 | → L3 | → Memory |
|---------|------|------|------|----------|
| ① 纠正(591) | 2 条铁律 | 1 个模板 | 1 个 Skill | — |
| ② 试错(226 | — | — | 1 个 Skill | — |
| ③ 成功(200 | — | — | 1 个 Skill | — |
| ④ 协作(873) | — | 2 个模板 | — | 119 条 |
| ⑤ 决策分歧(1241) | — | 1 个模板 | — | — |
| ⑥ 经验声明(21 | — | — | 1 个 Skill | — |
---
## 第八部分:整合改造方案
### 8.1 改造原则
1. **不新增目录**——用现有的 `config/``prompt_templates/``skills/`
2. **不新增加载逻辑**——用现有的 `guardrails.yaml``bootstrap.py``skill_system.py`
3. **按层级归位**——每条经验去它该去的层
4. **清理孤儿文件**——蒸馏过程中产生的孤立文件合并后删除
### 8.2 改造清单
#### 改造 1:扩充 guardrails.yamlL0
**现状**`config/guardrails.yaml` 有 6 条安全红线(实盘拦截、删除拦截、配置变更、token 超限、步骤超限、连续失败)
**改动**:新增 `behavior_rules` 区,与 `rules` 并列
```yaml
# config/guardrails.yaml
# 原有安全红线(不变)
rules:
- id: live_trading
...
- id: consecutive_failure
...
# 新增:行为铁律(从 33+20 次纠正中提炼)
behavior_rules:
- id: gate_flow
name: GATE 流程门控
severity: high
frequency: 33
trigger: "非平凡任务启动时"
rule: |
需求不清不动手 — 列出假设让用户确认
根因不明不修复 — 先查清再改
方案未定不实现 — 先出方案等确认
评估过影响范围才动手
L1 小改动(<50行,做错代价低)可跳过
- id: no_circle
name: 不绕圈子
severity: high
frequency: 20
trigger: "用户已明确方向后"
rule: |
用户已明确方向后,不再质疑前提
用户给出条件假设时,按最坏情况设计
用户说"别绕了"= 立刻停止,直接给方案
```
**代码改动**`guardrail.py` 读取 `behavior_rules` 并注入 L0 Hook
**清理**:删除 `guardrails/` 目录(孤儿文件)
#### 改造 2:补全 prompt_templates/L2
**现状**`prompt_templates/` 目录为空(`bootstrap.py` 按角色名加载 executor.md/reviewer.md/planner.md,但这 3 个文件从未创建)
**改动**:创建 5 个角色模板,将蒸馏经验合并进对应角色
```
prompt_templates/
├── executor.md # 执行者:含设计确认检查 + 角色匹配自检
├── reviewer.md # 审查者:含评审闭环标准 + 枚举一致性检查
├── planner.md # 规划者:含调研落地映射 + 方案确认闭环
├── pangtong.md # 庞统:含一键三连闭环标准 + 经验沉淀流程
└── mail-handler.md # 邮件处理:含 inform 轻量处理规则
```
**加载方式**`bootstrap.py` 已有 `_load_template(f"{role}.md")` 逻辑,只要文件名对应即可自动加载,不需要改代码。
**清理**:删除 `prompt_templates/design-confirmation.md``role-match-check.md``inform-lightweight.md`(内容已合并进角色模板)
#### 改造 3skill_system.py 支持 .mdL3
**现状**`skill_system.py` 只加载 `.json` 格式的 skill 定义,`skills/` 目录为空
**改动**:修改 `_load_from_dir()` 增加 .md frontmatter 解析
```python
def _load_from_dir(self, dir_path: Path) -> None:
# 原有 .json 加载(不变)
for f in dir_path.glob("*.json"):
...
# 新增:.md frontmatter 加载
for f in dir_path.glob("*.md"):
try:
skill = self._parse_skill_md(f)
if skill:
self._skills[skill.id] = skill
except Exception:
logger.warning("Failed to load skill from %s", f)
def _parse_skill_md(self, path: Path) -> Optional[Skill]:
"""从 SKILL.md frontmatter 解析 Skill 描述"""
content = path.read_text(encoding="utf-8")
if content.startswith("---"):
_, fm, _ = content.split("---", 2)
meta = yaml.safe_load(fm)
return Skill(
id=meta.get("name", path.stem),
name=meta.get("name", path.stem),
description=meta.get("description", ""),
freedom=SkillFreedom.HIGH.value,
tags=meta.get("tags", []),
)
return None
```
**蒸馏 Skill 文件**(保留):
```
skills/
├── trial-and-error-patterns.md # 6 个试错模式
├── proven-practices.md # 9 个成功最佳实践
├── review-quality.md # 4 个评审质量模式
└── self-reflection-wisdom.md # 3 个自我反思模式
```
#### 改造 4:创建 experiences 表(Memory
**现状**`bootstrap.py` 已有 `_format_experiences()` 逻辑,但 experiences 表不存在
**改动**:建表 + 导入 119 条协作经验
```sql
-- 课题6 D6-7 设计的表结构
CREATE TABLE experiences (
experience_id TEXT PRIMARY KEY,
source TEXT NOT NULL,
category TEXT NOT NULL,
summary TEXT NOT NULL (200),
confidence REAL DEFAULT 0.5,
status TEXT DEFAULT 'draft',
created_at TEXT NOT NULL,
created_by TEXT NOT NULL,
...
);
CREATE TABLE experience_tags (
experience_id TEXT NOT NULL REFERENCES experiences(experience_id),
tag TEXT NOT NULL,
PRIMARY KEY (experience_id, tag)
);
```
**导入**:将 `distill-experiences-collaboration.json`119 条)导入表
### 8.3 改造后的完整四层架构
```
L0 铁律层(~600 tokens)→ Hook 注入,每轮强制
├── config/guardrails.yaml → rules(安全红线 6 条)
└── config/guardrails.yaml → behavior_rules(行为铁律 2 条)← 新增
L1 角色层(~2000 tokens)→ Agent 自带(不变)
└── SOUL.md / IDENTITY.md / TOOLS.md / MEMORY.md
L2 引擎注入层(~1500 tokens)→ prompt_templates 按 role 拼装
① 操作规范(executor/reviewer/planner/pangtong/mail-handler.md)← 新增 5 个角色模板
② 项目背景(project_context.yaml
③ 任务上下文(黑板数据)
④ 前序信息(depends_on 产出摘要)
⑤ Guardrail 规则(安全红线 + 行为铁律)
⑥ 审查协议(review_protocols/
⑦ 经验注入(experiences 表按 tag 匹配)← 新建表 + 119 条数据
L3 被动参考层(按需加载)
└── skills/*.md → frontmatter 自动解析 → 4 个蒸馏 Skill ← 新增 .md 支持
```
---
## 第九部分:与现有设计的对齐
### 9.1 与技术设计 v2.6 对齐
| 技术设计 v2.6 章节 | 本次改造 |
|------------------|---------|
| §5 四层上下文 | L0 补行为铁律、L2 补角色模板、L3 补 Skill |
| §5 build_bootstrap() | 不改代码,补文件(角色模板) |
| §6 Guardrail | 扩充 guardrails.yamlbehavior_rules |
| §8 Skill System | 扩充 _load_from_dir 支持 .md |
### 9.2 与课题6 经验闭环对齐
| 课题6 阶段 | 本次完成 |
|-----------|---------|
| DISCOVER | ✅ 6 种模式扫描完成(3,234 个片段) |
| 一级蒸馏(Memory) | ✅ 119 条协作经验待导入 experiences 表 |
| 二级蒸馏(Skill | ✅ 4 个 L3 Skill 已生成 |
| 固化(Rule) | ✅ 2 条行为铁律 + 3 个场景模板 |
| 验证(Verify) | ⏳ 待实际使用后验证采纳率 |
### 9.3 与 wiki-vault 知识管理对齐
| wiki-vault 五路径 | 对应扫描模式 |
|------------------|-------------|
| 调研驱动 | ③ 成功模式 |
| 问题驱动 | ① 纠正模式 |
| 外部注入 | ⑤ 决策分歧 |
| 反向触发 | ② 试错模式 |
| 交叉碰撞 | ④ 协作模式 |
---
## 第十部分:过程文件索引
### 10.1 调研方案
| 文件 | 说明 |
|------|------|
| `docs/research/trajectory-distillation-research.md` | 调研方案 v1(初始设计) |
| `docs/research/distill-reorg-v2.md` | 重组方案 v2(扫描模式 × 四层金字塔) |
| `docs/research/distill-integration-plan.md` | 整合改造方案(本方案的早期版本) |
### 10.2 扫描数据
| 文件 | 说明 |
|------|------|
| `docs/research/distill-scan-pangtong.py` | 庞统扫描脚本 |
| `docs/research/distill-scan-simayi.py` | 司马懿扫描脚本 |
| `docs/research/distill-scan-pangtong-result.json` | 庞统扫描结果(2,241 片段) |
| `docs/research/distill-scan-simayi-result.json` | 司马懿扫描结果(911 片段) |
| `docs/research/distill-scan-mail-result.json` | 邮件扫描结果(79 条) |
| `docs/research/distill-scan-memory-result.json` | MEMORY.md 提取 |
### 10.3 归纳卡片
| 文件 | 说明 |
|------|------|
| `docs/research/distill-cards-batch1-corrections.md` | v1 庞统纠正 14 张卡片 |
| `docs/research/distill-cards-batch2-simayi-mixed.md` | v1 司马懿+经验 15 张卡片 |
### 10.4 最终产出(按四层金字塔)
| 文件 | 层 | 说明 |
|------|---|------|
| `config/guardrails.yaml` (behavior_rules) | L0 | 2 条行为铁律(待合并) |
| `prompt_templates/*.md` | L2 | 5 个角色模板(待创建) |
| `skills/*.md` | L3 | 4 个蒸馏 Skill(待注册) |
| `docs/research/distill-experiences-collaboration.json` | Memory | 119 条协作经验(待导入表) |
### 10.5 汇总
| 文件 | 说明 |
|------|------|
| `docs/research/distill-skills-v2/README.md` | v2 最终汇总 |
| `docs/research/distill-skills-draft/` | v1 初稿(已被 v2 替代,保留参考) |
---
## 第十一部分:执行计划
| # | 步骤 | 改动范围 | 工作量 | 优先级 |
|---|------|---------|--------|--------|
| 1 | 合并 guardrails.yaml | `config/guardrails.yaml` + `guardrail.py` | 小 | P0 |
| 2 | 创建 5 个角色模板 | `prompt_templates/` 5 个文件 | 中 | P0 |
| 3 | 修改 skill_system.py | `skill_system.py` + 依赖 | 小 | P1 |
| 4 | 创建 experiences 表 | 黑板数据库 + 导入 | 中 | P1 |
| 5 | 清理孤儿文件 | 删除 guardrails/ 目录等 | 小 | P2 |
| 6 | 更新技术设计文档 | `technical-design-v2.6.md` | 小 | P2 |
**预估总工作量**1-2 天
---
## 附录:参考来源
### 学术论文
- Trace2Skill (arXiv 2603.25158) — 并行子 Agent 轨迹蒸馏
- SoK: Agentic Skills (arXiv 2602.20867) — Agent 技能分类学
- SkillRL (github.com/aiming-lab/SkillRL) — 成功/失败双向蒸馏
- AgenTracer (arXiv 2509.03312) — 反事实归因定位关键错误
### 开源项目
- Hermes Agent v0.12-v0.14 (Nous Research) — 自改进循环 + Curator
- Nevo (nevo.systems) — 三级 scope 的生产 Agent 系统
### 内部文档
- `docs/design/technical-design-v2.6.md` — moziplus v2.0 技术设计
- `docs/design/topic6-experience-loop-proposal.md` — 经验沉淀闭环设计
- `docs/research/shared-consciousness-research.md` — 共享意识空间调研
- wiki-vault `practices/agent-skill-design-methodology.md` — Skill 设计方法论
- wiki-vault `practices/knowledge-management-system.md` — 知识管理体系