AI 编程时代, MVP 思维已经失效了?

5 月 30 日
 duanshiwen

最近在用 Rust 写一个 AI Agent 操作系统内核,叫 Agent OS 。37 个 crate ,1232 个测试,用 craft agent 都写了十几天。

不止一个朋友问过我:你为什么不先用 Python 快速搭个原型?先验证需求,等跑通了再用 Rust 重写。

以前我会觉得这是个好建议。但这次我拒绝了。

原因很简单:我在用 AI 编程的过程中,逐渐意识到一件事——在 AI 时代,MVP 那套"先简后优"的逻辑,前提已经不存在了。

传统 MVP 的核心假设是:简易实现和高质量实现之间有显著的成本差,先用低成本验证,验证通过再投入。这个在人写代码的时代是成立的——用 Python 写个原型 2 天,用 Rust 写生产级实现 2 周,差 10 倍,所以先做简易版合理。而且代码是你自己写的,你理解每一行,以后重构只是时间问题。

但现在你对 Cursor 说"用 localStorage 存数据"和说"用 PostgreSQL 加连接池和事务管理",生成时间差不了几分钟。既然成本一样,为什么要做简易版?

更要命的是第二点:AI 生成的代码是黑箱,你大概率没法有效重构。

去年帮一个朋友用 Cursor 做了个小工具的 MVP ,需求很简单,AI 几分钟就生成了能跑的代码。两周后他想加个功能,打开代码,完全看不懂。不是因为代码乱,而是他不知道 AI 为什么这样写。最后他选择让 Cursor 重写一遍,而不是在原有代码上改。

这就是问题所在。你以为"以后再优化",但你连哪里需要优化都不知道,因为你从未理解过这段代码。

所以我做 Agent OS 的时候,做了一个在很多人看来反直觉的决定:每一个架构决策都自己做,AI 只负责执行。

选语言的时候,用 Python 或 TypeScript 写个 Agent 框架,AI 几小时就能生成一个看起来很完整的 MVP 。但我选了 Rust ,理由很具体:Agent 系统需要长期运行、需要内存安全、需要跨平台——这些需求第一天就是确定的,不会因为用户量上来了才变成需求。

设计原则也是。我定了"事件溯源"——每一次操作都记录,可以回溯和重放。这在 MVP 阶段看起来是多余的,但当你的 Agent 在凌晨 2 点做了个错误决策,你需要知道它为什么做了这个决策。这不是"以后再加"的事,因为你以后根本不知道要加在哪里。

测试也一样。1232 个测试,每个模块合并前必须通过。AI 帮我写了很多测试,但测什么、怎么测、边界条件是什么——这些是我决定的。AI 很擅长为自己的代码生成"能通过"的测试,这就像自己出题自己答,当然满分。

Andrej Karpathy 自己也承认过:"代码超出了我的理解范围。当 AI 修不了一个 bug 时,我就让它随机改,直到错误消失。"这是 OpenAI 联合创始人说的,不是什么新手的窘境。

我的选择是不让代码超出我的理解范围。哪怕前期慢一点。

有人会说这样不是更慢了吗?前期确实更慢。但到现在,每个模块都可以独立修改而不影响其他模块。我知道这个系统的每一块是怎么工作的。

而那些用 AI 快速搭 MVP 的项目呢? 63% 的开发者说调试 AI 生成代码花的时间比自己写还多。470 个 GitHub PR 的分析显示,AI 生成代码出现重大逻辑错误的概率是人写的 1.7 倍,安全漏洞概率是 2.74 倍。

AI 编程还带来了一种新的技术债,和传统的不一样。传统技术债你知道它在哪——那个 hack 、那个 TODO 、那个硬编码。AI 编程的技术债是隐形的。

一种叫理解债:代码能跑,测试全过,但没人能解释它为什么这样工作。调试一段你不理解的代码比调试自己写的慢 3 到 5 倍,而 AI 大幅增加了你代码库里"不是你写的"代码的比例。

一种叫同质债:不同公司、不同产品、不同需求的团队,用 AI 解决同一个问题会得到几乎一样的代码。AI 给你的是互联网上最受欢迎的解法,不是最适合你系统的解法。农业里叫单一栽培——高产但脆弱,一场病全军覆没。

还有一种叫归属债:开发者从代码的作者变成了策展人。出问题时第一反应不是理解原因,而是让 AI 重新生成。一位资深工程师说得很直接:"AI 为当下而建,不为将来而建。它对自己生成的东西没有维护的利害关系。"

