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
4.1 KiB
4.1 KiB
DISTILL — 蒸馏规范
核心原则:HOW not WHAT
蒸馏的是「怎么做」不是「发生了什么」:
❌ "PR #83 修复了 event_type 未知的问题"
→ 这是 WHAT,无法复用
✅ "消费者/生产者字段同步:新增 dataclass 字段时,必须同步所有从 JSON 提取该字段的代码路径"
→ 这是 HOW,可复用到任何消费者/生产者场景
SKILL.md 编写规范
---
name: skill-name
description: Use when [触发条件/问题模式描述],不描述工作流
---
# Skill 标题
## 什么时候用
(具体的触发场景,按问题模式描述,不按技术特定症状)
## 怎么做
(根因分析 + 操作步骤)
## 常见错误
(反模式:什么不该做)
## 来源
(evidence:哪些 task/PR/review 提炼了这条经验)
description 关键规则
- 只描述触发条件(when to use),绝不描述工作流(how)
- 以「Use when...」开头
- 描述问题模式,不描述技术特定症状
- 原因:测试发现 description 如果总结了工作流,agent 会按 description 执行而跳过读完整 SKILL.md
示例
# ❌ 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
蒸馏示例
一级蒸馏(从具体案例提取):
# 案例 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