Inithouse 审计总结 5 大维度常见缺陷:API 密钥硬编码在客户端、无行级数据库权限、缺少 SSR、SEO 元数据缺失、代码质量低;提供可落地的修复方案。
Audit Vibe Coding 的每次审计都会对五个独立领域进行评分:安全性、SEO、性能、可访问性和代码质量。在 Inithouse(一个并行运行产品实验的工作室)审查过的项目中,我们发现同样的问题模式不断重复出现。API 密钥存在在 JavaScript bundle 中。数据库表对任何已认证用户开放。整个页面对搜索引擎和 AI 爬虫隐形。这些问题在测试中都不会导致应用崩溃,但在生产环境中都至关重要。
每个领域都独立评分。一个项目可能在性能上通过,但在安全性上失败。评分报告为团队提供了一个具体的基线,可以在各个部署中进行跟踪。
AI 代码生成器对环境变量的处理不一致。有些框架为客户端安全的变量添加 NEXT_PUBLIC_ 或 VITE_ 前缀,生成器会正确地使用这个前缀。其他框架则跳过了这个区分,密钥就被装入了 JavaScript bundle,任何拥有 DevTools 的人都可以读到它。
第二个反复出现的问题:数据库表没有行级安全策略(row-level security)。Supabase 项目经常出现这个问题。生成器创建了表并编写了查询,但跳过了 RLS 策略。结果是一个数据库,任何已认证用户都可以查询表中的每一行。
这两个问题都可以在有人指出后的几分钟内修复。问题在于它们通过了每一个功能测试。应用运行得很好。直到有人查看时才会出现问题。
AI 生成器默认采用单页应用(single-page application)架构。应用加载一个 JavaScript shell,然后在客户端获取并渲染内容。一个拥有现代浏览器的人类访客看到一个可以工作的页面。
Googlebot、Perplexity、ChatGPT 的浏览模式以及其他不完全执行 JavaScript 的爬虫看到的是一个空页面。标题标签可能是正确的,但正文是一个 <div id="root"></div>,里面什么都没有。
这通常会伴随缺失的 Open Graph 标签和零结构化数据。没有 meta description、没有 og:image、没有 JSON-LD。即使爬虫能够渲染内容,页面也没有提供关于它是什么的机器可读上下文。
对于竞争 AI 可见性的产品来说,这是一个披着技术外衣的发行问题。
WCAG 2.1 Level AA 要求普通文本的对比度为 4.5:1。AI 生成器选择的调色板在视网膜显示屏上看起来很清爽,但在测量时达不到这个阈值。
浅灰色文本在白色背景上是最常见的情况。生成器优化的是视觉上的轻盈度,而不是在阳光下阅读页面或视力受损人士的体验。
单次遍历样式表就能捕捉到每个低于比率的元素。修复只需要单行 CSS 改动。这仍然是 vibecoded 项目中最一致性地被遗漏的领域之一。
当 AI 生成器添加一张图片时,它很少会压缩、调整大小或转换成现代格式。登陆页上的一张 4 MB PNG 英雄图片并不罕见。再加上几个部分,初始加载就会在移动网络连接上超过几秒钟。
修复很机械化:压缩、转换为 WebP、添加 width/height 属性以保持布局稳定性、使用响应式 srcset。这些都不复杂,但在生成的代码中默认都不会发生。
缺失的错误边界意味着单个组件中一次失败的 API 调用或一个未定义的变量就会导致整个应用崩溃。用户看到的是一个白屏,没有回退、没有重试按钮、没有错误消息。
AI 生成器构建功能。它们很少构建功能周围的脚手架:错误处理、加载状态、空数据边界情况、超时处理。生成的代码只覆盖了快乐路径,仅此而已。
人们用来发布应用的工具已经改变了。Lovable、Cursor、Bolt、Replit Agent 生成可工作的代码很快。但"可工作"和"生产就绪"是两条不同的线。这两者之间的差距就是暴露的密钥所在之处,页面对爬虫隐形的地方,对比度比例悄悄破裂的地方。
Inithouse 的 Audit Vibe Coding 是一个同时构建许多产品的实验室,它存在的目的就是弥合这个差距。五个领域、一份评分报告、优先级排列的修复。它抓住了生成器没有想到要检查的东西。