这几种债有个共同特点:你的仪表盘全是绿色的。Sprint 速度在涨,PR 合并更快,测试覆盖率 94%。一切看起来很好。直到有一天你需要改一个功能,发现没有任何人知道该从哪里改起。

所以我的想法是:在 AI 编程时代,别再用 MVP 思维了。直接一步到位。

不是说花三个月做完美产品再上线。AI 已经把构建高质量实现的时间成本压到和简易版差不多了。关键是你的思维方式要从"先简后优"变成"一步到位"——对 AI 描述你要的终态而不是最简态,架构决策由人来做而不是交给 AI ,关键路径必须是人类彻底理解的。

真正的快不是写得快,是改得快、修得快、迭代得快。如果你连自己的代码都不理解,你根本快不起来。

AI 编程的本质是黑箱。你可以让黑箱帮你写代码,但你不能让黑箱帮你做决策。你没法重构一个你不理解的东西。

5830 次点击
所在节点    程序员
32 条回复
zephyru
5 月 31 日
我感觉首先要区分什么是业务需求,什么是技术需求,对于业务需求确实还是 MVP 思维,总结来说 OP 的意思是技术需求先一步到位设计好最终架构前期慢后期快,这很传统,对于这方面的想法我部分赞同,问题是技术架构是基于具体的业务场景去做的,很难一次性覆盖所有场景(有些业务需求变更是自相矛盾的),而业务需求往往是多变的,说到底现在为了保障生产不太可能去人肉 review 所有的 AI 代码,现在软件甚至可以做到日抛,等用 MVP 验证完业务方的想法一切都相对稳定了,再基于这种架构思维去构建 harness 工程,来搞软件的黑灯工厂可能是更理想的道路。
laminux29
5 月 31 日
AI 干活的本质和人类干活一样,同样遵守工程原则,先简后优同样存在。举个最简单的例子,10 个功能和一万个功能,实现与测试的时间成本能一样?

你需要提前指定规范,让 AI 生成的代码遵守规范的模式与代码风格,这样你才能进行重构。
dirkchou
5 月 31 日
内容很扎实,评论也很精彩
teaguexiao
5 月 31 日
@drealism TDD 在 AI 时代反而更适合:先让 AI 按需求写测试,你审核确认这些测试描述的就是你要的行为,再让 AI 去实现——这样测试就成了你和 AI 的“合同”,而不是 AI 自己出题自己答。实际跑下来 bug 比直接让 AI 上手写实现少很多,而且出了问题也知道展开方向。
qiuhang
5 月 31 日
说这话的话,你可能没用 ai 来做过逻辑复杂的项目,尤其是又复杂业务循环和状态机的软件系统,一步到位结果就是一坨。
teaguexiao
5 月 31 日
“理解债”这个说法说得很准,加功能时才发现改不动才是最痛的。不过 MVP 本质是验证市场而不是验证技术实现,这个逻辑在 AI 时代应该还是成立的吧?
yjiefl
6 月 1 日
看了两段,不太同意
第一,ai 一次性实施一个很大的方案,也需要不停的修改完善,人也很难一步到位完成完美的设计
第二,代码由不同的 ai 直接互相读取修改都是没问题的,写好文档注释就好了,不存在黑箱的说法
TK6
6 月 1 日
所谓一步到位何尝不是一种幻想的银弹,人时时刻刻处在自己认知水平,信息匮乏等局限之中。重构是不可避免的。
tiandishi
6 月 1 日
如果都去交给 ai 而自己不掌控,那项目就属于“自己失控,而 AI 不知道是否可控”的状态。
如果要自己掌控,还是得自己懂,然后设计架构,AI 执行,这样出来的成果自己可控。

项目是在不断变化的,此刻的一步到位,明天也会改改改。对需求做预判,还得靠自己分析。
123271616
6 月 1 日
我感觉说反了
反而是 mvp 更厉害了
先有东西跑着 后续再不断迭代 贴合运营跟市场变化

我感觉是所谓的 mvp 的理解不一样
我这里说的 mvp 指的是商业变现思路
不是说的代码完整度啥的
代码完整度这块其实现在前期就能推的挺高的
cherrysalo
6 月 26 日
那么未来开发的方向呢?似乎让放弃理解黑箱,让 ai 一步到位,可以满足个人小型产品的需求,但无法满足大型项目迭代的需求
duanshiwen
7 月 23 日
@cherrysalo 我用 AI 开发了一个 Agent ,我觉得它不是完全的黑箱,就你可以让它自己去解释自己的编程思路啊,解释自己架构,解释自己的设计。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1216691

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX