auto-sync: 2026-05-27 00:35:07
This commit is contained in:
@@ -0,0 +1,741 @@
|
||||
# 对话历史蒸馏为四层知识体系 — 完整调研与设计文档
|
||||
|
||||
> 版本: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.md(Agent 自带)
|
||||
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
|
||||
|
||||
#### 方法 1:Hermes 自改进循环 + Curator
|
||||
|
||||
> 来源:Hermes Agent v0.12-v0.14(Nous Research)
|
||||
|
||||
**核心思路**:Agent 每完成复杂任务后自动保存 Skill,后台 Curator 定期评分/合并/修剪。
|
||||
|
||||
| 机制 | 做法 |
|
||||
|------|------|
|
||||
| **自动保存** | 复杂任务(5+ tool calls)完成后自动创建 SKILL.md |
|
||||
| **使用中改进** | 使用 Skill 时发现过时立即 patch |
|
||||
| **Curator** | 后台 Agent 7 天周期评分(使用频率 + 成功率),评分低的合并或淘汰 |
|
||||
| **三级载体** | Memory(MEMORY.md)→ Skill(SKILL.md)→ Rule(prompt injection) |
|
||||
|
||||
**我们借鉴的**:
|
||||
- 三级载体思路(Memory → Skill → Rule)→ 对应我们的 Memory → L3 Skill → L0 铁律
|
||||
- Curator 的淘汰机制(30 天无引用 → deprecated)
|
||||
- 使用频率作为进化驱动力
|
||||
|
||||
#### 方法 2:Trace2Skill — 并行子 Agent 分析轨迹池
|
||||
|
||||
> 来源:arXiv 2603.25158(2026-03)
|
||||
|
||||
**核心思路**:dispatch 一组子 Agent 并行分析多条 trajectory,提取局部经验,再归纳合并为统一 Skill。
|
||||
|
||||
| 步骤 | 说明 |
|
||||
|------|------|
|
||||
| 1. 聚类 | 按任务类型分类 trajectory |
|
||||
| 2. 并行提取 | 子 Agent 独立提取每条的经验教训 |
|
||||
| 3. 归纳合并 | 层级归纳,合并为无冲突 Skill 目录 |
|
||||
|
||||
**我们借鉴的**:
|
||||
- 按"扫描模式"分类(对应他们的按任务类型聚类)
|
||||
- 并行 sub-agent 提取经验卡片(对应他们的并行子 Agent)
|
||||
- 合并去重(对应他们的归纳合并)
|
||||
|
||||
#### 方法 3:SkillRL — 成功/失败双向蒸馏
|
||||
|
||||
> 来源:github.com/aiming-lab/SkillRL
|
||||
|
||||
**核心思路**:
|
||||
- 成功轨迹 → 战略模式("怎么做对的")
|
||||
- 失败轨迹 → 简明教训("千万别这样")
|
||||
|
||||
**我们借鉴的**:
|
||||
- 6 种扫描模式中的①纠正(失败教训)和③成功(成功模式)就是双向蒸馏
|
||||
|
||||
#### 方法 4:SoK: Agentic Skills — 技能习得分类
|
||||
|
||||
> 来源:arXiv 2602.20867(2026-02)
|
||||
|
||||
**核心分类**:
|
||||
- Demonstration distillation — 从观测轨迹中提取可复用流程
|
||||
- Trial-and-error — 从失败中学习
|
||||
- Instruction — 从明确指令中学习
|
||||
|
||||
**我们借鉴的**:
|
||||
- 我们的 6 种扫描模式直接对应:①纠正=Instruction、②试错=Trial-and-error、③成功=Demonstration
|
||||
|
||||
#### 方法 5:Nevo — 三级 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 六种模式定义
|
||||
|
||||
| # | 模式 | 信号特征 | 蒸馏价值 | 理论来源 |
|
||||
|---|------|---------|---------|---------|
|
||||
| ① 纠正模式 | 用户消息含"不对/错了/不要/停/我说的不是" | ⭐⭐⭐ 最高 | SoK(Instruction)、Hermes self-improvement |
|
||||
| ② 试错模式 | 同一任务 3+ 次连续 tool call 失败后成功 | ⭐⭐⭐ | AgenTracer(反事实归因)、SkillRL(失败教训蒸馏) |
|
||||
| ③ 成功模式 | 复杂任务(5+ tool calls)一次成功 | ⭐⭐ | Hermes(5+ tool calls 自动保存 skill)、SoK(Demonstration) |
|
||||
| ④ 协作模式 | 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.yaml(L0)
|
||||
|
||||
**现状**:`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`(内容已合并进角色模板)
|
||||
|
||||
#### 改造 3:skill_system.py 支持 .md(L3)
|
||||
|
||||
**现状**:`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.yaml(behavior_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` — 知识管理体系
|
||||
Reference in New Issue
Block a user