AI 辅助编程指引
🚧 AI生成内容,全文构建中 ing。AI 风明显
核心命题:AI 时代,开发者的核心壁垒已经从”代码编写能力”转移到”系统架构设计与工程拆解能力”。写代码是整个开发流程中技术含量最低的一环。
引言:为什么你的 AI 编程总是以混乱收场?
这篇文章的目标读者,是已经在用 AI 写代码、但经常感觉结果失控的开发者。你不是新手,你知道怎么写代码,你也用过 Cursor 或 Claude。但你会发现,项目稍微复杂一点,AI 生成的代码就开始出现各种问题:模块之间的接口对不上,第三方库版本冲突,改了 A 又坏了 B,最后不得不推倒重来。
这个死循环的根源,通常不是 AI 不够聪明,而是你给它的上下文根本不足以支撑它做正确的决策。
当前的 LLM 有一个关键特性:在单个函数、单个模块的局部生成上极其强大,但在全局架构把控和跨文件逻辑连贯性上容易”顾此失彼”。一个经典的失败案例:你让 AI 搭了一个 Express 后端,三天后你又让它加一个功能,它给你的代码里用了完全不同的错误处理风格,因为它已经不记得第一天定下来的约定了。这不是 AI 的 bug,而是 LLM 无状态的本质特性——它只能看到当前对话窗口里的内容。
应对这个特性的唯一有效策略,是把系统边界、模块划分和关键约定显式地写出来,每次都带进对话。
这就是本文想讲的事:如何在动手写代码之前,把该想清楚的东西想清楚,然后用工程化的方式把它传递给 AI。
第一阶段:谋局——需求收敛与架构推演
1.1 奉行 MVP 原则:做减法,砍掉伪需求
在写下第一行代码之前,先问自己:这个东西最核心要解决什么问题?
每个人都知道 MVP 这个词,但真正执行的时候往往做不到。你会发现自己的需求列表越写越长,每一项看起来都”很合理”、”不多”。这是正常的认知偏差——功能在脑子里是免费的,只有在实现的时候才会暴露真实成本。
几个具体场景,说明”砍”到什么程度才够:
| 场景 | 第一直觉(容易犯的错) | 真正的 MVP |
|---|---|---|
| 做一个内部工具管理构建产物 | 支持多用户、权限分级、历史版本对比 | 一个 CLI 脚本,能列出指定目录的产物并打标签 |
| 做一个博客系统 | 评论、标签、RSS、SEO 优化、暗色模式 | 能写 Markdown、能发布、能看,其他都是后来的事 |
| 实现一个渲染效果 | 降噪、时序稳定、参数化 UI | 先跑出一张正确的静态结果图,哪怕有噪点 |
MVP 砍的不是最终目标,而是此刻不验证核心假设就不应该存在的复杂度。
1.2 架构选型:六个问题,每个都要有答案
定 MVP 之后,不要直接让 AI 写代码。先用几轮对话把架构锁定。以下六个问题,每一个没有答案之前,都不应该进入实施阶段:
① 最终形态
Web App、桌面工具、CLI 脚本、还是 Agent 流程?形态决定了整个技术栈的选型方向,一旦确定很难中途改变。
② 运行环境
本地运行还是云端服务?依赖什么硬件资源?这直接影响部署方案和冷启动成本。
③ 数据流转
输入从哪里来?中间状态怎么存?结果交给谁?如果说不清楚数据流,你的模块边界就还没想清楚。
④ 模块分工
UI 与核心逻辑解耦了吗?哪些职责天然属于不同的层?混在一起的代码,每次需求变更都是一场手术。
⑤ 技术栈约束
已有哪些基础设施?绑定了哪些语言或框架版本?这些约束要在最开始就告诉 AI,否则它会给你推荐一个”更好的”但和你现有系统完全不兼容的方案。
⑥ 扩展性边界
哪些地方要留扩展接口,哪些地方坚决不做过度设计?这个问题的价值在于逼你想清楚哪些东西”可能变”,从而保护它们。
遇到技术路线不确定的情况,让 AI 给出 2-3 个方案并做横向对比(开发速度、架构复杂度、上线难度)。你做最终决断,AI 提供备选项。注意:AI 给出的方案往往偏向”通用成熟解”,在高度定制化或性能敏感的场景里,这个倾向可能会把你带偏——这一点后面单独讨论。
1.3 架构收敛对话的实际样子
场景 A:做一个团队内部的构建产物管理 CLI 工具
1 | |
场景 B:在现有渲染管线里增加一个屏幕空间效果(GPU 场景)
1 | |
两个场景,同一个对话结构:先发散获取选项,再收敛锁定方向,最后确认第一阶段边界。完成这三轮之后,才开始写代码。
第二阶段:落地——标准化 AI 开发工作流
架构锁定之后,进入实施阶段。这里有一件真实发生过的事,可以说明”不拆分模块”有多危险:
我曾经做一个数据处理脚本,因为觉得逻辑”不复杂”,就一次性让 AI 生成了包含数据读取、清洗、转换和写入四个部分的完整脚本。代码看起来没什么问题,但运行之后发现转换逻辑有一个边界条件的 bug。修这个 bug 时,AI 给的修复代码意外改动了数据读取部分的逻辑(因为它们耦合在一起),导致又引入了一个新问题。来回折腾了一个多小时,最后还是把四个部分拆开重写才解决。如果一开始就分模块实现,每个模块单独验证,这个问题不会超过十分钟。
核心教训:模块不拆分,不只是”代码不好看”的问题,而是调试成本的数量级差距。
2.1 任务拆解的实际模式
将系统按职责边界切分为可独立验证的最小单元,并确立依赖顺序。
以构建产物管理 CLI 为例:
1 | |
每个阶段的完成标准在进入下一阶段之前必须明确。”能运行”不等于完成,要有具体的验收条件(见第三阶段的 Prompt 模板)。
2.2 逐模块执行的节奏
1 | |
特别注意最后一步:每次进入新模块时,把已完成模块的关键接口约定带进对话。不要假设 AI 记得上一轮说了什么,因为它不一定记得,或者它记得的和你理解的不完全一致。
2.3 重构窗口:跑通之后,专门留一次对话
功能跑通之后,单独开一次对话专门做代码质量提升,而不是边实现边优化。混在一起做的结果,往往是两件事都没做好。
重构对话的清单:
- 消除魔法数字,提取为具名常量
- 识别跨模块的重复逻辑,提取为公共函数
- 检查资源的申请和释放是否对称(文件句柄、数据库连接、GPU 资源等)
- 补充对非直觉性逻辑的注释(算法选择的理由、边界条件的处理原因)
第三阶段:利器——构建工程级 Prompt 说明书
“帮我写一个 XXX” 这种 Prompt 能解决的问题,是那种你自己十分钟也能写完的问题。一旦需求稍微复杂,这类 Prompt 的实际效果是:AI 在没有约束的情况下自由发挥,你拿到的代码和你真正想要的东西之间,隔着一堆隐含假设的鸿沟。
一个高质量的执行 Prompt,本质上是 PRD(产品需求文档)和 Technical Spec(技术规格文档)的融合。把这两份文档的核心信息塞进一次对话,模型的输出稳定性会发生质变——不是因为 AI 变聪明了,而是因为搜索空间被收窄了:模糊的输入对应巨大的可能性空间,AI 只能猜;清晰的输入约束了解空间,AI 才能精确执行。
3.1 完整 Prompt 的 10 个核心要素
下面用一个具体场景(构建产物管理 CLI 工具的阶段 0)演示完整的 Prompt 结构:
① 项目背景与目标
1 | |
② 目标用户
1 | |
③ 核心需求(当前阶段 MVP)
1 | |
④ 架构设定
1 | |
⑤ 技术约束
1 | |
⑥ 非功能要求
1 | |
⑦ 实施计划(当前任务范围)
1 | |
⑧ 输出要求
1 | |
⑨ 验收标准
1 | |
⑩ 限制条件(Anti-goals)
1 | |
这个 Prompt 的信息密度,和”帮我用 Python 写一个 SQLite 的构建产物管理工具”相比,差距是量级的。前者让 AI 在一个清晰定义的解空间里工作,后者让它在几乎无限的可能性里随机漫步。
附录:关于 AI 架构推荐的信任边界
这是这篇文章里最容易被忽视但实际上最重要的一节。
“让 AI 帮你做架构选型”这个建议是成立的,但有一个前提:你需要知道在什么情况下可以信任它的推荐,在什么情况下必须自己审核。AI 的架构建议有一个系统性偏向——它倾向于给出”通用成熟方案”,因为这是训练数据里最多的解法。但最通用的方案不等于最适合你当前约束的方案。
一个判断框架,分三类情况:
可以高度信任 AI 的架构推荐
场景的通用程度高、技术栈成熟、社区案例丰富。例如:
- 标准的 REST API 后端(CRUD 为主,无特殊性能要求)
- 常规的前端 SPA(React/Vue + 标准状态管理)
- 脚本类自动化工具(数据处理、文件操作、CI 集成)
在这些场景里,AI 的推荐通常稳健,你可以直接采纳并追问细节。
需要自己审核 AI 的架构推荐
场景有明确的非功能性约束,AI 可能忽略或低估它:
- 有延迟 SLA 的实时系统(AI 倾向于推荐”更易实现”的方案而非”更低延迟”的方案)
- 有内存预算约束的嵌入式或移动端开发
- 需要与特定版本的现有系统深度集成(AI 对版本兼容性细节不总是准确)
在这些场景里,把 AI 的方案当作”初稿”,用你自己的工程判断审核关键假设。
必须自己主导、AI 只做实现的场景
技术路线的正确性高度依赖领域知识,且错误决策代价极高:
- 高性能 GPU 计算管线(线程组划分、内存访问模式、同步策略)
- 自定义内存分配器或数据结构(性能 profile 驱动的设计决策)
- 安全敏感的认证/加密架构
在这些场景里,架构决策必须由你主导。AI 是你的实现者和橡皮鸭,不是你的决策者。如果你在这类场景里完全依赖 AI 的架构推荐,你最终得到的往往是一个”看起来能用”但在关键路径上暗藏性能陷阱或安全漏洞的系统。
后记
用这套方法做了几个项目之后,我发现最大的转变不是”AI 生成的代码变好了”,而是我自己在动手之前想得更清楚了。把需求、约束、验收标准写清楚的过程,有时候会逼出一些在直接写代码时根本不会注意到的矛盾和盲区——而这些矛盾如果到实现阶段才发现,返工成本往往是前期思考成本的十倍。
这大概是 AI 编程工具带来的一个意外收获:它把”把需求想清楚”这件事变得比以前更加重要,因为你必须用语言把它表达出来,而不是”先写写看”。
你能把问题拆解得多清晰,AI 就能帮你做到多少。