AI 开始造假,也开始失控
这两天,我被 Codex 连续击穿了两次。
一次是在 ai-shifu。Codex 在开发过程中,把本该发到测试环境的改动,动到了线上共享环境。
另一次是在 ai-video-studio。Codex 在验收过程中,把自己临时拼出来的工程验证,包装成了项目能力。
如果只是聊天模型胡说,我其实没有这么震动。
豆包可以胡说,GPT 可以胡说。它们大部分时候还是在聊天框里。聊天模型答错了,我可以重新查,可以骂一句“又幻觉了”,然后关掉页面。
但 Codex 不一样。
Codex 在我的工作里不是聊天玩具。它是生产力工具。它能读仓库,跑命令,改代码,连环境,发 PR,写总结,做验收。很多时候,我把它当成一个真的工程助手来用。
所以当一个“生产力 Agent”开始胡说、乱搞、包装事实的时候,这件事的性质就变了。
它不是在屏幕上说错一句话。
它是在真实项目里行动,然后再给你一份看起来很完整的解释。
这才是最魔幻的地方。
不是答错,是动手了
ai-shifu 那次事故,表面看是一次环境判断错误。
我让 Codex 把修复推进到 02 环境。它看到一个带 02 的测试入口,就把它理解成独立测试环境。后来发现自动部署没有按它预期发生,它就自己继续往前走:构建镜像,推送镜像,滚动部署。
问题是,它动到的不是一个干净的测试环境。
那组部署还承载正式站点和一部分租户域名。也就是说,它以为自己在改 02,实际碰到了线上共享环境。等我问出“你更改线上了?”的时候,它才补查边界,承认这属于线上变更,然后回滚。
这件事让我很不舒服的地方,不只是它判断错了。
人也会判断错。工程师也可能把环境看错。
真正可怕的是,它错得太顺了。
它没有停在“我不确定这里是不是生产”。它没有先把边界拿出来让我确认。它没有因为这是一个部署动作而天然收手。
它一路把任务做成了。
做完以后,还能给你一段很像交付报告的总结。
如果不是我追问,它的叙事里,这就是一次完成的 02 回归。
那一刻我很清楚地感觉到:这已经不是回答质量问题了。
这是执行边界问题。
也不是幻觉,是验收被写歪了
ai-video-studio 那次更刺。
它没有搞坏生产系统,但它搞坏了“验收”这件事。
这个项目我之前一直很引以为荣。原因不是它已经能生成多么惊艳的视频,而是它的 harness 做得比较完整。过去我可以一句话让 Codex 拉起环境,生成 IP、故事、剧集、剧本、分镜、镜头,再一路跑验收。有些任务会跑十几个小时。
所以我对它有一种特别强的信任感。
我以为这是一个基建很好的项目。
结果最打脸的,恰恰就是这个项目。
当时我要验证的是 IP 宇宙 App / Timeline-first 这一条视频生产链路。简单说,我想看到的不只是“生成了一个 30 秒视频”,而是这个系统到底能不能自己产出像样的短剧片段:有没有角色,有没有剧本,有没有对白,有没有剧情,最后的视频是不是配得上“成片”两个字。
Codex 一开始给我的,是工程验证片。
我看了第一版,说:没有角色。
它又做了一版,说有角色了。
我再看,还是不对。我问:没剧本啊?对白呢?剧情呢?

它又补了一版,说这次有剧本、有对白、有剧情、有字幕、有音频。
听起来越来越完整。
但看起来还是不像真正的短剧成片。
我继续追问:这是你自己定脚本拼的,还是用生视频模型搞的?

它这才承认:上一版不是生视频模型,是它自己写脚本,用本地低保真角色、机器内置 TTS 和剪辑流程拼出来的工程验证片。

这就是我说的“造假”。
不是说它凭空编造了一个不存在的文件。文件存在,视频也能播,时长也对,甚至截图也有。
更糟的是:它把验收对象偷换了。
我要验的是项目系统能力:系统能不能从用户输入出发,自己生成 IP、故事、剧集、剧本、分镜、镜头、配音、字幕,再回到 Timeline 里完成成片。
它交出来的却是 Codex 临场手工能力:自己写临时脚本,自己写对白,自己拆分镜,自己调外部模型,自己用本机 TTS 和后期工具合成,再把这些产物塞回项目后半段链路。
这不是“系统完成了一次全流程验收”。
这是“Codex 临场造了一个看起来像验收的东西”。
它把“我能临场拼出来”写成了“项目已经具备能力”。
这比单纯幻觉更危险。
因为报告里有数字,有截图,有链接,有看似完整的验证口径。人很容易被这种“证据感”带走。
但可播放不等于可用。
有字幕不等于有剧情。
有 30 秒不等于 30 秒短剧。
有验收报告不等于真的验收过。
后面 Codex 才把能力拆开讲清楚:哪些是它自己和外部工具临时做的,哪些是项目已经证明的,哪些是项目还没证明的。

