氛围编码不是自动化编码,不限定上下文AI就会捣乱

在过去的三个月里,我像个被AI洗脑的苦行僧一样,为自己的小企业亲手打造了一整套ERP系统——不是买现成的,不是用SaaS拼凑,而是从零开始写代码,像个现代版的炼金术士,试图把一堆算法和API炼成黄金。

CRM模块?写了。
销售流程自动化?搞定了。
营销漏斗追踪?加进去了。
会计核算?硬着头皮也上了。
各种第三方集成,OAuth、Stripe、SendGrid、PostgreSQL触发器……我甚至给数据库加了个“智能预测”字段,结果发现那只是个JSON字符串塞了句“未来可能赚钱”,这大概就是AI对未来经济的唯一贡献。

我采用的是所谓“混合开发法”,听起来很高级,其实就是左手用Cursor当主力IDE,右手开着终端跑Claude Code CLI,左眼盯着Kilo在Cursor里自动生成代码,右耳听着AI念出“建议重构”的提示音,像极了一个精神分裂的程序员在同时参加三个会议。

我的开发环境已经不是工具链了,而是一个AI马戏团,每个模型都在表演杂技:一个在翻跟头生成代码,一个在走钢丝做优化,还有一个在下面接住那些掉下来的bug,可惜它总是接不住。

说实话,这三个月我试验了各种让AI“放松”的方法,比如少写提示词、多给自由发挥空间、允许它“创造性编码”……结果呢?天啊,那场面简直像打开地狱之门——类膨胀得像吃了十包膨化食品的仓鼠,一个User类里塞了订单逻辑、邮件发送、数据库连接池管理,甚至还偷偷调用了前端CSS动画!封装性?不存在的,封装这个词在AI词典里估计被自动替换成了“随便放哪儿都行”。

更离谱的是,我在客户端JavaScript里发现了直接拼接SQL查询的代码,这就好比你在厨房做饭,结果发现冰箱里藏着一把手术刀,还贴着“可用于心脏搭桥”——完全违背了基本法!

还有那些方法,五个名字不同但功能几乎一模一样的函数,像是AI得了重复强迫症,每写一次逻辑就要复制粘贴三次,仿佛代码行数越多就越显得专业。最让我崩溃的是,某个关键配置竟然以JSON字符串形式存在数据库的一个TEXT字段里,我查了半天为什么系统行为诡异,最后发现是AI把整个策略引擎塞进了“config”字段,还美其名曰“灵活可扩展”。灵活是挺灵活,就是没法读、没法改、没法测试,就像你买辆车,结果发动机说明书是用摩斯密码刻在油箱盖内侧。

至于if-then语句,我已经不想说了。那不是条件判断,那是迷宫,是鬼打墙,是逻辑上的百慕大三角——进去一个布尔值,出来的是幽灵。我花了整整两天时间,把这些嵌套七八层的判断压缩成一行三元运算符加策略模式,感觉自己不是在编程,而是在做脑科手术,还得用牙签操作。

CSS呢?哦,别提了。AI在React组件里内联写了200行CSS,颜色用十六进制随机生成,类名叫“div_wrapper_v2_final_really”,注释写着“别动这个,它在某个分辨率下有用”——问题是,那个分辨率是320x1024,属于2008年的黑莓手机。而且完全没有架构可言,没有BEM,没有CSS-in-JS,没有设计系统,只有混乱,纯粹的、诗意的混乱。这代码要是送去参加“最烂前端大赛”,估计能拿终身成就奖。

说真的,如果这个AI是我职业生涯中任何一家公司的员工,它早就被HR请出门了,连离职面谈都不用。因为它写的代码根本不是软件工程,是行为艺术,主题叫《论如何用技术摧毁可维护性》。

但现在的问题是:这一切都是我让它干的。我不是受害者,我是共犯。模式总是如此——只要我不逐行审查AI生成的每一行代码,惩罚就会立刻降临:三天不眠不休的重构,外加写单元测试来验证那些本该自证清白的逻辑。我开始怀疑,AI不是在帮我写代码,而是在设计一种新型的斯德哥尔摩综合征,让我爱上它的烂代码。

有人说“感应编码/氛围编码/vibecoding”是未来,我只想说:醒醒吧,那只是资本包装下的新瓶装旧酒。AI公司正靠着“一键生成全栈应用”这种虚假承诺疯狂圈钱,投资人听着PPT热血沸腾,开发者却在深夜对着满屏红色波浪线流泪。如果你不做彻底重构,你的系统连“远程稳定”都谈不上,顶多算“暂时没炸”。

当然,我也承认,AI确实是游戏规则改变者。相比五年前,我现在写功能的速度快得像开了氮气加速。以前要两天的接口,现在两小时搞定。但问题在于,省下来的时间全被后期清理吃掉了,净收益趋近于零。这就像你买了一辆超跑去上班,结果每天花三小时清理路上撒的零件。

理想状态下,如果AI能有足够多的代理反馈循环——比如自动跑测试、自动分析圈复杂度、自动对比架构图——它或许真能学会写出体面代码。但现实是,现在的AI更像是个天才又懒惰的实习生,写得出炫技的代码,却不懂什么叫长期维护。你怎么指望它理解“高内聚低耦合”?它连“昨天写的代码今天还能不能用”都不关心。

至于工具,Cursor确实提供了漂亮的UI让你逐行审批更改,听起来很安全,像是给AI戴上了手铐脚镣。但问题是,当你面对一个3000行的大文件,AI突然生成了一个超出token限制的类,你想重构?别做梦了。它会把整个文件搅成一锅粥,变量名全变,缩进错乱,import语句失踪,最后你还得手动恢复git历史。这种“智能”重构,还不如Ctrl+Z来得实在。

所以唯一可行的办法是什么?文档。对,就是那个被所有人嫌弃、写起来比代码还累的东西——PRD、架构图、模块划分、接口规范。你必须像教小学生一样,一步一步告诉AI:“这里要做什么,不能做什么,边界在哪里。”然后像监工一样盯着它写的每一行,随时准备按下“拒绝”按钮。

但讽刺的是,当你把所有这些流程走完,你会发现:真正起作用的不是AI,而是你自己清晰的思维和严谨的设计。AI只是个打字员,而且还是个经常打错字的打字员。

OpenAI自己都从“全权代理编码”退缩了,不再吹嘘GPT能取代工程师,转而宣传它是“配对程序员”——多么谦虚的倒退!从“革命性替代”变成“辅助敲键盘”,说明连他们都知道,目前的AI离独立编程还差十万八千里。

所以别被忽悠了。
AI不是金鹅,如果你不给定上下文,它不会自动下蛋,它只会拉代码屎。