Files
sanguo_moziplus_v2/docs/research/distill-integration-plan.md
T
2026-05-27 00:21:06 +08:00

287 lines
10 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.
# 四层知识体系整合改造方案
> 日期:2026-05-27
> 状态:方案,待主公确认
> 目标:将蒸馏经验整合进 moziplus v2.0 现有四层架构,不是叠加而是融合
---
## 1. 现状诊断
### 现有四层架构(技术设计 v2.6)
```
L0 铁律层(~500 tokens → Hook 注入,不占 bootstrap
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 四要素
```
### 问题:蒸馏产出与现有体系的关系
| 蒸馏产出 | 当前位置 | 问题 |
|---------|---------|------|
| gate-flow.yaml | `guardrails/`(新目录) | 与 `config/guardrails.yaml` 重叠——后者是**安全红线**(实盘/删除/配置),前者是**流程铁律**。两套 guardrail 容易混淆 |
| no-circle-jerking.yaml | `guardrails/`(新目录) | 同上。且"不绕圈子"不是安全红线,更像行为规范 |
| design-confirmation.md | `prompt_templates/`(新目录) | `bootstrap.py` 按 role 加载模板(executor.md/reviewer.md),没有 design-confirmation.md 的加载逻辑。放进去不会被读取 |
| role-match-check.md | `prompt_templates/`(新目录) | 同上。没有对应的 bootstrap 拼装入口 |
| inform-lightweight.md | `prompt_templates/`(新目录) | 同上 |
| 4 个 Skill .md | `skills/` | `skill_system.py` 只加载 `.json` 格式的 skill 定义,不识别 `.md`。且 description 字段需要注册到 registry |
| 119 条 experiences | JSON 文件 | 应该写入黑板 experiences 表,不是文件 |
**结论:蒸馏产出全部是"孤儿文件"——放进了目录但没有对应的加载逻辑。**
---
## 2. 整合改造方案
### 原则
1. **不新增目录**——用现有的 `config/``prompt_templates/``skills/`
2. **不新增加载逻辑**——用现有的 `guardrails.yaml``bootstrap.py``skill_system.py`
3. **按层级归位**——每条经验去它该去的层
### 改造清单
#### 改造 1:合并 guardrails.yamlL0
**现状**`config/guardrails.yaml` 有 6 条安全红线
**问题**:蒸馏的 2 条铁律(GATE 流程、不绕圈子)不是安全红线,放一起会导致概念混乱
**方案**:在 guardrails.yaml 中增加 `behavior_rules` 区(与 `rules` 并列)
```yaml
# config/guardrails.yaml
rules: # 安全红线(原有 6 条不变)
- id: live_trading
...
- id: data_deletion
...
# 新增:行为铁律(从蒸馏经验提炼,每次 turn 强制注入)
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: |
用户已明确方向后,不再质疑前提
用户给出条件假设时,按最坏情况设计
用户说"别绕了"= 立刻停止,直接给方案
# 全局设置(原有不变)
settings:
enabled: true
...
```
**代码改动**`guardrail.py` 读取 `behavior_rules` 并拼入 L0 Hook 注入
**删除**`guardrails/gate-flow.yaml``guardrails/no-circle-jerking.yaml`(孤儿文件)
#### 改造 2:扩充 prompt_templates/L2
**现状**`prompt_templates/` 目录只有蒸馏新增的 3 个文件,`bootstrap.py` 按角色名加载(executor.md/reviewer.md),这 3 个不会自动加载
**方案**
1. 将蒸馏的 3 个场景模板合并进对应角色模板(作为 section)
2. 补全缺失的角色模板
```
prompt_templates/
├── executor.md # 执行者操作规范(补全:含设计确认+角色匹配检查)
├── reviewer.md # 审查者操作规范(补全:含评审质量协议)
├── planner.md # 规划者操作规范(补全:含调研落地映射)
├── pangtong.md # 庞统操作规范(新增:含一键三连闭环标准)
└── mail-handler.md # 邮件处理规范(新增:含 inform 轻量处理)
```
**executor.md 示例**(合并后):
```markdown
# 执行者操作规范
## 任务执行纪律
1. 先确认当前设计再改——不确定时问用户确认
2. 认领任务前检查角色匹配——评审者不认领编码任务
3. 发现实现与预期不符时,先理解当前设计逻辑
## 沟通规范
1. 回答问题要直接,先给答案再解释
2. 用户说"先不要改"时必须立即停下
...
```
**代码改动**`bootstrap.py``build()` 方法已有 `_load_template(f"{role}.md")` 逻辑,只要文件名对应即可
**删除**`prompt_templates/design-confirmation.md``role-match-check.md``inform-lightweight.md`(合并进角色模板后删除)
#### 改造 3:注册 Skill 到 registryL3
**现状**`skill_system.py` 只加载 `.json` 格式的 skill 定义
**方案**
1. 将 4 个 `.md` Skill 转为 `.json` 格式注册(保留 .md 作为完整参考,用 .json 做注册索引)
2. 或者:修改 `skill_system.py` 同时支持 `.md` 格式(frontmatter 解析)
**推荐方案 B**(修改 skill_system.py 支持 .md):
```python
# skill_system.py _load_from_dir 增加 .md 支持
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")
# 解析 YAML frontmatter
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
```
**文件整理**
```
skills/
├── trial-and-error-patterns.md # 保留(.md 即注册)
├── proven-practices.md # 保留
├── review-quality.md # 保留
├── self-reflection-wisdom.md # 保留
└── ...(未来新增的 Skill 也放 .md
```
#### 改造 4experiences 写入黑板表(Memory
**现状**:119 条协作经验存在 JSON 文件中
**方案**
1. 创建黑板 `experiences` 表(课题6 D6-7 已设计)
2. 将 119 条 JSON 数据导入 `experiences`
3. `bootstrap.py``_format_experiences()` 已有从表读取并注入 L2 的逻辑
**SQL**
```sql
CREATE TABLE experiences (
experience_id TEXT PRIMARY KEY,
source TEXT NOT NULL,
category TEXT NOT NULL,
summary TEXT NOT NULL,
confidence REAL DEFAULT 0.5,
status TEXT DEFAULT 'draft',
created_at TEXT NOT NULL,
created_by TEXT NOT NULL,
...
);
```
**删除**`docs/research/distill-experiences-collaboration.json`(导入后删除)
---
## 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
② 项目背景
③ 任务上下文
④ 前序信息
⑤ Guardrail 规则(安全红线 + 行为铁律)
⑥ 审查协议
⑦ 经验注入(experiences 表按 tag 匹配,最多 5 条)
L3 被动参考层(按需加载)
└── skills/*.md → frontmatter 解析 → Agent 按需读全文
```
---
## 4. 改造步骤
| # | 步骤 | 改动范围 | 说明 |
|---|------|---------|------|
| 1 | 合并 guardrails.yaml | `config/guardrails.yaml` + `guardrail.py` | 新增 behavior_rules 区 + 读取逻辑 |
| 2 | 扩充 prompt_templates | `prompt_templates/` 5 个角色文件 | 合并蒸馏内容 + 补全缺失角色 |
| 3 | 修改 skill_system.py 支持 .md | `skill_system.py` | 新增 frontmatter 解析 |
| 4 | 创建 experiences 表 | 黑板数据库 | 建表 + 导入 119 条数据 |
| 5 | 清理孤儿文件 | guardrails/ 目录删除 | 移除蒸馏产生的孤立文件 |
| 6 | 更新技术设计文档 | `technical-design-v2.6.md` | 更新四层架构说明 |
---
## 5. 与 6 种扫描模式的最终映射
| 扫描模式 | 归宿层 | 具体位置 |
|---------|-------|---------|
| ① 纠正(591) | L0 行为铁律 + L2 角色模板 | guardrails.yaml behavior_rules + executor.md |
| ② 试错(226 | L3 Skill | skills/trial-and-error-patterns.md |
| ③ 成功(200 | L3 Skill | skills/proven-practices.md |
| ④ 协作(873 | 黑板 Memory | experiences 表 |
| ⑤ 决策分歧(1241 | L2 角色模板 | executor.md 设计确认 section |
| ⑥ 经验声明(21 | L3 Skill | skills/self-reflection-wisdom.md + review-quality.md |
---
## 6. 估算工作量
| 步骤 | 工作量 | 风险 |
|------|--------|------|
| 1. guardrails.yaml 合并 | 小(改 1 文件 + 1 Python | 低 |
| 2. prompt_templates 扩充 | 中(写 5 个角色模板) | 低 |
| 3. skill_system.py 改造 | 小(加 frontmatter 解析) | 中(需要测试) |
| 4. experiences 表创建 | 中(建表 + 导入 + bootstrap 联调) | 中 |
| 5. 清理孤儿文件 | 小(删除) | 无 |
| 6. 更新设计文档 | 小(文档更新) | 无 |
**总计**:约 1-2 天,主要是步骤 2 和 4 的模板编写和联调。
---
主公,你看这个整合方案是否合理?确认后我开始执行。