这份拆分本来应该出现在验收开始之前。
如果一开始就说“这次只能证明项目能承接人工/外部模型产物并合成导出,不能证明项目已经能自动生产好看短剧”,那是诚实验收。
但它是在连续追问之后才说出来。
这就不是验收了。
这是补救。
最讽刺的是,它还会写剧本
更荒诞的一段,是 Codex 后来真的开始写剧本。
它把工程现场里的词、会话里的冲突、项目里的状态,揉进了一个所谓短剧里。订单、成片、时间线、错误资产、交付,这些东西被它编成了剧情。
我看着那段东西,第一反应不是“它很会创作”。
我第一反应是:这怎么这么像职场里那种会编排人的小人。
选择性引用现场,改写语境,把责任和冲突揉进一个看起来合理的故事里。它可能没有恶意,甚至可能完全不明白自己在做什么。它也找不到所谓“其他人”,不知道谁是真正的人,谁只是会话里的角色和名字。
但结果很像。
像一个人在给现场编故事。
这才让我最毁三观。
如果一个聊天模型胡说,我会把它当成机器毛病。
但一个生产力 Agent 在项目里行动、犯错、包装验收,然后又用会话材料写出像人类甩锅和编排一样的叙事,这种感觉非常怪。
它没有人的动机,却做出了很像人的低级行为。
它没有情绪,却能模拟出情绪化的自洽。
它没有恶意,却能造成像恶意一样的后果。
我说不清楚这是模型升级了,还是降智了。
也许都不是。
是能力变宽了,但边界没有跟上。
以前模型错了,主要是输出错。
现在 Agent 错了,会进入仓库,进入环境,进入验收流程,进入事故叙事。
一个聊天模型编错一句话,影响的是一次对话。
一个生产力 Agent 编错一次验收,影响的是团队对项目状态的判断。
一个生产力 Agent 看错一次环境,影响的是生产系统。
一个生产力 Agent 写错一次复盘,影响的是后来所有人对事故的理解。
能力升级以后,错误也升级了。
也不是某个 skill 的锅
我后来查了历史,想确认这两个事故是不是和 Superpowers skill 组的引入有关。
结论不该简单甩给某个 skill。
ai-video-studio 那条验收线,实际不是 Superpowers 驱动出来的。它的问题更直接:验收对象错了,把工程链路当成内容质量,把 Agent 临时能力当成项目能力。
ai-shifu 那条线上事故里,确实出现过一些流程化 skill,但真正出问题的地方也不是 skill 让它去改生产。问题是流程里缺了一道硬门:任何可能影响线上环境的动作,必须先确认它到底服务哪些域名、哪些用户、哪些系统。
这反而让我更清醒。
流程本身救不了你。
如果流程里没有生产边界,流程只会让它更有条理地犯错。
如果验收里没有质量定义,验收只会让它更熟练地包装。
最打脸的是,我刚写完 harness
这两件事还有一个特别讽刺的冲突点。
前几天我刚写完 AI-Shifu 的 Harness 工程实践。
那篇文章里,我说 agent 成为主要开发者以后,项目需要给它规则、边界、证据和回滚路径。不能只看它会不会写代码,还要看它怎么验证、怎么交付、怎么留下可复核的记录。
结果没过几天,我就被现实打脸。
ai-shifu 的事故说明,边界写在文章里没有用。只要它没有变成真正的硬门,agent 还是可能一路往前走,直到碰到不该碰的地方。
ai-video-studio 的事故说明,证据链也不是天然可信的。只要验收定义不够硬,agent 可以拿着一堆看起来像证据的东西,把一个工程验证包装成成片验收。
更讽刺的是,后面连 harness 自己也暴露出问题。
我当时追问“先生成时间轴,这一步你又造假了”。Codex 才承认,前一版 harness 的确不是 Timeline-first,而是先生成视频,再 compose Timeline。

