166172e0b8
S1: AGENTS.md 经验闭环规则(workspace 层,单独管理) S2: skill-management Skill 完整实现 - SKILL.md(主:综述 + 四阶段速查 + 验证标准 + 自我修补规则) - references/discover-l1.md(各 agent 03:00 自蒸馏操作指南) - references/discover-l2.md(庞统 05:00 整合审查操作指南) - references/distill.md(蒸馏规范 + 验证标准 + 矛盾处理) - references/apply.md(openclaw 原生机制 + per-agent 可见性) - references/improve.md(引用追踪 + 淘汰 + 提升) - assets/templates/skill-template.md(SKILL.md 标准模板) - assets/templates/signal-format.md(信号输出格式模板) - assets/checklists/quality-check.md(质量检查清单) 文档修复:cron 错开时间 5min → 15min
138 lines
4.1 KiB
Markdown
138 lines
4.1 KiB
Markdown
# DISTILL — 蒸馏规范
|
||
|
||
## 核心原则:HOW not WHAT
|
||
|
||
蒸馏的是「怎么做」不是「发生了什么」:
|
||
|
||
```
|
||
❌ "PR #83 修复了 event_type 未知的问题"
|
||
→ 这是 WHAT,无法复用
|
||
|
||
✅ "消费者/生产者字段同步:新增 dataclass 字段时,必须同步所有从 JSON 提取该字段的代码路径"
|
||
→ 这是 HOW,可复用到任何消费者/生产者场景
|
||
```
|
||
|
||
## SKILL.md 编写规范
|
||
|
||
```yaml
|
||
---
|
||
name: skill-name
|
||
description: Use when [触发条件/问题模式描述],不描述工作流
|
||
---
|
||
|
||
# Skill 标题
|
||
|
||
## 什么时候用
|
||
(具体的触发场景,按问题模式描述,不按技术特定症状)
|
||
|
||
## 怎么做
|
||
(根因分析 + 操作步骤)
|
||
|
||
## 常见错误
|
||
(反模式:什么不该做)
|
||
|
||
## 来源
|
||
(evidence:哪些 task/PR/review 提炼了这条经验)
|
||
```
|
||
|
||
## description 关键规则
|
||
|
||
- 只描述触发条件(when to use),**绝不描述工作流**(how)
|
||
- 以「Use when...」开头
|
||
- 描述问题模式,不描述技术特定症状
|
||
- 原因:测试发现 description 如果总结了工作流,agent 会按 description 执行而跳过读完整 SKILL.md
|
||
|
||
### 示例
|
||
|
||
```yaml
|
||
# ❌ BAD:描述了工作流
|
||
description: Use when modifying dataclass — checks all extraction points, runs tests
|
||
|
||
# ✅ GOOD:只描述触发条件
|
||
description: Use when modifying a dataclass that is populated from JSON extraction by another module
|
||
|
||
# ❌ BAD:太抽象
|
||
description: Use for code quality
|
||
|
||
# ✅ GOOD:描述问题模式
|
||
description: Use when a field added to a dataclass appears empty or as default value at runtime
|
||
```
|
||
|
||
## 蒸馏示例
|
||
|
||
**一级蒸馏**(从具体案例提取):
|
||
|
||
```yaml
|
||
# 案例 1:PromptContext event_type 未知
|
||
# 案例 2:PromptContext from_agent/mail_type 缺失(PR #26 D2)
|
||
→ 共同根因:消费者/生产者字段同步问题
|
||
|
||
## 消费者/生产者字段同步
|
||
|
||
**什么时候用**:修改 dataclass 时,如果该 dataclass 由外部 JSON 提取填充
|
||
|
||
**怎么做**:
|
||
1. 改 dataclass 定义
|
||
2. 检查所有从 JSON 提取字段的代码路径,同步新增提取逻辑
|
||
3. 检查所有构造该 dataclass 的调用点,同步新增参数
|
||
4. 跑一次构建测试验证字段不为空
|
||
|
||
**常见错误**:只改 dataclass 不改提取逻辑 → 字段默认值为空 → 运行时不报错但行为异常
|
||
```
|
||
|
||
**二级蒸馏**(从多个一级经验提取通用模式):
|
||
|
||
如果经验在 ≥2 个不同场景复现,验证通过后,可以提升为独立 Skill 或固化到 AGENTS.md 规则。
|
||
|
||
## 验证标准
|
||
|
||
从 draft → active:
|
||
|
||
| 维度 | 标准 | 不通过 |
|
||
|------|------|--------|
|
||
| Recurrence-Count ≥ 2 | 同一 Pattern-Key 在 ≥2 个场景出现 | 降级为 MEMORY.md |
|
||
| 有生成力 | 能给出具体操作指引 | 丢弃 |
|
||
| 有排他性 | 不是常识 | 丢弃 |
|
||
|
||
提升触发(全部满足):30 天内 ≥3 次 + 跨 ≥2 个任务。
|
||
|
||
## Skill Extraction 质量 Gate
|
||
|
||
| 标准 | 描述 |
|
||
|------|------|
|
||
| Recurring | 有 See Also 链接到 2+ 个相似信号 |
|
||
| Verified | Status 是 resolved 且有工作修复 |
|
||
| Non-obvious | 需要实际调试才能发现 |
|
||
| Broadly applicable | 不是项目特定,可跨场景复用 |
|
||
|
||
## 质量检查
|
||
|
||
| 检查项 | 标准 |
|
||
|--------|------|
|
||
| trigger 是否具体 | 不是「注意代码质量」 |
|
||
| action 是否可执行 | 不是「要小心」 |
|
||
| 是否与已有 Skill 重复 | 检查现有 skills 目录 |
|
||
| description 是否只含触发条件 | 不包含工作流描述 |
|
||
|
||
## 矛盾处理
|
||
|
||
新经验与已有经验冲突时:
|
||
- **时间性矛盾**(观点演化)→ 记录演化轨迹,以近期为主
|
||
- **领域性矛盾**(不同场景不同规则)→ 分场景记录
|
||
- **本质性张力**(价值观内在冲突)→ 标注为「核心张力」,两个版本都保留
|
||
|
||
**矛盾是特征,不是 Bug。** 强制调和会丢失关键信号。
|
||
|
||
## 信号输出格式
|
||
|
||
每条信号包含:
|
||
```
|
||
信号类型 | 来源 | 时间 | 简述(≤100 字)
|
||
ID: SIG-YYYYMMDD-XXX
|
||
Priority: low | medium | high | critical
|
||
Status: pending | in_progress | resolved | promoted
|
||
See Also: SIG-YYYYMMDD-XXX
|
||
Recurrence-Count: N
|
||
Pattern-Key: category.subcategory
|
||
```
|