AI 写代码越写越乱?聊聊如何让 AI 成为靠谱的“结对程序员”
最近在技术圈混,发现不少兄弟都在吐槽同一个问题:AI 编程工具(比如 Codex、GPT-4 等)到底能不能用?
大家的心路历程基本是一致的:刚开始觉得是神器,能瞬间生成几百行代码;但到了项目中期,看着那一坨堆砌出来的“意大利面条”代码,简直想砸键盘。明明提示词写得挺详细,文档也给得足足的,为什么 AI 写出来的东西就是结构混乱、模块互相引用,越改越让人头大?
今天咱们不聊虚的,就以此为切入点,分析一下为什么 AI 会写出烂代码,以及作为开发者,我们该怎么去驯服它,让它真正变成一个高效的“结对程序员”,而不是一个只会制造技术债的坑货。
代码质量变差时的真实写照
一、 为什么 AI 总是把代码写成一锅粥?
首先得认清一个现实:目前的 AI(无论是 Codex 还是基于 LLM 的模型)本质上是基于概率的续写机器。 它不是在“思考”软件架构,而是在预测下一个 Token 是什么。
这就导致了几个常见的痛点:
- 上下文窗口的“金鱼记忆”:随着项目变大,AI 很难记住你在文件 A 里定义的接口,或者在你把文件 B 的复杂逻辑丢给它之前,它已经忘记了目录结构。结果就是它倾向于造新轮子,或者在错误的模块里硬塞代码。
- 缺乏全局观:你给的需求如果是“帮我写一个用户登录功能”,它会直接把逻辑堆在当前文件里。如果你不给它强制性的架构约束,它不会主动去拆分 Controller、Service 和 DAO 层。
- 提示词的模糊性:很多时候我们觉得“文档写得挺详细”,但在 AI 眼里,那可能只是大段的文字描述。它更需要的是结构化的输入,比如接口定义、数据流图,而不是自然语言的废话。
二、 如何让 AI 写出“人话”般的规范代码?
既然知道了原因,那解决办法就得对症下药。别指望一个 Prompt 就能解决所有问题,我们需要把“用 AI 写代码”当成一个项目管理的流程来对待。
1. 拒绝“一竿子捅到底”,学会分步拆解
最大的误区就是想一口气让 AI 写完整个模块。“积少成多”在代码重构里是贬义词,但在 AI 生成的过程中是褒义词。
- 错误示范:“帮我写一个带支付、订单管理、用户中心的电商后台。”
- 正确做法:先让 AI 生成数据结构(TypeScript Interface 或 SQL Schema),确认无误后,再让它写 Service 层的业务逻辑,最后写 API 路由。每一步都要独立验证。
你负责画蓝图,让 AI 负责搬砖
2. 建立“结构化”的沟通协议
不要只用大白话跟 AI 聊。试试用更代码友好的格式去约束它。
例如,在提示词中明确约定:“请使用 Facade 模式,将外部 API 调用封装在 apiClient.ts 中,业务逻辑放在 service.ts 中,不要在 Controller 里直接写数据请求。”
现在的模型(如 GPT-4o, Claude 3.5 Sonnet)对架构模式的理解能力非常强,你只要给出明确的模式名称和职责划分,它就能严格遵守。
3. 善用 AI 做“搬运工”而非“建筑师”
如果你正在重构像 codex + superpower + trellis 这样的技术栈,不要指望 AI 一步到位把所有代码从旧架构迁移到新架构。
策略是:你负责画蓝图(架构),让 AI 负责搬砖(具体的函数实现)。 你可以先手动定义好 Trellis 的目录结构,留出空文件,然后针对每个空文件的具体功能,单独让 AI 填充代码。这样能保证模块之间的边界清晰,不会出现互相引用的连环套。
4. 勤快 Commit,把 AI 当实习生用
这一条最关键。AI 犯错是常态,不是意外。
每当 AI 生成了一段功能代码,先别急着合入主分支。自己Review一遍,把那些看起来很酷但实际没用的过度设计删掉,理一理 Import 顺序,确认变量命名符合团队规范。一定要小步快跑,频繁提交。一旦发现 AI 开始瞎搞,立刻回滚,换个问法重来。
三、 关于模型“降智”的替代方案
有小伙伴反馈最近 Codex 或某些模型感觉“降智”了,这可能是由于模型版本更新或训练数据漂移导致的。对此,我有几个建议:
- 混合使用模型:不要吊死在一棵树上。写复杂架构逻辑时,可以用推理能力更强的模型(如 Claude 3.5 Sonnet);写单元测试或简单的 CRUD 时,可以用速度更快、成本更低的模型(如 GPT-4o-mini)。
- 引入 RAG(检索增强生成):如果是写自己的库或特定业务逻辑,把项目文档、旧的优秀代码片段通过知识库喂给 AI。让它在有参考材料的情况下生成代码,命中率会高很多,也不容易写出违背现有风格的代码。
总结
AI 写代码虽然强,但它目前还无法替代成熟开发者的架构决策能力。
如果你觉得代码越改越乱,不妨停下来,别急着催 AI 生成新代码,而是去手动梳理一下目录结构,定好规范,然后再把具体的脏活累活丢给它。
你才是架构师,AI 只是手里的一把锤子。用好了能盖大楼,用不好就是拆家。
大家平时用 AI 写代码都有什么独家的“驯化”秘诀?欢迎在评论区交流!

评论已关闭