恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Stop That Shit 架构拆解:6 个宿主适配器如何共享同一个 ControlEvent v2 决策核心
首页
资讯中心
/
Stop That Shit 架构拆解:6 个宿主适配器如何共享同一个 ControlEvent v2 决策核心
Stop That Shit 架构拆解:6 个宿主适配器如何共享同一个 ControlEvent v2 决策核心
发布时间:2026/10/4 3:33:28
Stop That Shit 架构拆解6 个宿主适配器如何共享同一个 ControlEvent v2 决策核心【免费下载链接】stop-that-shitStop That Shit别再造史了面向 Codex/GPT 场景的多平台 Hook Skill Guard拦截 AI coding agent 无需求的哈希、校验和与任务范围膨胀。 A multi-platform Hook Skill Guard for AI coding agents in Codex/GPT workflows: stop unrequested hashes, checksums, and task-scope creep.项目地址: https://gitcode.com/gh_mirrors/st/stop-that-shitStop That Shit别再造史了是一款面向 Codex/GPT 等 AI coding agent 的多平台 Hook Skill Guard拦截没有需求的哈希校验和、多余防御和任务范围膨胀。它的架构很克制——6 个宿主适配器只干翻译这一件事所有要不要拦的判断都交给同一个宿主无关的决策核心。本文带你快速看懂这套一个大脑、多张面孔的设计。 问题6 种宿主事件6 套方言Stop That Shit 目前支持 6 个宿主Codex、Claude Code、OpenCode、Hermes Agent CLI、Pi、Oh My Pi。麻烦在于每个宿主的钩子事件名、字段结构、拦截时机都不一样宿主原生事件举例对应通用事件CodexPreToolUse/UserPromptSubmitaction.before/prompt.submitClaude CodePreToolUse/SubagentStartaction.before/subagent.startHermespre_tool_call/pre_llm_callaction.before/prompt.submitPitool_call/inputaction.before/prompt.submit如果在每个宿主里各写一套判断逻辑规则会慢慢漂移——A 宿主拦哈希B 宿主忘了。Stop That Shit 的解法是把判断和翻译彻底拆开适配器只负责把宿主的方言翻译成统一事件决策核心只认统一事件完全不关心它来自哪个宿主。 ControlEvent v26 个适配器的共同语言翻译的产物就是ControlEvent v2一个字段非常小的 JSON 事件。它只有 7 种事件类型定义在 src/control-protocol.cjssession.start/session.end—— 会话起止prompt.submit—— 用户提交提示词任务指令从这里进入契约action.before/action.after—— 工具调用前后拦截只发生在 beforesubagent.start/subagent.stop—— 子代理生命周期一个action.before事件长这样节选自 HOST-ADAPTER-CONTRACT.md{ protocolVersion: 2, lifecycleVersion: 2, kind: action.before, sessionId: opaque, action: { name: Edit, mutability: write, affectedPaths: [src/config.cjs], hashIntent: false } }其中最关键的字段是mutability可变更性只有 5 个取值read、write、delegate派生子代理、control控制类操作、unknown。适配器要做的工作就是把宿主五花八门的工具调用归类到这 5 个桶里。protocolVersion和lifecycleVersion两个版本号则是一道门禁src/controller.cjs 里只有同时声明了两个版本的适配器其生命周期事实才允许修改账本老适配器借用新协议号却保留旧行为时会自动降级到兼容路径而不是把错误状态写进会话。 同一个大脑handleControlEvent 如何消化所有事件所有适配器最终都调用同一个入口——src/controller.cjs 的handleControlEvent。它按事件类型分派事件核心动作prompt.submit解析任务指令如review -- 只审查不修改更新当前契约action.before调用decide()做拦截判断必要时原子地预留子代理配额action.after根据完成事实释放或保留配额其余生命周期事件更新子代理账本回注契约上下文真正的判断逻辑在 src/decision.cjs它与宿主完全无关只做基于可观察事实的硬决策非修改模式下发生了写操作写入超出files明确划定的文件范围未授权就添加依赖派生子代理超过agentsN上限高置信度的哈希/校验和行为但没给hashallow。决策还分三个档位src/controller.cjsOFF不检查、不记录OBSERVING观察检查并记录但永不拒绝ARMED武装显式任务契约生效可以返回 permission deny。对应四种 SHIT 家族IIntent 意图越界、HHash 无用防御、SScope 范围膨胀、TThrash 任务打转——这正是 src/controller.cjs 里FAMILY_NAMES的由来。 6 个适配器各自薄成什么样每个适配器就是事件映射表 工具分类器 响应渲染源码统一放在 src/adapters/ 目录适配器事件翻译工具分类Codexcodex-hooks.cjscodex-tool-classifier.cjsClaude Codeclaude-hooks.cjsclaude-tool-classifier.cjsOpenCodeopencode-hooks.cjsopencode-tool-classifier.cjsHermeshermes-hooks.cjshermes-tool-classifier.cjsPipi-hooks.cjspi-tool-classifier.cjsOh My Piomp-hooks.cjsomp-tool-classifier.cjs以 Codex 为例codex-hooks.cjs 里就是一张 5 行的映射表SessionStart → session.start、PreToolUse → action.before……然后构造带protocolVersion: 2, lifecycleVersion: 2的事件对象丢给handleControlEvent。Claude 和 Hermes 的适配器结构几乎一模一样——换宿主 加一个映射表而不是重写一套规则。各宿主的包级入口也保持薄壳风格opencode/stop-that-shit.mjs、pi/stop-that-shit.ts、omp/stop-that-shit.ts各自只负责把宿主回调接到共享控制器上。⚖️ 边界适配器是护栏不是沙箱架构上有一条值得记住的边界HOST-ADAPTER-CONTRACT.md宿主负责执行、文件系统隔离和权限提示STS只负责用户的任务约束文件范围、哈希/依赖授权、子代理预算适配器负责工具身份和事件翻译不靠名字前缀猜测工具身份。同时观察到的Guard 响应与宿主实际效果被刻意分开审计记录里hostEffect永远是unobserved因为 deny 响应并不证明宿主一定阻止了执行。所有检查即使放行都会写入 src/runtime-audit.cjs 的元数据审计让统计数字有个真实的分母。✅ 这套架构给普通用户带来的好处行为一致在 Claude Code 里被拦的哈希在 Codex 里同样会被拦因为判断只有一份新增宿主成本低照着 HOST-ADAPTER-CONTRACT.md 的 4 项条件稳定会话 ID、提示词入口、可拒绝的 before 事件、足够分类的工具信息实现一个薄适配器即可可审计$stop-that-shit status/runtime命令随时能查本会话的检查次数和拒绝次数失败安全状态文件损坏时进入只读恢复而不是崩溃审计写失败也不改变控制决策。 延伸阅读架构总览ARCHITECTURE.md适配器契约与事件映射细节HOST-ADAPTER-CONTRACT.md契约解析与指令语法src/contracts.cjs子代理配额账本src/delegation-state.cjs会话状态存储src/state.cjs规则本体Stop Ladderskills/stop-that-shit/SKILL.md18 个 Bad/Good 判定用例cases/README_CN.md一句话总结6 个适配器负责听懂同一个 ControlEvent v2 决策核心负责做对——这就是 Stop That Shit 能在多宿主间保持判断一致的架构秘密。【免费下载链接】stop-that-shitStop That Shit别再造史了面向 Codex/GPT 场景的多平台 Hook Skill Guard拦截 AI coding agent 无需求的哈希、校验和与任务范围膨胀。 A multi-platform Hook Skill Guard for AI coding agents in Codex/GPT workflows: stop unrequested hashes, checksums, and task-scope creep.项目地址: https://gitcode.com/gh_mirrors/st/stop-that-shit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考