用途
Fable Learning 用来解决一个具体问题:工程会话中产生的经验在对话结束后就消失了。该工具把会话中的现实情况提炼为持久、可复用的项目工程知识,核心主张是“为同一个工程错误只付出一次代价”,之后项目应当记住它。
它明确要求不要产出简单的会话摘要,也不要只列出改动内容,而是把失败、发现、修正、架构决策、调试洞察、测试策略和实现失误转化为未来贡献者和编程代理可以执行的工程教训。
主要能力
- 现实挖掘(Reality Mining):从会话中提取失败、修复、不变量和测试,再蒸馏为 Failure-lessons/、agent-kernel 和 gbrain 中的知识,最终演进为 Playbook 与技能。
- 22 步失败教训提取协议:包括检查环境可用工具、回顾完整会话、区分事实与假设、建立 Failure-lessons/ 知识库、按失败类别而非工单编号组织、使用标准 14 节教训模板、提取 bug 背后的深层教训、记录成功模式与修复过程中的失误、维护索引与“我们现在执行的规则”、关联真实代码与测试等。
- 根因分级:对每个发现区分 Confirmed(已确认)、Strongly indicated(强指向)、Open hypothesis(开放假设)和 Unknown(未知),禁止把推测写成历史事实。
- 标准教训结构:每条教训包含背景、发生了什么、可观察症状、影响、错误假设、根因、架构为何允许、修复、验证、预防规则、可复用教训、相关代码、相关测试、相关教训和状态等 14 个部分。
- 回归测试映射:要求高影响失败教训对应可复现的回归测试,形成“失败 → 回归测试 → 受保护不变量”的链路;并用三步可证伪性测试确认测试真实有效:修复后测试通过、回退缺陷后测试失败、恢复修复后测试通过。
- 知识去重与历史保留:新增前先搜索已有知识库、文档、ADR 和代理记忆;合并共享根因;只保留蒸馏后的工程知识,不保留原始日志、临时 ID、凭据、密钥或完整对话转储。
- 代理学习系统同步:把不变量写入 agent-kernel 与 gbrain 记忆系统,并保持单条件单动作的原子性。
- 文档化交付:建议以独立提交记录学习文档,并输出包含所用工具、创建文件、更新文件、核心教训、现行规则、失败到测试映射、未解决知识和仓库变更的最终报告。
使用方式
资料中给出的触发方式包括:
- 用户调用
/learn、learn、convo-learn、fable-learning,或说“what did we learn?”“extract learnings”“save what we learned”“convert session into durable learnings”。 - 解决非平凡 bug、测试回归或配置障碍并建立可复用的预防不变量时。
- 创建或更新仓库的 Failure-lessons/ 知识库时。
- 把用户纠正、确认或升级记录为训练后信号时。
- 把 3 个以上相关问题-解决方案对合成为 agent-kernel Playbook 时。
- 在会话结束时通过 Stop / SessionEnd 钩子以无头模式运行。
资料还提到可检查环境中的 /learn、gsd:extract-learnings、/convo-learn、/fable-learning、agent-kernel remember、gbrain remember 等工具,但要求只使用实际可用的工具,不假装执行了不存在的命令。
适用场景
适合在完成或进行中的工程会话中提取经验、把已解决的非平凡 bug 固化为预防不变量、维护项目失败教训知识库、合成 Playbook、以及把会话要点编译为可移植技能包。
限制与边界
资料明确列出不应触发的情况:仅审查代码差异或拉取请求而不分析对话记录(应使用 fable-review);验证应用功能或修复是否通过测试(应使用 fable-verify);存储用户偏好或静态环境事实(应使用 fable-memory);运行定量基准测试或比较提示模型(应使用独立评估协议)。此外,工具要求无头钩子具备 fail-soft 安全性,不得阻塞终端工作流或退出;持久化前必须清洗 API 密钥、令牌、会话 ID、私有本地路径和个人身份信息。