来源:GitHub (★806)
URL: https://github.com/lennney/stop-that-shit
精读日期:2026-08-31
模型:DeepSeek V4 Flash(AI 生成,人工未审校)
正文获取:全文

一、核心论点/事实

  • Stop That Shit 是一个面向 AI coding agent 的多平台 Hook + Skill Guard 插件,核心目标是拦截 agent 无需求生成的哈希、校验和与任务范围膨胀(task-scope creep)。
  • 项目支持 5 个平台/Adapter:Codex、Claude Code、OpenCode、Hermes Agent CLI 和 Pi,四套 Adapter 共用同一套 Guard、Skill、成对案例与只存元数据的本地 Runtime。
  • 运行时要求:一般宿主需要 Node.js 18+;Pi 0.84.4 自身要求 Node.js 22.19+;OpenCode 1.18.18 或更高版本可全局安装。
  • 插件不数代码行数,也不把 diff 越小当成越好;它只问:这一步是用户要求的,还是当前代码、数据和验收条件确实需要的。
  • 维护者启用后个人观察:没有再遇到"没有实际消费者却先生成 SHA-256"的动作;该观察与 paired eval 分开记录。
  • 默认拒绝可识别的新 hash 操作;用户明确要求或仓库代码/发布流程证明必要时,可通过 change hash=allow 等命令显式放行。
  • 项目为首个多平台正式版本,并包含一个定向 pilot(Codex 安装方式、GPT-5.6 记录和 paired eval 见文档)。

二、方法/架构拆解

  • 三层架构
  • Skill:负责语义判断,提供 advisory 模式(不拦截,只提示)。
  • Hook:在工具运行前检查明确边界,可机器拦截越界动作。
  • Adapter:把 Codex、Claude Code、OpenCode、Hermes Agent CLI 和 Pi 的事件翻译成同一套决策接口;其他 harness 需提供等价的 before-action 事件。
  • Guard 行为:确认某个动作越界时返回拒绝响应(红章),但不会猜测任务授权,也不会返回 permission deny;始终把 host effect 标为不确定(拒绝响应不证明宿主最终未执行动作)。
  • 命令接口
  • review:Review diff,只报告问题,不修改。
  • change:修复失败的配置测试 / 修复行为,支持 files=deps=allowhash=allowagents=1 等参数。
  • label evt_... correct|incorrect|inconclusive:显式标记事件结果。
  • 安装方式(各平台):
  • Claude Code:claude plugin install stop-that-shit@stop-that-shit
  • Codex:codex plugin marketplace add lennney/stop-that-shit + codex plugin add stop-that-shit@stop-that-shit
  • OpenCode:opencode plugin github:lennney/stop-that-shit -g
  • Hermes:hermes plugins install lennney/stop-that-shit/.hermes-plugin(CLI 用户需新进程/会话,Gateway 用户需执行额外命令)
  • Pi:pi install /absolute/path/to/stop-that-shit(tag 发布后改用固定 Git tag)
  • Skill-only 路径$skill-installer Install stop-that-shit from https://github.com/lennney/stop-that-shit/tree/0.1.0/skills/stop-that-shit;不需要 Hook 信任,但不能机器拦截越界动作。
  • 评测方法:paired eval 使用成对案例,一组有效案例只改一个关键事实,其余条件不变;Bad Case 标出该停的位置,Good Case 保住必要工作;只有可复现、高置信度的部分才进入 Guard。paired 命令默认只打印 72 个 cell 的计划,不调用模型;真实运行必须使用只启用本插件的独立 Codex home。
  • 典型拦截对象:没有消费者的 checksum 和 guard;无用户决策却写成一排界面免责声明的内部风险;该做工程判断时改成评分表和反复审计;为没人要求的将来加 feature flag、迁移框架和包装层。

三、值得注意的局限/争议

作者承认的局限

  • Guard 只检查 covered Hook 路径上的任务授权,安全隔离由宿主 sandbox 负责,不替代宿主安全机制。
  • Guard 返回拒绝响应不证明宿主最终没有执行动作,host effect 始终标为不确定。
  • 维护者的"未再遇到 SHA-256"观察是个人经验,与 paired eval 分开记录,不构成严格证据。
  • Skill-only 路径不能机器拦截越界动作,也不会改变宿主原有的 sandbox 和 approval 设置。

AI 判断的局限/争议

  • "无需求"的判断标准依赖用户意图和仓库上下文,存在主观性;插件不数代码行数,但"当前代码、数据和验收条件确实需要"的判定仍可能误伤合理防御性工作(如发布流程确实消费校验和的情况)。
  • 多平台 Adapter 共用同一套决策接口,但不同宿主的事件语义和权限模型差异可能未被完全覆盖,存在边界情况漏判风险。
  • 项目强调"Good Case 和拦截同样重要",但成对案例的构建质量直接决定 Guard 精度,若案例覆盖不足,可能过度拦截或漏拦截。
  • 插件只处理"能明确判断的边界",对模糊场景(如"该做工程判断时改成评分表")依赖 Skill 语义判断,实际效果可能因模型能力而异。

四、与 RRLab 研究的关联

  • Harness 工程:本项目提供了多平台 Adapter 统一事件接口的参考实现,RRLab 在构建多模型 harness 时可借鉴其"同一套决策核心 + 平台适配层"的架构模式,降低多后端集成成本。
  • 多模型协同:插件展示了如何约束 agent 行为边界(任务授权),RRLab 在多模型协同场景中可参考其"Skill 语义判断 + Hook 机器拦截"的分层机制,防止模型间互相产生无意义副作用。
  • 模型评测:paired eval 方法论(成对案例、单变量控制、Bad/Good Case 区分)可直接迁移到 RRLab 的 agent 行为评测中,用于量化"任务范围控制"能力;72-cell 计划打印 + 独立 home 的隔离评测设计也值得借鉴。
  • Agent 落地:插件解决的是 agent 实际落地中的"防御性工作膨胀"问题,RRLab 在 Agent 产品化时可参考其"默认拒绝 + 显式放行"(change hash=allow)的交互设计,平衡安全与效率。
  • AI 原生产品:作为开源插件,其"红章拒绝 + 用户可覆盖"的反馈机制、以及"只存元数据"的本地 Runtime 设计,对 RRLab 构建 AI 原生工具链的隐私与可控性有参考价值。

本笔记由 DeepSeek V4 Flash 自动生成,未经人工审校。原文链接:https://github.com/lennney/stop-that-shit