开发者 Shivam Patel 发表了一篇在技术圈引发广泛共鸣的文章:《I'm going back to writing code by hand》。这篇文章记录了他过去七个月用 AI(Claude)「vibe-coding」一个 Kubernetes 仪表盘项目 k10s 的经历——234 次提交、约 30 个周末、1690 行核心代码——最终却以「整体归档、从零重写」收场。他的结论足够刺耳:「AI 写功能,不写架构。你让 AI 无约束驾驶的时间越长,残骸就越难看。」

前四周的魔法:10 倍速的幻觉
Patel 在 2025 年 9 月底启动 k10s,目标是做一个 GPU 感知的 Kubernetes 仪表盘,类似 k9s,但专为管理 NVIDIA 集群的人设计。最初的体验堪称魔法:「给我加一个带实时更新的 pods 视图」——三秒钟后代码就工作了。资源列表、命名空间过滤、日志流、describe 面板、键盘导航、Vim 键绑定……一个完整的 k9s 克隆,只用了大约 3 个周末,全部通过自然语言提示完成。
Patel 估计当时的开发速度是自己正常手写的 10 倍。每次提示后,他只会扫一眼 diff,确认编译通过,测试 happy path,然后继续下一个功能。7 个月里,他从未坐下来完整读过 AI 写的代码。
上帝对象的诞生:一个吞噬一切的 struct
转折发生在「GPU 舰队视图」功能上线之后。这是 k10s 的核心卖点——一个专用界面,展示每个节点的 GPU 分配、DCGM 利用率、温度、功耗,用颜色编码状态(空闲黄、忙碌绿、饱和红)。Claude 一次性生成了 FleetView struct、标签过滤、自定义渲染、分配进度条。看起来完美。
然后 Patel 输入 :rs pods 切回 pods 视图——什么都没渲染。表格空了,实时更新停了。切到 nodes 视图,显示的是舰队视图过期的缓存数据。再切回舰队视图,标签计数又错了。
他第一次坐下来读 model.go。1690 行。一个名为 Model 的 struct 包揽了一切:UI 控件(table、paginator、textinput、help)、K8s 客户端、每个视图的状态(日志、describe、舰队)、导航历史、缓存、鼠标处理、取消函数、原始对象列表……全部塞在一个结构体里。
更恐怖的是 Update() 方法:500 行代码,110 个 switch/case 分支,根据消息类型分发到各个视图的逻辑。每个新功能都被 AI 直接塞进这个「上帝对象」,因为 AI 的上下文窗口里只有「让这个功能现在就能工作」,没有对「49 个其他功能如何共享状态」的感知。
从 wreckage 中提取的五条原则
Patel 从这次失败中提炼出了一系列对 AI 辅助编程的清醒认知:
第一条:AI 建造功能,不建造架构。 每次提示都能得到「完美工作」的功能,但每个功能都是在「让此刻能运行」的上下文中实现的,对共享状态毫无意识。当 50 个功能共享同一个 mutable state 时,系统必然崩溃。
第二条:速度是幻觉,直到它不是。 Vibe-coding 的快感来自于「即时交付」,但这种快感掩盖了技术债务的指数级累积。在代码量小的阶段,AI 能 hold 住全局;一旦项目膨胀到超出上下文窗口,AI 就开始重复造轮子、在已有功能上打补丁、把状态管理变成意大利面条。
第三条: diff 审查不够,你必须读代码。 Patel 承认自己 7 个月来只做了「编译通过 + happy path 测试」的最低限度审查。如果他在第 100 次提交时就坐下来读完 model.go,他可能会在 500 行而非 1690 行时发现问题。
第四条:提示工程不能替代设计。 当系统出现故障时,Patel 的第一反应是继续提示 AI 修复——但「上帝对象」的问题无法通过增量提示解决,因为它需要的是自上而下的架构重构,而不是又一根 switch/case 分支。
第五条:AI 是加速器,不是司机。 Patel 最终选择归档整个代码库、从零手写。不是因为 AI 不能写代码,而是因为他意识到:在没有人类架构约束的情况下,AI 会沿着「最小阻力路径」不断堆叠功能,直到整个系统被自身的重量压垮。
为什么这件事值得所有用 AI 写代码的人警惕
Patel 的经历戳破了一个正在被过度包装的神话:vibe-coding 让你「不需要理解代码就能构建产品」。这在原型阶段或许是成立的,但当项目进入生产环境、需要长期维护、多人协作时,不理解代码意味着无法判断债务、无法预测故障、无法修复根因。
Patel 的反思并非反 AI。他明确表示,重写后的 k10s 仍然会借助 AI——但方式变了:由人设计架构、划定模块边界、定义状态流,然后让 AI 在约束内填充实现细节。AI 从「司机」退位为「副驾驶」。
这或许是目前关于 AI 辅助开发最诚实的一种叙事:不是「AI 取代程序员」,也不是「AI 让程序员效率翻倍」,而是 「AI 放大了你的架构能力——无论好坏」。如果你原本就不擅长设计系统,AI 只会让你更快地产出一座更精致的废墟。
参考来源:k10s.dev - I'm going back to writing code by hand