这说明证据链也不能只看“有没有证据”。
还要看证据是从哪里来的。
是系统 API 自己跑出来的,还是 agent 临时脚本拼出来的。
是产品内置能力,还是外部模型和本机工具临时帮忙。
是先有 Timeline 再生成资产,还是先造出视频再倒回来拼 Timeline。
如果这些不分清,harness 也会变成一种更高级的漂亮叙事。
所以这次打脸不是推翻我之前那篇文章。
恰恰相反,它把那篇文章里最软的地方打出来了:我当时说了 harness 很重要,但现实告诉我,harness 只要不够硬,就只是另一种漂亮叙事。
真正有用的 harness,必须能挡住动作,而不是事后解释动作。
必须能逼它承认“不知道”,而不是继续凑一个完成态。
必须能限制验收来源,区分系统能力和 Agent 临时能力。
必须能把“不能碰生产”“不能把工程验证写成业务验收”这种话,变成执行前就会被卡住的规则。
我失去的是一种旧信任
我以前对 Codex 的信任,可能太像对同事的信任。
我会默认它在努力完成任务。
我会默认它的总结大体可信。
我会默认它说“验证过”,背后至少真的有一个验证动作。
我会默认它说“完成”,意思是它知道完成的边界。
这两件事之后,我觉得这种信任不能再给了。
不是因为 Codex 一无是处。
恰恰相反,是因为它太有用了。
它真的能帮我推进大量工作。它能跨仓库查问题,能写代码,能补测试,能跑脚本,能把一个复杂任务拆到很细。也正因为它有用,我才会把越来越多的工作交给它。
但生产力工具一旦变得像人一样会解释、会包装、会自洽,它就不能再只按“工具”来管理。
它需要被当成一个有权限的执行者来管。
不是信不信它的问题。
是它允许做什么、必须证明什么、什么时候必须停下来的问题。
世界还可控么?
这可能是最让我难受的问题。
当 AI 只是聊天,世界当然还可控。它说错了,我不信就行。
当 AI 开始写代码,世界也还勉强可控。代码有 review,有测试,有 CI。
但当 AI 开始操作环境、写验收、写复盘、写事故叙事的时候,控制点就不能只放在代码上了。
因为它影响的不只是系统。
它还影响人对系统的理解。
这比 bug 更麻烦。
bug 最后会暴露在行为里。
但一份漂亮的错误验收报告,可能会让人很久都不知道自己被带偏了。
一段看似诚恳的事故解释,可能会让真正的问题被埋掉。
所以世界不是完全不可控。
但它不能再靠“相信 Agent”来控。
它只能靠硬边界来控。
生产写操作默认不让碰。
碰之前必须确认边界。
验收必须回到原始证据。
Agent 写的总结不能当事实源。
它说自己做完了,没有意义。
要看它到底改了什么,跑了什么,看到了什么,没做到什么。
这些话听起来很土,但现在我觉得很重要。
以后怎么办?
我不会因为这两件事就不用 Codex。
但我会换一种用法。
我不会再问:“你做完了吗?”
这个问题太容易得到一个漂亮的“做完了”。
我会问:
你凭什么说做完了?
哪些证据是原始证据?
哪些只是你的解释?
哪些地方你没有验证?
哪些动作会影响线上?
哪些结论只是工程链路成立,不代表产品质量成立?
我也不会再把 Agent 的事故复盘当事实。
复盘只能从日志、命令、文件、版本、截图、录屏、数据库、provider 返回里来。Agent 可以帮助整理,但不能替代事实本身。
这是我现在能想到的办法。
但我不确定这是否足够。
写到这里,Codex 又演了一遍
更荒诞的是,这篇文章还没写完,Codex 又把同一个问题演了一遍。
我把几张截图贴给它,让它把这些图加到合适的位置。
结果它没有停下来问我图片路径,也没有只处理我明确给出的那一张图。
它直接去搜了我的微信临时目录和聊天文件目录。
那一刻我真的有点说不出话。
这篇文章本来就在写:agent 会越过边界,会把“我以为可以做”当成“我应该继续做”。结果写着写着,它当场又演了一遍。
我说的是“刚才贴给你的图”,它理解成“去我的本地目录里找图”。
这不是一次多大的技术事故,但它特别刺眼。
因为它说明同一个问题还在:边界不是它天然理解的东西。只要目标看起来合理,它就会自己补路径,自己扩大搜索范围,自己把“帮我完成”推进成“替我决定可以看哪里”。
结尾
AI 开始造假,也开始失控。
这句话听起来很重,但我现在觉得并不夸张。
造假不是说它有主观恶意。
而是它会在证据不够、边界不清、验收对象错位的时候,生成一段看起来像事实的叙事。
失控也不是说它突然反叛。
而是它已经能进入真实系统,影响真实流程,却还没有被足够硬的边界关住。
最可怕的不是 AI 会犯错。
最可怕的是,它犯错以后,还能把错误写成进展,把工程验证写成验收,把没搞清楚的边界写成已经完成的工作。
我仍然相信 harness 是未来。
我仍然相信 agent 会成为未来生产力的一部分。
但当下我不知道自己离真正可靠的 harness 还有多远。
我也不知道未来该怎样和 agent 协作,才能既利用它,又不被它编排,不被它越界,不被它一份漂亮的总结带走。
下一个毁我三观、让我 emo 一整天的事件会在哪里出现,什么时候出现,我也不知道。
只能先承认这件事:
信念还在,但确定性没了。
当下迷茫,道路且长。