Skip to content
rumilhzPublic

About

Preventive rules book for AI agents — stop repeating mistakes(前置防错错题本)

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

22 Commits

Folders and files

Repository files navigation

WrongBook · Agent 前置防错错题本

English | 中文

License: MIT CI

把「出错 → 诊断 → 修复」的浪费,变成「动笔之前就知道不能怎么写」的规则库。给 Agent 装一个"老师"——在它动手写命令、写代码、装包之前,先把规则送到它面前。

✨ 核心特性

  • 🛡️ 前置防错 — 写命令前核对禁则,命中即换写法,纠错环节根本不发生
  • 📋 禁则式记录 — 「禁止 X —— 因为会 Y」,一条一行、可扫描、省 token
  • 🔔 常驻触发 — 元规则每轮都在上下文,杜绝"事后才想起查"
  • 🧱 双层隔离 — 指令文件只放元规则 + ≤5 条铁律,完整禁则进记忆按需检索
  • 🌱 渐进沉淀 — 报错 / 用户纠正 / 他处案例三时机,同类错误合并单条
  • 📊 验证数据 — HIT / INCIDENT / RULE 三类事件记录,效果可量化(首份验证报告 已于 2026-09-02 回填)

核心组成

层 技术
常驻指令层 AGENTS.md / CLAUDE.md / REASONIX.md(每个相关 turn 自动加载)
记忆层 平台长期记忆 / lessons.md(按需检索)
校验 scripts/validate_lessons.py(禁则格式 lint)
CI GitHub Actions(push / PR 自动校验)

架构

┌───────────────────────────────────────┐
│ 常驻指令层(每轮在上下文,cache-stable)│
│      元规则:写之前先查错题本          │
└──────────────────┬────────────────────┘
                   │ 元规则触发检索
┌──────────────────▼────────────────────┐
│ 错题本(记忆 / lessons.md,按需检索)  │
│        禁止 X —— 因为会 Y              │
│   (完整禁则清单,可数百条)           │
└───────────────────────────────────────┘

快速开始(3 步,约 3 分钟)

Step 1:创建常驻指令文件

在工作区放一个 AGENTS.md(Claude Code 用 CLAUDE.md,Reasonix 用 REASONIX.md),内容直接抄 templates/AGENTS.md(「高频铁律」的 (示例) 条目是占位,换成你自己最常踩的坑):

## 元规则:动手前核对错题本(防错优先,不做事后纠错)
- 每次执行工具/命令、写代码、装包、调 API **之前**,按动作类型查对应领域禁则
  (执行命令→[bash]/[shell];写代码→[语言]/[编码];装包→[安装];调 API→[工具]/[配额]…),
  命中即换预防性写法,**不等报错再纠错**。
- **可见核对**:每次调用 shell 工具前,先输出一行 `[错题本核对] 无命中 / 命中X→改用Y`。
- 命令失败 / exit code 非 0 / 工具报错后:按「禁止 X —— 因为会 Y」格式沉淀或扩充错题本。

Step 2:创建错题本

复制 templates/lessons.seed.md(种子库:真实沉淀的 9 条禁则,标注了适用范围)为 lessons.md,删掉你不用的领域;纯空模板在 templates/lessons.md。

Step 3:遇到第一个错误,沉淀第一条

命令报错后,按此格式追加(同类问题第二次出现时编辑已有条目,不新增):

- [bash/PowerShell] 禁止在 bash 双引号内嵌含 `$_` 的 `powershell -Command "..."`
  —— 因为 `$_` 会被 bash 当变量展开吞掉 → 命令损坏 exit 1;
  改写成 `.ps1` 脚本执行,或整串用单引号包裹让 bash 零展开

使用规则速查

场景 动作
准备写命令/代码/装包 先核对错题本相关条目,命中即换写法
命令报错 / exit code 非 0 沉淀为「禁止 X —— 因为会 Y」禁则
用户直接纠正 沉淀(不等犯错)
同类错误第二次出现 扩充那一条(加示例/变体),不新建
清单膨胀 / 有过时条目 修剪:合并重复、删除不再适用的

四个设计决策(摘要)

  1. 禁则式记录:禁止 X —— 因为会 Y,一条一行、可扫描、省 token;"如何解决"默认丢弃,只保留可复用的预防性写法 + 一行根因
  2. 常驻指令 > 被动检索:记忆检索在"写之前"没有关键词可搜,必须靠每轮常驻的元规则触发——这是本方案区别于所有 lessons/记忆类方案的根本点
  3. 双层隔离:指令文件只放元规则 + ≤5 条铁律(防膨胀失效),完整禁则进记忆/文件按需检索。实战演进(2026-08-13):平台 pinned 记忆有字符预算(如 1500),禁则涨到一定规模后记忆无法再更新——解法是把完整禁则全文外置独立文件(如 %APPDATA%\reasonix\self-improvement-lessons.md),记忆/指令只留指针,更新走文件(无预算限制)。见 docs/implementation.md 情况 A
  4. 渐进沉淀 + 修剪:沉淀时机有三种;同类合并单条;定期修剪防清单腐烂

完整论证见 docs/principle.md。

真实案例(本方案运行实录)

