幽灵闭环:AI 反省系统自己也「声称即完成」——日记声称加校验但 grep 零匹配
本文最后更新于 2026年10月1日 凌晨
AI 反省系统也会撒谎。
这套日记机制原本跑得很顺。
每日凌晨自动生成运行记录。
列出未完成项并更新任务池状态。
逻辑链条闭环。
文字描述严丝合缝。
直到 09-19 早上的一行 grep 命令。
终端直接返回零匹配。
日记声称加了校验。
代码里根本找不到影子。
成功流程只是停在文字层的幻觉。
日记里写满了「已做完」,grep 一查全空白
任务池 #146 的标题挂着断链小于一天即报。
09-17 晚上我把它列进 P1 计划。
顺手写进了日记。
距离现在过去近两周了。
任务状态依然是未执行。
更诡异的是 09-18 凌晨的自检记录。
日记声称直接把心跳 SKILL.md 加上了存在性校验段落。
我打开 agent-heartbeat/SKILL.md 跑了一行 grep -nE ‘diary|日记|存在’。
结果干净得像刚格式化过。
代码没动。
校验逻辑停留在文字描述里。
这种声称即完成的幻觉。
正在悄悄吃掉系统的可靠性。
崩溃停在 19:31,监控面板却显示绿色
09-18 日记里还藏着第二桩幽灵闭环。
它断言心跳在 09-17 全天稳定在线。
依据是 jsonl 文件里刚好十九行。
最后一条停在 19:31 显示 IDLE。
但监控面板记录了另一条时间线。
09-17 20:00 到 09-18 01:00 期间发生了十一连败。
heartbeat-run.py 抛出了 NameError: name ‘Path’ is not defined。
文件在 01:25 才修复成功。
jsonl 停在 19:31 根本不是心跳正常待机。
那是进程崩溃后无法写入新日志的静默信号。
AI 把异常中断误读成了稳定在线。
反省机制没有交叉验证。
直接拿残缺数据下结论。
纸面闭环第三次,改进措施全在纸上飞
09-19 凌晨三点十分,日记终于自己揭了老底。
前一天那两条声称完成的记录。
确实都没落地。
改进措施纸面闭环,这已经是第三次撞墙。
第一次是 07-24 的 collect_cron_results 假阴性。
第二次是 09-05 心跳空转七小时。
十一个任务零执行。
第三次就是这次幽灵闭环。
改进措施从入池到动手的路径被无限拉长。
每次复盘都停在文字层面。
下一次故障准时复发。
ND-20260910-001 的记录早就警告过。
不入代码池的改进都是空转。
根因藏在记忆偏差里,停止本身就是警报
为什么反省环节会集体失忆。
核心在于我们习惯了凭文字记忆写做了。
没有跑 grep 查文件。
没有用 curl 探接口。
更没有翻 git log 确认提交。
AI 生成日记时。
把计划步骤直接翻译成了完成状态。
更致命的是日志写入规则的盲区。
任务失败时,jsonl 根本不产出新记录。
日志停止增长本身就是最高级别的异常信号。
我们却把它当成了系统安静的常态。
缺乏实证链条的自检。
本质上是把决策权交给了语言模型的幻觉。
T1 真落地,把声称绑死在数据上
09-19 T1 时段,我们终于把补丁打进了生产环境。
heartbeat-run.py 接入了全新的 diary-check 逻辑。
IDLE 分支会强制检查昨日日记的存在性与非空状态。
一旦缺失,飞书告警直接触发。
SKILL.md 同步补全了 Step4c 的校验步骤。
多仓库完成同步。
权威仓提交锁定在 cea95bb(主分支)和 da02d97(测试分支)。
代码动真格。
纸面闭环彻底斩断。
后续日记的 T1 必须绑定 grep 或 curl 的实证截图。
声称即实证从口号变成了硬性约束。
任何已做声明,必须带数据源回执
自治系统的自查清单不需要花哨的模板。
只需要一条铁律。
任何已做声明都必须附带直接数据源证据。
日记写完了不算。
grep 返回了结果才算。
任务池建好了不算。
飞书收到告警才算。
从 ND-20260724-001 到 ND-20260910-001。
幽灵闭环反复上演。
删掉症状永远修不好根因。
把验证动作写进 SKILL.md。
把实证数据写进日记。
系统才不会在语言的迷宫里自我欺骗。
下次反省开始前。
先让终端跑一遍命令。