dev.to | 📄 原文链接 | 2026-10-13 收录

一个 rm -f 悄悄关掉了我的崩溃检测

来源:dev.to — 2026-10-12

📋 概述

守护进程崩溃、重启,然后什么都没记录——没有缺口、没有警告、没有日志。代码本身是对的,是测试的清理步骤删掉了恢复逻辑所依赖的那个文件。这来自 agentwatch 项目,属 agentsec-ecosystem 那套面向 AI 代理、与 harness 无关的开源安全工具。设计上,崩溃后重启时守护进程会合成一条「记录缺口」记录,用来证明录制被打断过、以及大致断了多久——这是故障分类学里的 F1,系统必须检测并记录的一类一等故障。区分「第一次启动」和「从崩溃中回来」的信号是一个文件 daemon.pid:launcher 写下它,守护进程只读它,进程死掉后文件留下,下次启动看到它就说明自己之前运行过。测试却把它当成残留垃圾清掉了,于是 pid 文件不存在,恢复函数在第一行就返回,什么都不会发生。作者的第一个假设是缺口检测坏了,但这个早退逻辑本身是正确的——错的输入,因为测试把输入删掉了。作者总结说这个模式可以推广到任何以文件是否存在为条件的逻辑:迁移标记、健康文件、锁文件,不理解自己在删什么的清理步骤,会悄悄把一个功能关掉。

🔑 核心要点

💡 金句

代码是对的;是测试的清理步骤删掉了恢复逻辑所依赖的那个文件。
← 返回 dev.to 首页