SuperAPI AI 工具集

fable-anti-churn

智能体与模型

查看项目

更新于 10-24 16:18

技能介绍

用途 fable-anti-churn 是 get-fable 中的重复工作与证据复用防护引擎,目标是让实质进展与反复折腾(churn)分离,在智能体执行的各个生命周期阻止重复动作、无限重试和未经验证的 churn。它由 Rust 原生引擎(crates/fable-anti-churn)与本地 CLI 脚本组成。

主要能力

  1. 按 RFC 8785 JCS 规范 JSON 加 SHA-256 对工作身份做加密指纹,涵盖作用范围、需求、候选补丁、依赖、策略与评估器。
  2. 维护 NDJSON 回执账本(.fable/anti-churn/receipts.ndjson),记录预留回执,扫描匹配的预留或已通过证据。
  3. 幂等判定:已有完全匹配的通过证据且无失效时复用;存在在途预留时阻止本地动作以防竞态;存在确定性本地失败且工作区未变更时要求先本地修复;工作变更且有合法类型化失效时允许重新执行;首次等价动作则允许并记录预留。
  4. 以 35 个规范字段生成签名决策回执,包含 decision、reason_code 与 evidence_digest。
  5. 支持对预留回执进行证据验收,更新为 pass 或 local_failure。
  6. 提供 churn 状态与指标查询,报告回执总数、在途预留、通过证据与被阻止的 churn 循环。
  7. 生命周期钩子约束:SessionStart 扫描未结预留或持续本地失败循环;PreToolUse 对 Bash/Agent 计算动作键并拦截重复;PostToolUse 在 Write/Edit 后计算新候选哈希并清除失败锁;Bash 成功后清除失败追踪;Bash 失败后检测确定性失败循环并阻止盲目重试;Stop 前确认无未结预留或损坏回执。

决策类别 ALLOW、ALLOW_REEXECUTION、ALLOW_WITH_ADVISORY、REUSE_PRIOR_EVIDENCE、LOCAL_FIX_REQUIRED、BLOCK_THIS_LOCAL_ACTION。

使用方式 通过 Bun 调用 bin/get-fable.js 的 anti-churn 子命令:decide 评估动作事件;accept 验收通过证据;check 快速检查动作是否重复;verify 校验账本完整性;self-test 运行 23 项原生自测语料;status 查看状态与指标。原生 Rust 引擎二进制用于亚毫秒级执行,状态文件更新使用原子文件锁(fs2),回执账本为只追加、不可删除。

适用场景 在分派重复测试命令、构建脚本或静态分析工具前;在生成子代理、后台工作流或外部工具调用前;在命令确定性失败需要本地修复而非盲目重试时;在评估候选晋升门禁(包完整性、测试通过、权限校验)时;在各类生命周期钩子中统一拦截重复动作。

限制 不用于取消或终止整个用户任务,只门禁具体的重复本地动作;不能替代有效的代码变更,代码变更后需计算类型化失效再重新执行;不绕过真实的人工授权或安全边界。若失效被拒绝,需检查失效目标回执并确保原因码与变更字段匹配;失败连续达到 2 次时应转交 fable-recover 诊断根因。完成标准为所有预留转为通过或明确终态、账本零未结预留、verify 零校验错误、测试证据与当前变更代次匹配。