Stop That Shit 深潜:锁与预留机制如何防止 Subagent 预算超订
Stop That Shit 深潜锁与预留机制如何防止 Subagent 预算超订【免费下载链接】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、Claude Code、OpenCode、Pi 等多平台的 AI coding agent 防护插件。它的 delegation-state.cjs 用预留reservation 会话锁session lock两套机制确保你设置的agentsN并发上限不会被重复的 Subagent 生命周期事件超订——这正是 Subagent 预算超订防护的完整指南。什么是Subagent 预算超订先搞懂问题当 AI agent 把任务委派给 Subagent 时宿主平台会不断抛来各种生命周期事件SubagentStart、SubagentStop、tool_result、session.idle……这些事件可能乱序到达宿主先报完成再报启动重复到达同一个启动事件推送两次迟到到达上一个任务早已释放迟到的启动事件又指向旧 agent如果计数器来一条 1走一条 -1重复事件就会把预算虚耗掉新任务被误杀或者同一批预留被重复记账上限形同虚设。Stop That Shit 的答案是不数事件只认账本。账本里每个预留有明确的容量上限重复事件是幂等的锁保证并发进程改账本时不互相覆盖。预留Reservation先占坑再干活预留的核心逻辑在 delegation-state.cjs 的 reserveDelegation()。当你发起一次委派账本会新增一条预留记录结构非常直白字段含义actionId宿主给这次调用分配的唯一 IDpendingCount还没绑定到具体 agent 的待用名额agentIds已经绑定、正在运行的 agent 名单asyncLaunched是否以异步方式启动预算判定只关心一件事活跃总量 所有预留的 pendingCount agentIds 数量之和见 activeDelegationCount()。决策器在 decision.cjs 中检查已预留 本次申请 agentsN时返回AGENT_BUDGET_EXHAUSTED并拒绝——整批拒绝不消耗任何名额。三道防重复的关键设计同一 actionId 只记一次账。acceptedActions表记住每个 action ID 的已计数量inspectDelegation() 一旦发现新请求复用了已接受的 ID就标记duplicateActionId决策器以DUPLICATE_ACTION_ID拒绝decision.cjs#L179-L187。同一 agent 只绑一次。bindSubagent() 检查agentIdsSeen重复的启动事件直接返回原状态什么都不改。已停止的 agent 最多消耗一个名额。先报停、后报启动的乱序场景下迟到的启动只扣减一个pendingCount重复事件依旧幂等。会话锁Session Lock并发进程不互相踩多平台 Hook 的尴尬在于宿主会为每个事件启动独立的 Hook 进程。两个进程几乎同时发起委派谁先读账本都可能看到过期数据最后写入的一方会把对方的预留覆盖掉——这就是并发超订。Stop That Shit 的解法在 state.cjs锁文件即锁。acquireSessionLock() 用独占模式wx标志创建session.lock文件成功者写入pid:UUID作为令牌失败者每 10ms 轮询一次默认 1.5 秒超时。陈旧锁自动清理。持有者崩溃后锁文件会残留超过 10 秒的陈旧锁会被直接删掉重试不会永久卡死。只写不读也走锁。所有合同更新 账本写入都统一走 updateSession()持锁 → 读 → 改 → 写。而纯读操作不加锁零开销。原子落盘。writeState() 先写临时文件再rename原子替换即使写入中途崩溃账本文件也要么是旧的完整版本、要么是新的完整版本永远不会半截损坏。controller.cjs 中有一句直白的注释Separate host processes can issue independent agent launches close together. Serialize delegation reservations across Hook processes.分离的宿主进程可能几乎同时发起独立委派因此跨 Hook 进程串行化预留。 这套锁 原子替换 校验的组合拳在 ARCHITECTURE.md 中被概括为serialize the delegation ledger so concurrent Hook processes cannot oversubscribe the active agent limit序列化委派账本使并发 Hook 进程无法超订活跃 agent 上限。完整生命周期从占坑到释放把账本操作串起来一次委派的标准流转是这样的阶段账本动作来源1️⃣ 发起委派新增预留占 N 个名额applyDelegationFact(accepted)2️⃣ Subagent 启动绑定 agentIdpendingCount -1bindSubagent()3️⃣ 确认完成解除绑定预留清空后整条删除releaseSubagent()/releaseReservation()4️⃣ 会话结束清空全部预留clearDelegations()其中最保守、也最反直觉的一条规则是只有确认的完成证据才能释放名额。工具返回状态未知时预留原样保留resultUnknown宁可用完预算也不冒险放行——decision.cjs#L215 的拒绝理由会明确提示收集到受支持的完成结果之前请勿复用其预留容量。而 decision.cjs#L190-L199 还设了第二道闸当存在无法证明上界的遗留活动DELEGATION_STATE_UNPROVEN在有限预算下会直接暂停新的委派直到确认完成或开新会话。幂等与降级不确定时只损预算不损正确性这套设计值得新手学习的是它对不确定性的取舍重复通知零副作用delegation-state.test.cjs 验证了agent 只绑定一次重复启动不再增加活跃数delegation-lifecycle.test.cjs 更是把 start/stop/after 三种事件的全部 6 种排列顺序各跑一遍要求每种顺序下名额都恰好释放一次。坏数据进入只读恢复账本文件损坏时recoveryState() 会把会话切入只读恢复模式损坏文件原样保留供备份恢复绝不把畸形计数变成免费容量。宁可误拦不可误放watch 模式下放行的委派同样占名额因为宿主确实允许它执行从 watch 切到 guard 后之前占的名额继续有效——预算账从不过夜清零。小结三招守住 agentsN机制解决的问题关键位置预留账本事件重复/乱序导致的重复记账delegation-state.cjs会话文件锁并发 Hook 进程互相覆盖state.cjs#L254-L295完成证据闸门未知状态下的名额泄漏decision.cjs#L189-L217对新手来说Stop That Shit 给出的通用启示其实超越了这个项目本身给共享资源记账时用有上界的预留 幂等的状态迁移 进程间锁替代简单的计数器加减是防止并发超订的教科书式做法。想继续深入可以从 ARCHITECTURE.md 的 Lifecycle transitions 一节和 test/delegation-state.test.cjs 的边界用例读起。【免费下载链接】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),仅供参考

