wewrite/references/learn-edits.md
wangzhuc 344f7509f1 feat: structured edit learning with typed patterns and confidence scoring
learn_edits.py: patterns now have type/key/description/rule fields,
confidence auto-computed from occurrences + recency with 30-day decay.
--summarize --json outputs aggregated patterns sorted by confidence.

learn-edits.md: playbook.md format changed from free text to structured
YAML rules with confidence levels. Rules with confidence ≥ 5 become
hard constraints in Step 4, < 5 are soft references, < 2 get pruned.

SKILL.md Step 4: playbook priority now confidence-gated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:23:34 +08:00

3.6 KiB
Raw Blame History

学习人工修改(核心飞轮)

这是 WeWrite 最重要的长期价值。每次用户编辑文章后让系统学习下一<E4B88B><E4B880><EFBFBD>的初稿就会更接近用户的风<E79A84><E9A38E>需要的编辑量越来越少。

飞轮效应:初稿需要改 30% → 学习 5 次<><E6ACA1>只需改 15% → 学习 20 次后只需改 5%

触发:用户说"我改了,学习一下"、"学习我的修改"

1. 获取 draft 和 final

  • draftoutput/ 下最新的 .md 文件按修改时间排序<E68E92><E5BA8F><EFBFBD>ls -t output/*.md | head -1
  • final用户提供修改后的版本。主动引<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"请把你改好的文章全文粘贴给我<EFBC8C><E68896>告诉我文件路径。如果你是在微信后台编辑器里改的可以全选复制后直接粘贴到这里。"

2. 运行 diff 分析

python3 {skill_dir}/scripts/learn_edits.py --draft {draft_path} --final {final_path}

3. 分析并记<E5B9B6><E8AEB0> pattern

读取脚本输<EFBFBD><EFBFBD><EFBFBD>的 diff 数据和 INSTRUCTIONS FOR AGENT对每个有意义的修改写入 pattern。

每个 pattern 必须包含

  • type<EFBFBD><EFBFBD>word_sub / para_delete / para_add / structure / title / tone / expression
  • key:短唯一标识(英文,如 avoid_jiangzhenshorter_paragraphsmore_negative_emotion
  • description:这次修改是什么(如"把'讲真'替换为'坦白说'"
  • rule可执行的写作指令<EFBFBD><EFBFBD><EFBFBD>必须是祈使句,不是描述句

key 的复用:如果这次的修改和之前某个 lesson 里的 pattern 是同一种偏好(比如又一次把段落改短了),使用相同的 key。这样 --summarize 时 occurrences 会累加<E7B4AF><E58AA0><EFBFBD>confidence 自动提升。

编辑 lesson YAML 文件中的 patterns 列表写入分<E585A5><E58886><EFBFBD>结果。

4. Playbook 更新

每积累 5 次 lessons触发 playbook 更新:

python3 {skill_dir}/scripts/learn_edits.py --summarize --json

读取 JSON 输出,按以下规则更新 {skill_dir}/playbook.md

playbook.md 格式

playbook.md 是 YAML 格式,每条规则带 confidence 和元数据:

# WeWrite Playbook — 从用户<E794A8><E688B7><EFBFBD>辑中学习的写作规则
# 由 Agent 自动<E887AA><E58AA8><EFBFBD>不要手动编辑
# confidence ≥ 5 的规则在 Step 4 写作时作为硬性约束<E7BAA6><E69D9F>
# confidence < 5 的规则作为软性参考

rules:
  - key: "shorter_paragraphs"
    type: "expression"
    rule: "段落不超过 80 字,长段必须在 3 句内换行"
    confidence: 7.0
    occurrences: 4
    last_seen: "2026-03-28"

  - key: "avoid_jiangzhen"
    type: "word_sub"
    rule: "不要使用'讲真',用'坦白说'代替"
    confidence: 5.0
    occurrences: 2
    last_seen: "2026-03-30"

更新规则

  1. 新增summarize 中出<E4B8AD><E587BA>了 playbook 里没有的 key → 直接添加
  2. 更新summarize 中的 confidence/occurrences/rule 比 playbook 里的新 → 用新值覆盖
  3. 保留playbook 中有但 summarize 中没有的规则 → 保留不动可能是早期学到的仍然<E4BB8D><E784B6>
  4. 衰减淘汰confidence < 2 的规则 → 删除(太旧或不再相关)

5. Step 4 如何使用 playbook

Step 4 写作时读取 playbook.md

  • confidence ≥ 5 的规则:作为硬性约束执行(和 persona 同级)
  • confidence 3-5 的规则:作为软性参考(倾向遵循但不强制)
  • confidence < 3 的规则:忽略(可能已过时)

这确保:

  • 用户反复确认的偏好(高 confidence被严格执行
  • 只出现过一次的偏好(低 confidence<EFBC89><E4B88D>过度影响
  • 用户风格变化时,旧规则自然衰减退出