Distill Skill
Synthesize accumulated reflections into a coherent growth narrative, identify cross-event patterns, and propose self-model updates — all gated by user confirmation.
Protocol reference: references/reflection-protocol.md — distill report template, DNA diff format.
When to Use
- User types
/distillexplicitly - Asks for "growth report", "阶段性复盘", "蒸馏"
- Auto-suggested after
/reflect(cumulative impact >= threshold) - "上次到现在有什么变化", "总结一下最近的复盘"
Runtime
Step 0: Gather Input
- Read
state/reflections.jsonl— parse all lines - Identify unprocessed — all entries where
distilled_atis null - Read
state/records.jsonl— RAL records from same time range for context - Read
state/user_dna.json— current self-model for comparison - Read
references/reflection-protocol.md— distill report template
If ZERO unprocessed reflections:
"没有新的复盘记录需要合成。你最近一次蒸馏是在 [last distill date],处理了 [N] 条记录。"
Step 1: Tension + Resolution Analysis
Analyze reflections through the Tension + Resolution lens:
Identify central tension(s):
- Recurring dilemmas across reflections (e.g., "depth vs breadth", "creation vs adoption")
- Emotional spikes clustering around the same value
- Cross-domain connections — tensions spanning work, learning, relationships
- Patterns where user says one thing but does another
Identify resolution(s):
- Moments where tension was explicitly resolved (decision, realization)
- Value shifts indicating resolution (e.g., "optimization" overtakes "exploration")
- Abstraction layers that climbed from case → principle
- Action experiments with positive outcomes
Synthesize narrative arc:
- 起点: state at start of this batch
- 挑战: what complicated it
- 落地: where it landed
- 未解: what's still unresolved
Step 2: Compute Proposed DNA Diffs
Based on ALL unprocessed reflections, compute consolidated changes:
Values:
- Same key shifted in multiple reflections → stronger signal → higher confidence
- Values shifted in opposite directions → unresolved tension, don't propose single diff
- Weight by emotional intensity
Beliefs:
- New beliefs that appeared across reflections → propose adding
- Beliefs contradicted by recent behavior → propose modifying or removing
- Beliefs that created blind spots → propose adding nuance
Cognitive Patterns (cognitive_patterns):
- Emergent strengths visible across multiple reflections
- Recurring biases or default strategies
- Meta-cognitive patterns — how the user learns and adapts
Step 3: Write Report
Write state/distill_reports/YYYY-MM-DD_distill.md using the template from references/reflection-protocol.md.
Step 4: Present & Confirm
Present conversational summary:
"从 [start] 到 [end],[N] 次复盘的核心洞察——"
核心矛盾: [tension summary] 进展: [what resolved] 未解: [what's still open] 浮现的模式: [key patterns]
[present proposed DNA diffs one section at a time] "请逐条确认——接受、拒绝、还是修改?"
Step 5: Apply & Close
- Apply accepted diffs to
state/user_dna.json - Mark all processed reflections:
distilled_at: "<ISO>" - Mark report as confirmed
"已保存。报告: state/distill_reports/[date]_distill.md" "自我模型已更新 [N] 项。"
Edge Cases
| Scenario | Action |
|---|---|
| No reflections | "还没有复盘记录。先运行 /reflect 积累数据。" |
| All reflections already distilled | Show last report. Offer to regenerate. |
| user_dna.json missing | Proceed but note: "建议先运行 value-discovery。" |
| Single reflection only | Lighter analysis. Fewer cross-event patterns. Still valid. |
| User rejects all | "没有应用任何更新。当前 user_dna.json 保持不变。" |
| Contradictory signals | Surface honestly: "不同时间的信号指向不同方向——可能是正常波动,也可能意味着你的某些价值在过渡期。" |
Key Files
| File | Purpose |
|---|---|
references/reflection-protocol.md |
Distill report template, DNA diff format |
state/reflections.jsonl |
Source — all reflection events |
state/user_dna.json |
Target — updated by accepted diffs |
state/distill_reports/ |
Output — markdown growth reports |
state/records.jsonl |
Context — RAL records from same timeframe |