相关新闻

给AI智能体定规矩:Agent Client for Obsidian如何用Context Files定制专属上下文

给AI智能体定规矩:Agent Client for Obsidian如何用Context Files定制专属上下文

给AI智能体定规矩:Agent Client for Obsidian如何用Context Files定制专属上下文 【免费下载链接】obsidian-agent-client Bring AI agents into Obsidian via Agent Client Protocol (ACP), such as Claude Code, Codex and Gemini CLI. 项目地址: https://gitco…

2026/10/4 4:32:19 阅读更多 →
永磁同步电机离散控制系统建模与实现

永磁同步电机离散控制系统建模与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 8:11:39 阅读更多 →
Deepin-Wine移植指南:在Ubuntu/Debian上稳定运行微信QQ

Deepin-Wine移植指南:在Ubuntu/Debian上稳定运行微信QQ

简介:本资源是Deepin-Wine环境在Ubuntu/Debian系统上的完整移植实现包,面向Linux桌面用户、系统运维人员及开源软件适配开发者,解决跨发行版复用Deepin优化版Wine框架的难题,尤其适用于需在非Deepin系统中稳定运行微信、QQ等Windo…

2026/10/4 4:31:19 阅读更多 →

最新新闻

Canny边缘检测实战:用OpenCV修复残损简牍文字

Canny边缘检测实战:用OpenCV修复残损简牍文字

简介:这份docx文档是一篇关于Canny边缘检测算子用于简牍文字修复的技术文章,适合图像处理、文物保护及数字人文方向的读者参考。资源仅为1个docx文件,大小约8KB,属轻量级学术文档。文章以长沙简牍博物馆藏品为对象,完整…

2026/10/5 8:15:05 阅读更多 →
SpringBoot+Vue流浪宠物管理系统全栈开发实战与部署详解

SpringBoot+Vue流浪宠物管理系统全栈开发实战与部署详解

这标题看着眼熟吧?“基于SpringBootVue的web流浪宠物管理系统设计与实现”,虽然项目名里的“管理系统”重复了一遍,但这类源码在毕业设计和实际小项目里出现频率极高。说白了一个流浪宠物管理系统,就是把线下救助站里的宠物登记、…

2026/10/5 8:15:05 阅读更多 →
单图生成3D照片:One Shot 3D Photography原理与工程实践

单图生成3D照片:One Shot 3D Photography原理与工程实践

先说一个我感触很深的场景。朋友圈里刷到那种“照片会动”的短视频——镜头缓缓绕过去,前景的人物和背景像被一层层拉开,画面呈现出真实的视差感。以前这种效果只能靠拍视频或者多视角照片重建才能实现,直到我读到 One Shot 3D Photography 这…

2026/10/5 8:15:05 阅读更多 →
医疗大模型微调实战:基于DeepSeek和LoRA的辅助诊断全流程

医疗大模型微调实战:基于DeepSeek和LoRA的辅助诊断全流程

简介:一份面向医疗AI从业者与深度学习开发者的实战型PDF文档,围绕将DeepSeek大模型微调为『资深医生』辅助诊断模型展开。文档从医疗行业与大模型结合背景切入,系统梳理DeepSeek架构特点、多头注意力机制与知识融合能力,并重点讲解…

2026/10/5 8:15:04 阅读更多 →
C++模板进阶:从参数设计、特化到分离编译的工程实践

C++模板进阶:从参数设计、特化到分离编译的工程实践

模板这玩意儿,在C里属于典型的"用起来爽、学起来痛"。特别是你从普通函数、普通类过渡到模板的时候,会突然发现世界变复杂了:参数不再是简单的类型,特化、偏特化一堆概念砸过来,好不容易写完了,编…

2026/10/5 8:15:04 阅读更多 →
Rust年度贡献观察:从许杰友与Xutao Song看修补型贡献的价值

Rust年度贡献观察:从许杰友与Xutao Song看修补型贡献的价值

又到年底,我在整理全年 Rust 日报的归档文件时,发现有两个名字几乎贯穿了整个年度的选题记录:许杰友,和 Xutao Song(社区里习惯用拼音署名)。他们不是什么明星开发者,没有上过大会主舞台&#x…

2026/10/5 8:14:04 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →