最近在用 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 编程的本质是黑箱。你可以让黑箱帮你写代码,但你不能让黑箱帮你做决策。你没法重构一个你不理解的东西。