Christof Jori

7 分钟 阅读 · 08 Jun 2026

Vibe-Coded 软件审计:上线前会出什么问题

你靠 prompt 做出了能跑的软件。它能注册用户、能显示正确的页面、demo 也好看。而你从没读过那段让它跑起来的代码。vibe-coded 审计正是为这种情形而生。其下那条让人不安却很简单的事实是:你无法信任你从没读过的代码。在真实金钱或真实用户碰到它之前,得有一个以读代码为生的人,去看模型实际写了什么,而不是看它看起来在做什么。

这不是反对用 AI 来构建。它比任何别的路都更快给了你一个产品。这是在说:要像审查任何即将保存客户数据、收取付款的东西那样,去审查这个产品。

没读代码就上线了?

 预约一次 Vibe-Coded 审计

什么是 vibe-coded 审计?

vibe-coded 审计,是对 AI 生成代码做一次结构化的通读,专门找模型跳过的那些风险。它不是功能评审。功能评审问的是"它做到用户想要的了吗"。审计问的,是 prompt 从没问过的那些问题:谁能读这些数据,这个调用失败时会怎样,这个密钥最后落到了哪里,从十个用户变成一千个用户时什么会崩。

这个区别很重要,因为这里的故障从外面看不见。产品看起来已经做完了。漏洞藏在没有任何 demo 会跑到的地方:网络掉线的那条路径、到达了两次的请求、改了 URL 去读别人记录的用户。我们读代码,就是为了在用户撞上之前先找到它们。

我们最先检查的七件事

每次审计都从同样的地方开始,因为 vibe-coded 软件总在同样的地方出问题。下面是我们最常揭出来的发现。

  • 安全与授权。登录能用。那个阻止用户 A 读取用户 B 数据的检查缺失了,或者活在前端,谁都能绕过去。这是我们发现的最常见的严重问题,也是漏掉时代价最高的。
  • 数据完整性。可能只完成一半的写入。一条记录存了下来,却没有它所依赖的那条对应记录。数据库其实无法保证的状态,于是数字随时间漂移,没人知道为什么。
  • 泄露的密钥。API key、数据库 URL 和 token 被硬编码进客户端代码,或被提交进仓库。模型把它们内联进去,因为这样示例才能跑。任何打开打包产物的人都能读到。
  • 错误处理。happy path 覆盖了。一次失败的调用、一次超时或一个空结果,就抛出未处理的异常,屏幕一片空白,没有提示,也无法恢复。
  • 可扩展性与查询。把数据库调用塞进渲染里循环,或为了数行数而拉整张表。demo 里十条记录没事,生产里十万条就致命。
  • 依赖与许可。过时、被弃用或带有已知漏洞的包,再加上那些悄悄禁止你所计划的商业用途的许可。
  • 测试覆盖。通常一个都没有。没有任何东西阻止下一次改动,无论是不是 AI 写的,悄悄弄坏已经能用的部分。
Christof Jori

"vibe-coded 软件的危险不在于代码差。在于没人读过它。信任是模型唯一给不了你的东西,而它恰恰是决定你能不能上线的唯一东西。"

严重度:什么会卡住上线,什么可以等

不是每个发现都会拦住上线,把它们全当成会拦只会让你动弹不得。我们把找到的一切分进三个桶,好让你知道哪些今晚就修,哪些可以排期。

  • 阻断级。任何会暴露客户数据、损失金钱或破坏状态的问题。一个坏掉的授权检查,或一个泄露的支付密钥,不会等。上线得等它。
  • 高。还没咬人、但真实存在的风险。规模一上去就死的查询、支付路径上缺失的错误处理、带已知 CVE 的被弃依赖。在你长到那一步之前先修。
  • 清理项。真实但能扛得住的债。不一致的模式、低风险输入上单薄的校验、稳定代码上缺失的测试。值得做,排期也安全。

这样划分,是为了对紧迫程度诚实。我们不会把一个清理项装扮成阻断级来注水工作量,也不会让一个真正的阻断级藏进一份长清单里。

你实际拿到的是什么

交付的不是一份你无从下手的、满是抱怨的 PDF。它是两样东西。第一,一份发现报告:每个问题、它的严重度、它把什么置于风险之中,写得让一个非技术创始人也能判断什么要紧。第二,一个修好、带测试的分支:阻断级已关闭,高级别在范围允许处已处理,还有一套把这些修复钉在原地的回归套件。你拿回的是能跑的代码,而不是一份它为什么坏了的理由清单。如果你想要那一轮加固在底层是怎么跑的更深机制,我们在AI 生成代码的 QA里讲过。

审计 vs 完整 QA vs 重写

这是三个不同的决定,而诚实的答案取决于这次通读读出了什么。

  • 审计。当产品基本能用,而你需要在扩张或收款之前知道有什么藏着,这就是对的选择。快、聚焦,最后给出一份发现报告和一个修好的分支。
  • 完整 QA。当产品已经真实且持续运行,这就是对的选择。一个由测试、评审和加固组成的常设流程,让下一次改动不会推翻上一次。审计往往是迈进它的第一步。
  • 重写。有时通读会显示核心本身就错了,一个撑不起你所需的数据模型,或同一个坏模式被复制到了整个代码库。这种情况下,重建核心比永远打补丁更便宜,我们会在第一通电话里就这么说,而不是收你钱去修一个本该重新浇筑的地基。

成本与时间

一次审计从几天到大约两周不等。这个范围是诚实的,不是搪塞,有两件事在移动它:代码库有多大,以及它触碰多少真实金钱或敏感数据。一个只读的内部工具落在短的一端。一个收款并保存个人数据的产品落在长的一端,因为那恰恰是需要最仔细通读的部分。我们在先看一眼之后再定范围,而不是在那之前,而且我们会把区间提前告诉你,而不是让你在账单上才发现。这是我们软件 QA 服务的入口。

最终思考

vibe-coded 软件不是更差的软件。它是没被读过的软件。模型自信地写了第一稿,跳过了没人去 prompt 的那些部分,而那些恰好是决定这东西能否扛住真实用户的部分。那份活儿没有消失。它在上线那天等着你,而那时它最贵,最难被发现。

如果你上线了某个你从没读过的东西,而金钱或用户马上要碰它,先找个人把它读一遍。一次审计就是几天,对上的是用最难的方式找出同样那些漏洞的代价,事故之后,而不是之前。

没读代码就上线了?

 预约一次 Vibe-Coded 审计
Christof Jori

7 分钟 阅读 · 08 Jun 2026