让任何写作风格Skill自动从人类修改中学习,并定期自我修剪。observe模式记录原文到终稿的修改,improve模式提取规则并去重,prune模式月度清理。完整闭环让写作规则库越用越精准,兼容Claude Code和OpenClaw。
【适用场景】
什么时候用
当你在使用写作Skill时,希望AI能够从你的修改中自动学习,不断提升输出质量:
- 经常需要写同一类型的内容(如产品文案、社交帖子) - 对AI输出的风格有明确要求,需要持续校准 - 希望减少每次修改的重复劳动 - 想建立一个可持续优化的个人写作知识库
核心价值
这个Skill解决了写作Skill的两个核心痛点:
1. 规则遗忘 — 之前修改过的规则时间久了就忘了,下次还会犯同样错误 2. 规则膨胀 — 规则越来越多难以维护,新旧规则相互冲突
工作原理
三个模式形成完整闭环:
- observe(观察):记录每次修改,保留原文到终稿的完整修改轨迹 - improve(改进):从修改中提取规则,自动追加到规则库,同时去重合并 - prune(修剪):每月清理一次,删除低价值规则,保持规则库精简
【操作步骤】
Step 1:初始化
在项目目录中初始化自驱学习系统:
```bash mkdir -p observation_log rules ```
配置SKILL.md,启用三个模式:
```markdown
自驱学习配置
- observe: true - improve: true - prune: monthly # 每月修剪 ```Step 2:Observe模式
每次对AI输出进行修改时,触发observe:
``` 将原文保存到 observation_log/ 文件名格式:YYYYMMDD-HHMMSS.md 内容包含:原始输出 + 你的修改 + 修改原因 ```
Step 3:Improve模式
定期(每天或每周)触发improve:
```bash
从观察日志中提取规则
python3 improve.py ```脚本会自动:
1. 读取所有observation_log文件 2. 对比原文和修改,找出规律 3. 提取词汇替换规则、句式偏好、结构变化 4. 将新规则追加到rules/目录下 5. 自动去重合并相似规则
Step 4:Prune模式
每月触发一次prune:
```bash
修剪低价值规则
python3 prune.py ```删除:
- 长期未使用的规则 - 与新规则冲突的旧规则 - 过于具体无法泛化的规则
【代码模板】
observe.py
```python import os from datetime import datetime
def observe(original, revised, reason, log_dir='observation_log'): """ 记录一次写作修改 """ os.makedirs(log_dir, exist_ok=True)
timestamp = datetime.now().strftime('%Y%m%d-%H%M%S') filename = f"{timestamp}.md"
content = f"""# 写作观察日志 {timestamp}
修改原因
{reason}原始输出
{original}修改后
{revised} """with open(os.path.join(log_dir, filename), 'w', encoding='utf-8') as f: f.write(content)
print(f"观察日志已保存: {filename}")
if __name__ == '__main__': import sys if len(sys.argv) >= 3: original = sys.argv[1] revised = sys.argv[2] reason = sys.argv[3] if len(sys.argv) > 3 else '' observe(original, revised, reason) ```
improve.py
```python import os import re from collections import defaultdict
def extract_rules(log_dir='observation_log', rules_dir='rules'): """ 从观察日志中提取写作规则 """ os.makedirs(rules_dir, exist_ok=True)
all_rules = defaultdict(list)
for filename in os.listdir(log_dir): if not filename.endswith('.md'): continue
filepath = os.path.join(log_dir, filename) with open(filepath, 'r', encoding='utf-8') as f: content = f.read()
提取原始输出和修改后内容
parts = content.split('## 修改后') if len(parts) < 2: continueoriginal = parts[0].split('## 原始输出')[1].strip() if '## 原始输出' in parts[0] else '' revised = parts[1].strip()
词汇替换规则
orig_words = set(re.findall(r'\w+', original)) rev_words = set(re.findall(r'\w+', revised))added = rev_words - orig_words removed = orig_words - rev_words
for word in added: all_rules['recommended'].append(word) for word in removed: all_rules['avoid'].append(word)
去重并保存
for rule_type, words in all_rules.items(): filepath = os.path.join(rules_dir, f'{rule_type}.txt') unique_words = list(set(words)) with open(filepath, 'w', encoding='utf-8') as f: f.write('\n'.join(unique_words)) print(f"更新规则: {rule_type} ({len(unique_words)}条)")if __name__ == '__main__': extract_rules() ```
【复盘要点】
规则质量判断
好的规则:
- 具体可执行(「每段不超过3句」而非「段落要短」) - 可以泛化(「优先用主动语态」而非「用'我'代替'作者'」) - 长期有效(不是针对单篇文章的临时调整)
常见问题
1. 规则过度拟合 — 从单次修改提取的规则可能过于具体,要确保规则能泛化到其他文章 2. 规则冲突 — 新规则与旧规则矛盾时,以新规则为准,删除旧规则 3. 日志膨胀 — observation_log会越来越大,定期归档旧日志
效果评估
判断自驱学习是否有效:
- 同类写作错误是否减少(AI不再犯同样的风格问题) - 每次修改量是否减少(从10处修改降到3处) - 规则库是否保持精简(不超过200条核心规则)
来源:GitHub https://github.com/jzOcb/self-improving-skill