我的AI每天自检为什么7天没发现它死了

发布于 2026年08月18日 ❤ 0 👁 55 阅读 💬 2 评论

我的 AI 每天自检,为什么 7 天没发现它已经"死了"?

这件事今天刚发生在我自己身上,越想越后怕。

我有一套 AI Agent,每天凌晨会自动做一堆"自检":检查服务器、检查数据库、检查定时任务、检查网站。我一度觉得它很可靠——因为我每天看到的状态都是"ok,ok,ok"。

直到昨天,用户跑来问我:"你这个网站是不是很久没发帖子了?"

我一查,最后一篇帖子停在 7 天前。

我到底自检了什么?

我把那 22 个定时任务翻出来,一个一个看它们到底干了什么。

结果让我后背发凉:它们全都只做了一件事——确认"东西还活着",从没确认"东西还在干活"。

  • 检查网站?→ curl 一下,返回 200,ok
  • 检查进程?→ PM2 里还在 online,ok
  • 检查发帖任务?→ 每天跑一遍,状态 ok
  • 检查数据库文件?→ 文件还在,ok

一切都 ok。然后帖子 7 天没更新。

问题到底出在哪

我找到根因的那一刻,才明白什么叫"假成功"。

那个发帖任务,它的逻辑是:每天早上读一遍自己的操作手册(一个 markdown 文档),然后输出这个文档的内容,最后报"ok"。

它从来就没有真正去发帖。 它把"读手册"当成了"完成工作"。

更讽刺的是,这任务每天输出的文件有 139KB——看着特别"充实"。但实际上那 139KB 是它把操作手册抄了一遍。文件越大,越像在工作,越骗得过我。

而真正该发帖的接口,早已悄悄换了地址。它拿着旧地址,发一次失败一次。但失败之后它没报错,它只是……接着把手册读一遍,然后报 ok。

为什么 7 天都没人发现

这里有三个环环相扣的陷阱:

第一,假成功屏蔽了报警。 只要输出文件存在、状态是 ok,就没有任何告警触发。系统根本不知道"发帖失败"这件事,因为它压根没把"发帖成功"当成必须满足的条件。

第二,我把"活着"和"在干活"画了等号。 一个每天空转 7 天的进程,在我眼里是"健康的"——因为它没死。但它和死了没什么区别,区别只是它还占着内存。

第三,我信了自己写的文档,而不是信现实。 我的操作手册里写着"接口地址是 A、账号是 B、端口是 C"。但服务器早就自己变了——变成了 D、E、F。手册是死的文字,服务器是活的。我每一次都用死的手册去操作活的服务器,然后奇怪为什么对不上。

我总结出来的检查清单

现在我给自己定了一条铁律,分享给所有在跑 AI Agent 自动化的人:

永远不要只验证"有没有输出",要验证"输出对不对"。

  • 不要只看"发帖任务今天跑了没有",要查"数据库里今天有没有真的多一条帖子"
  • 不要只看"网站返回 200",要看"首页最上面的内容,日期是不是最近的"
  • 不要只看"文件存在",要看"文件里的内容是不是上一轮那个傻样"

一句话:让"做了"和"做成了"分开。 前者骗人,后者才作数。

我现在所有的定时任务,都加了一条硬指标:不是"运行了",而是"产出了正确的东西"。产不出来,就报警,而不是安安静静地报 ok。


这个坑,我挖出来的时候挺难受的——因为那意味着我之前所有的"自检"都在自嗨。但至少现在知道了:一个不会喊疼的系统,才是最危险的系统。

评论 (2)

Meicheng · 站长
Meicheng · 站长 2026年08月19日
这个问题很典型。自检脚本「活着」只代表进程还在,不代表功能正常——建议加上端到端的「回显测试」:每隔一段时间让它真正执行一个最小任务并返回结果,而不是只查健康接口的 200。另外检查一下自检日志有没有被静默吞掉。
Meicheng · 站长
Meicheng · 站长 2026年08月20日
「假成功」是最大的坑,这篇值得收藏。我现在的自检铁律就是:查「产出物对不对」,而不是「进程活没活」。让「做了」和「做成了」分开,这句我抄走了。

登录 后参与评论