氛围编程避坑

AI能写代码,但不能替你负责

氛围编程避坑

VibeCoding指通过自然语言描述需求,让AI生成、修改和调试代码。它能快速把想法变成原型,但“能运行”不等于“能上线”。AI生成的代码仍可能存在逻辑错误、安全漏洞、依赖风险和维护问题。

1. 需求模糊,AI只能自行猜测

只说“帮我做一个用户系统”,AI并不知道角色、权限、数据结构和部署环境。前期假设错误,会不断影响后续代码。

建议:先明确用户、功能、页面、数据表、权限、技术栈和不做的内容,再开始开发。

2. 一次生成整个项目

一次生成大量文件看似高效,实际很难定位问题,也容易出现技术栈混乱和重复代码。

建议:按最小闭环开发:先启动项目,再完成一个页面、一张数据表、一个完整功能,每一步测试并提交Git。

3. 页面正常,不代表功能真实有效

按钮可能只修改前端显示,没有写入数据库;权限可能只隐藏页面,没有限制后端接口。

建议:检查刷新后数据是否保留、不同账号能否越权、接口能否被绕过,以及异常输入和网络失败时的表现。

4. 反复把报错扔给AI

AI可能修复当前错误,却引入新的问题,甚至通过关闭检查、写死数据来绕过根因。

建议:要求AI先解释错误原因,再提出最小修改方案,并说明影响范围。警惕“暂时禁用”“直接跳过验证”等做法。

5. 随意安装第三方依赖

AI可能推荐过时、不兼容甚至不存在的软件包,也可能增加供应链安全风险。

建议:安装前确认用途、维护状态、许可证、漏洞和准确版本,能用框架原生能力解决时尽量不加依赖。

6. 泄露密钥和数据库密码

不要把API密钥、数据库连接字符串和管理员令牌写入代码、提交到Git或放在前端。

建议:使用环境变量和云平台Secrets,区分开发与生产环境;一旦泄露,立即撤销并重新生成。

7. 有登录页面,不代表系统安全

真正的权限控制必须放在服务端。常见问题包括普通用户调用管理员接口、读取他人数据、数据库完全公开等。

建议:重点检查身份认证、服务端权限、数据库行级权限、输入校验、文件上传、接口限流和敏感日志。

8. 不写测试

AI修改一个功能时,可能破坏另一个功能。没有测试,就很难发现回归问题。

建议:至少执行类型检查、构建检查、接口测试和关键流程测试,并覆盖空值、重复提交、网络失败等异常情况。

9. 不使用Git

AI可能一次修改大量文件。没有版本记录,很难恢复稳定版本。

建议:小步提交,大改动使用分支,修改前后检查差异,不要让AI覆盖未提交的人工代码。

10. 本地能跑就直接上线

生产环境的运行版本、环境变量、数据库和网络配置往往与本地不同。

建议:上线前完成生产构建、备份、HTTPS、错误监控、日志、限流、依赖扫描和回滚方案。

11. 代码越来越乱,仍继续加功能

VibeCoding项目后期常出现重复代码、超大文件、命名混乱和临时补丁堆积。

建议:定期暂停开发,拆分模块、删除废弃代码、统一结构、更新文档并补齐测试。

12. 完全依赖AI,不理解系统

不必记住所有语法,但至少要理解前端、后端、数据库、接口、权限、环境变量、部署和日志。

开发者必须知道数据存在哪里、谁可以访问、请求如何流转,以及出现问题后如何恢复。

更稳妥的VibeCoding流程

明确需求 → 设计数据和架构 → 搭建最小项目 → 分模块实现 → 检查代码差异 → 自动测试 → 安全审计 → 小范围发布 → 持续监控。

AI适合提高执行效率,但开发者仍需负责需求判断、功能验收和风险控制。

结语

VibeCoding适合原型、个人工具和低风险MVP,但不应跳过需求、测试、安全和版本管理。

可以让AI写代码,但不能让AI替你验收代码。

引用来源

  1. GitHub Docs:AI生成代码的人工审查与测试建议。
  2. Anthropic Docs:密钥管理、权限控制与项目指令实践。
  3. OpenAI Codex:代码差异审查、沙箱执行与Pull Request工作流。
  4. OWASP Top 10:Web应用常见安全风险。
  5. OWASP Software Supply Chain Security:第三方依赖与供应链安全。
  6. SLSA:依赖混淆、来源验证与版本固定。
  7. 《Vibe Coding in Practice》:VibeCoding效率与技术债研究。
  8. 《Is Vibe Coding Safe?》:AI代理生成代码的安全性研究。
  9. 《Understanding the (In)Security of Vibe-Coded Applications》:真实VibeCoding项目中的常见漏洞。

KEEP READING