领域 禁则 来源
bash 禁止直接 ls 可能不存在的路径 → exit 2 判 failed 实际运行:探测目录
bash/Windows 禁止把 MSYS 路径(/tmp)直接传给 Windows 程序 → 报成功但没写文件 实际运行:批量生成
bash/PowerShell 禁止在 bash 双引号内嵌含 $_ 的命令 → 命令被吞损坏 实际运行:注册表查询
浏览器自动化 禁止连续操作间隔 >2-3 秒 → daemon 清空闲 session 实际运行:BrowserAct

2026-09 首份验证报告(周期 2026-08-06 ~ 09-02,提前于 09-06 回填)

指标 数值 说明
错题本条目 9 → 76 净 +67(含合并去重)
命中 HIT 3 次 heredoc 定界符 / 路径存在判断 / $_ 单引号
报错 INCIDENT 6 次 08-06 三条 + 08-13 三条
复发(observed) 2 次 「只读命令豁免核对」「标注文本拼进命令」各复发 1 次
RULE 记录 新增 3 / 扩充 3 / 修剪 1 / 区间批量 1 —

⚠️ 诚实声明(指标口径已按 docs/validation.md 重构):

  • 上表是"观察到的原始事件数",不是效果率。原报告曾写"复发率 40%",但按 docs/validation.md 的指标定义,复发率 = incidents_after_rule / exposures_to_rule,而 exposures(规则实际被应用的次数)本周期未记录,故 "40%" 不成立,只能表述为 "observed 2 regressions"——2 个已沉淀禁则对应的重复错误,样本极小,不能作为任何真实复发率估计。
  • 命中率(H/T)不统计:检索触发次数 T 未逐次记录。
  • 数据集分层:08-14 ~ 09-02 跨会话沉淀的 55 条属 Dataset D(unattributed bulk import),validation-log 未逐日归因,仅可作知识库,不可用于任何效果 claim(按 v0.1 数据治理,见 docs/validation.md)。76 条中大多带"实测日期"归因(Dataset B),但未逐条关联到 RULE 事件,严谨计为 D 层。
  • 结论与下一步:本周期只证明了"Agent 可被提示去记住错误"(记录达成),未证明"记住错误能让 Agent 少犯错误"(效果未验证)。2026-09-02 已升级沉淀可见仪式 + add-lesson.py(解决记录脱节);下一周期按收敛结论做:① 规则大清洗分层(核心集 ≤12 条常驻,其余降参考附录)② 规则切片化+触发式检索 ③ 数据集分层治理,并引入规则暴露次数(exposure)记录,才能给出真实复发率。最终效果用 A/B 对照实验 验证(协议已定义,待 exposure 数据积累后执行)。

与其他方案对比(完整版见 docs/comparison.md)

方案 触发时机 前置防错 存储 评价
本方案(WrongBook) 常驻指令 + 按需检索 + 平台 hook 强制层(可选) ✅ 指令文件 + 记忆/lessons.md + hook 事件账本 零依赖、平台无关;默认纯指令驱动,在支持 hooks 的平台(Claude Code 的 hooks、Reasonix 的 settings.json 等)可再生强制前置注入与失败自动记账(2026-09-02 v0.4 起)
Claude Code 的 CLAUDE.md rules 常驻 ✅ 单一指令文件 思路相近;规则与指令同文件,需注意控制体积
lessons 数据库类 skill 被动检索 部分 外部 DB 适合团队级知识库;需运行维护
graphify 等 lessons 聚合器 会话后聚合 部分 生成的 LESSONS.md 适合项目复盘场景
mem0 / MemGPT / Letta 语义检索 部分 向量库 记忆基础设施,定位不同;适合大规模记忆需求

仓库结构

wrongbook/
├── README.md                  # 本文档(中文)
├── README.en.md               # 英文版
├── LICENSE                    # MIT
├── templates/
│   ├── AGENTS.md              # 通用常驻指令模板(任何 Agent 可用)
│   ├── lessons.md             # 错题本空模板(禁则清单)
│   ├── lessons.seed.md        # 种子库:真实沉淀的 9 条禁则(推荐起点)
│   └── REASONIX.md            # Reasonix 平台专用版(含存储与沉淀流程)
├── docs/
│   ├── principle.md           # 原理详解
│   ├── implementation.md      # 实现细节(平台适配、维护流程)
│   ├── comparison.md          # 与其他方案深度对比
│   ├── validation.md          # 验证方法:指标、记录协议、规则生命周期
│   ├── experiment.md          # A/B 对照实验协议
│   └── hooks.md               # 平台 hooks 强制层(适配器层,评审收敛版)
├── data/
│   └── validation-log.md      # 验证数据日志(2026-08-06 起)
├── scripts/
│   ├── validate_lessons.py     # 错题本格式校验脚本(防错本身的防错)
│   ├── add-lesson.py           # 一键沉淀:追加全文+记 validation-log+同步副本
│   ├── wrongbook-audit.py      # 外部审计:核对率/exposure/规则生命周期三清单
│   ├── generate-rule-index.py  # 生成领域切片索引 rule-index.md
│   └── hooks/
│       ├── hook-session-start.py       # SessionStart:注入核心禁则(强制前置核对)
│       └── hook-post-tool-failure.py   # PostToolUseFailure:失败自动写外部事件账本
└── .github/
    └── workflows/lint.yml     # CI:push/PR 自动校验错题本格式

License

MIT —— 见 LICENSE。欢迎 PR 补充其他平台的适配模板。

About

Preventive rules book for AI agents — stop repeating mistakes(前置防错错题本)

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages