2025年4月17日

有限制的“Vibe 编码”——在人工智能时代如何构建应用程序

随着 AI 编码工具的兴起,软件开发正在快速演进。本文探讨了开发者如何在不失控的情况下驾驭这些工具的速度和力量,以及为什么理解你的代码仍然至关重要。

有限制的“Vibe 编码”

“Vibe 编码”(即向 AI 描述你想要的功能,然后让它生成代码)的概念激发了开发者的想象力。其结果令人印象深刻:仅凭简单描述即可生成可用的原型,无需与语法搏斗即可实现复杂的算法,无需繁琐的 CSS 调整即可组装用户界面。

但任何尝试过这种方法的开发者都不可避免地会遇到其局限性。经过几轮提示后,原本简洁的实现往往变得笨重。潜藏的细微 bug 越来越难以解决。轻松开发的承诺让位于熟悉的挫败感——现在又加上了并非自己编写的代码带来的困扰。

2025年的现实是,开发者仍然需要理解他们发布的每一行代码。AI 可以显著加速开发,但它(目前)无法取代使应用程序健壮且可维护的关键思维和系统设计技能。

那么,在使用这些强大的新工具的同时构建全栈应用程序的最佳方法是什么呢?

理解 AI 工具的谱系

AI 编码工具存在于一个抽象的谱系中,每种工具提供的协助和控制程度不同。选择哪种工具取决于你自身的经验和个人目标。

让我们仔细看看这些抽象级别,以及最流行的 AI 软件开发工具位于何处。

低级别:AI 辅助的代码编写

抽象层次的最低端是那些可以在不改变你基本工作流程的情况下帮助你更高效地编写代码的工具。

  • Claude Code:一种与你的终端集成的 AI 助手,扮演着结对程序员的角色,响应自然语言输入。
  • Windsurf/Cursor:专为 AI 协助构建的 IDE,在提升编码体验的同时,让开发者保持完全控制。
  • GitHub Copilot:一个与 VS Code 配套的“AI 结对程序员”。

这些工具通过直接集成到开发人员熟悉的工具和工作流程中来协助编写代码。它们特别适用于生成模板代码、编写“胶水代码”(如基本的 CRUD 操作或 DTO)或实现测试等工作流程。

中级别:提示优先,可访问代码库

谱系的中端包含那些使用提示作为主要接口,但允许你直接访问和修改生成代码的工具。这通常通过将你的代码“弹出”到 GitHub 仓库来实现,你可以在需要时在那里进行手动更改。

这类工具的例子有:co.dev, Lovable, v0, Replit, Bolt, …

这些方法在将大部分工作交给 AI 处理与在需要时保持精确控制之间取得了平衡。

高级别抽象:“无代码”AI 平台

抽象层次的最高端是那些在过去几年出现的“无代码”应用构建工具的演进平台。

  • Bubble.io:一个带有 AI 协助的可视化编程平台。
  • Glide:基于电子表格创建应用程序,具有 AI 驱动的功能。
  • Gamma:通过自然语言构建交互式演示文稿和轻量级应用。

虽然这些工具对于简单的用例(例如基本的 CRUD 应用程序或定义明确的单任务应用程序,如待办事项应用、国际象棋游戏或个人例程追踪器)可以最大限度地提高生产力,但它们不提供直接自定义代码的途径,因此不适用于具有更复杂需求的应用程序。

代码 vs 基础设施:AI 无能为力之处

尽管 AI 在生成代码方面已变得非常强大,但应用程序开发中有一个关键组成部分是它无法取代的:你的代码将运行在的计算基础设施以及存储基础设施。

无论你的 AI 生成的应用程序运行得多么好,它仍然需要一个实际运行的地方。你需要:

  • 可靠执行你代码的计算资源
  • 带有适当保证维护你数据的存储系统
  • 安全连接你组件的网络基础设施

Vercel 等平台提供了计算基础设施并使应用程序部署变得轻松——然而,你的应用程序仍然需要与数据库交互。

运行在重量级操作系统上的传统数据库由于其高资源消耗、配置开销和慢速冷启动,并不适合基于 AI 的软件开发的现代时代。

Prisma Postgres:专为 AI 开发时代设计的数据库

这正是像 Prisma Postgres 这样的解决方案提供特殊价值的地方!Prisma Postgres 是第一个构建在高效 unikernels 之上的无服务器数据库,设计用于在单台机器上运行数千个实例。

它提供了开发者所需的可靠性,同时避免了 AI 无法抽象掉的操作复杂性。当 AI 帮助你在代码生成方面更快时,你需要能够跟上速度的基础设施——可扩展、按需分配且只需最少配置。

要试用 Prisma Postgres,只需在你的终端中运行以下命令:

Prisma Postgres 还通过模型上下文协议 (MCP) 直接与你喜爱的 LLM 和 AI 编码环境集成。

只需使用以下 JSON 代码片段将其添加到你所需的 AI 工具的 MCP 配置中:

Prisma Postgres 文档中了解更多信息。

何时使用 AI?

尽管 AI 在编写代码方面变得异常强大,但它(目前)尚未取代开发者。理解 AI 的优势所在以及人类专业知识仍然必不可少的领域,是有效使用 AI 工具的关键。

让我们来看一些抽象谱系低端的 AI 工具(如 Cursor、Windsurf、GitHub Copilot 等)非常适合的用例和场景。

例行性任务和单调任务 / 胶水代码

实现 CRUD 操作、设置身份验证流程或创建标准 API 端点等任务遵循已建立的模式,AI 可以可靠地复现它们。这些任务非常适合委托给 AI 助手,从而让你能够专注于开发的更具创造性的方面。

基于规范编码

当你有明确的需求和规范时,AI 可以高效地将它们转化为可行的实现。对于具有明确输入、输出和行为的特性尤其如此。

快速原型开发

AI 在快速创建功能原型以演示概念和验证想法方面表现出色。在探索想法或与用户测试新功能时,AI 生成的代码可以显著加速反馈周期,即使你计划为生产环境进行重构或只是构建一个低质量的“一次性代码”的初始版本。

你仍然需要理解你的代码(目前是这样!)

AI 代表着编程抽象阶梯上的下一步——从机器码到汇编语言,再到高级语言、框架,现在是自然语言接口。指导先前过渡的相同规则同样适用于此:

  • 更高的抽象可以提高生产力:用自然语言描述功能比逐行编写更快。
  • 但抽象会有“泄漏”:当事情出错时(而且一定会出错),理解抽象层下发生的事情至关重要。
  • 调试的复杂性并未消失:随着你指定的与实际实现的之间差距的扩大,复杂性通常会增加。

最有效的开发者将 AI 视为强大的工具,而不是对理解的替代品。他们利用 AI 加速开发,同时保持对生成代码的足够了解,以便随着时间的推移进行调试、优化和维护。

结论

在 AI 时代构建全栈应用程序并非盲目地通过提示生成代码——而在于找到 AI 加速与人工监督之间的恰当平衡。

在这个新时代,最成功的开发者将是那些:

  • 在适当的任务中利用 AI,同时保持架构控制;
  • 选择与 AI 加速开发相辅相成的基础设施;
  • 理解他们发布的每一行代码,即使不是自己逐行编写的;
  • 使用像 Prisma ORM 这样的类型安全工具,为人类编写和 AI 编写的代码提供保障。

随着 AI 能力的不断发展,这种平衡将会改变。但目前,获胜的方法是结合两者的优势:人类开发者的创造力和判断力,以及 AI 助手的速度和模式识别能力。

不要错过下一篇文章!

订阅 Prisma 新闻通讯