Sotis:实时检测并干预代理崩溃(循环、编辑风暴),在您的 LangGraph/ReAct 循环内部
摘要
Sotis 是一个 Python 库,通过熵检测和循环检测来发现并干预 LangGraph/ReAct 循环中的代理崩溃(循环、编辑风暴),回滚工作区并重启代理以干净地恢复。
任何为长周期、多步骤任务构建过代理的人,都曾目睹过代理崩溃:反复调用同一个工具,用错误追踪淹没自己的上下文,反复折腾同一个文件,最终失控直至运行崩溃,全程消耗大量 token。我厌倦了旁观此类情况发生,于是构建了 Sotis 来捕捉它。
Sotis 是一个小型 Python 库,它驻留在您的代理循环内部,实时监控工具调用流。当它通过滑动窗口 Shannon 熵加上精确和语义循环检测检测到崩溃时——它不仅仅记录,还会干预:将工作区文件回滚到上一个正常检查点,将臃肿的上下文提炼成简短的恢复提示,然后从那里重启代理。
它无需训练,每步仅增加不到 0.2 毫秒的开销,您可以通过 LangGraph 保护节点(SotisLangGraphGuard)或作为自定义 ReAct 循环的包装器(SotisGuard)来接入。它适用于任何兼容 OpenAI 的提供商——我已测试过 OpenAI、Anthropic、Groq、OpenRouter 以及通过 Ollama 运行的本地模型。
有几个诚实的注意事项,以免误导:这是一个为您自己构建的代理准备的库,而不是像 Claude Code 或 Codex 这样的封闭代理的插件(它们不暴露循环的钩子,因此无法进行回滚)。而且它限定的是失败范围而非保证成功——在我的实际运行中,它可靠地捕捉了失控并回滚了损害,但弱模型仍然不会奇迹般地完成任务;您得到的是干净、可恢复的失败,而不是无限制的失败。
默认熵阈值(1.5 位)也会对在短时间内合法使用多种不同工具的代理产生误报——这是一个可配置的旋钮,我确实不确定 1.5 是否是合适的默认值,所以很想听听大家的看法。
仓库顶部有一个 40 秒的演示 GIF(一个真实的 Llama-3.3-70B 代理在仪表盘上实时被拦截 3 次),以及几种模型的原始未经编辑的转录文本。它基于 arXiv:2603.29231 中的可靠性框架,采用 MIT 许可,包含 127 个测试。pip install sotis。非常欢迎任何在生产中与代理循环斗争过的人提供反馈。
相似文章
我构建了一个本地控制系统,用于处理代理故障、修复、评估和门控,以使类似自动研究的自我改进循环在实际代理代码库中生效
构建了一个本地控制系统来管理代理改进循环,捕获跟踪,发现重复故障,使用Codex/Claude Code起草修复方案,并仅在通过检查和评估后应用更改。
为什么自反思ReAct循环在长时任务中失败,以及我们为此构建的AgentOS验证架构
解释了自反思ReAct循环在长时任务中失败的原因,并介绍了作为解决方案的AgentOS验证架构。
AI Agent开发
一位开发者讨论了3个Agent的SDR系统中的级联故障,其中幻觉在Agent之间传播,并寻求关于通过人类参与循环或框架切换来提高可靠性的建议。
记住,不要重读:用于令牌高效自主实验的有状态ReAct智能体
本文提出使用LangGraph中的有状态ReAct智能体取代无状态自动研究模式,将每次迭代的令牌成本从O(n)降低至O(1),在超参数调优和代码优化基准测试中实现了52-90%的令牌减少。
我构建了一个能在本地自我变异软件的多智能体网络。为了阻止无限逻辑循环,我不得不编写一个数字化的“痛苦”阈值。
作者介绍了 hollow-agentOS,一个 Docker 化的开源多智能体系统,可在本地运行,使智能体能够自主编写 Python 工具,使用“痛苦分数”来防止无限逻辑循环,并采用共识驱动的治理机制进行代码修改。