李宁老师在计算机图书领域颇有建树,早年出版的《Python 从菜鸟到高手》深入浅出,理解深刻。近期翻阅其 2023 年 10 月出版的《AIGC 自动化编程 -- 基于 ChatGPT 和 GitHub Copilot》,虽然技术迭代迅速,书中部分内容已显陈旧,但核心思想——解决复杂问题,通用的做法就是先分解后合并——依然极具价值。
从 2024 年初的 ChatGPT 爆发,到后续 DeepSeek、Google Gemini 等模型的相继问世,LLM 正逐渐融入日常工具范畴。无论是 ChatGPT、DeepSeek、Doubao,还是 Claude、Qwen,大模型本身的能力日益强大。在编程领域,GitHub Copilot、Cursor、CodeGeex 等工具;在工作流 Agent 方面,FastGPT(企业级知识库 RAG)、Dify 等;以及遵循模型上下文协议 MCP 的工具链,都在致力于基于 LLM 能力实现具体功能,安全地赋能私有数据,并尽量消除概率性输出带来的不确定性。
在编程实践中,将复杂需求分解(breakdown)然后合并是传统做法。借力大模型,路径亦是如此。结合当前经验,针对较复杂的项目,推荐以下流程:
- 手写需求梗概
- 利用 LLM 扩展成详细需求(多轮对话打磨),建议采用 MVP 原型 -> feature delta 1 -> ... -> full feature ready 的分步走式开发
- 手写设计框架,进行模块分割与技术架构规划
- 使用 LLM review 细化方案(多轮对话反复打磨)
- 让 LLM 生成代码文件结构与框架代码
- 在 VSCode 中创建项目,复制 LLM 生成的代码,手动试验生成 MVP 原型
- 在 VSCode 中使用 GitHub Copilot 分步实现详细需求中的功能,渐进式开发
驾驭 AI 之感悟
回顾相关实践,通过 ChatGPT 和 GitHub Copilot 完成图像浏览与搜索 Web 服务时,往往无需编写一行代码。只要描述准确严谨,生成的代码几乎能达到 100% 准确率。即便出现少量问题,重新生成即可。正如孔子所言'三人行,必有我师焉',对于 AI 而言,生成三遍,必有满意的代码。
若连续生成三次仍无法满足需求,通常有以下几个原因:
- AI 模型本身不够强大:这种可能性较小,目前主流模型如 GPT-4 系列已相当成熟。
- 描述不够准确:需检查描述是否严谨、全面,是否存在语病或歧义。
- 描述不合理:要求可能超出 AI 能力范围,或无法用指定技术实现。此时 AI 可能会根据概率统计返回不存在的函数或方法调用。
- 描述过于复杂:这是最普遍的问题。尽管 AI 能接收大量输入,但对于复杂的编程问题,AI 也可能忽略细节。解决方法很简单,就是分治法。将大问题拆分为中等问题,再拆分为小问题,直到每个问题一目了然。解决后再逐步合并。
ChatGPT 的编程能力取决于使用者如何处理复杂问题。就像同一把小提琴,演奏者的水平决定了最终效果。能否驾驭 ChatGPT,关键在于如何将复杂问题化繁为简,而非单纯撰写提示词。如果问题相当复杂,即使提示词完美无缺,ChatGPT 也可能无法完美解决。因此,要将复杂问题分解,直到 ChatGPT 可以完美解决为止。
关键点不仅在于分解,更在于组合。需要设计一套接口,将小题作为黑盒处理。无论小问题解决得如何,都不会从根本上影响全局。例如在实现复杂布局时,将每一部分单独作为一个类放入独立文件中,而不是直接插入主程序。这样即使某个类不满足要求,只需重新生成该类,不影响其他部分。
影响 ChatGPT 使用效果的关键点包括:
- 提示词:基础要求,必须清晰准确。
- 复杂问题的分拆技巧:决定处理能力的天花板。
- 设计接口:组合的关键,确保局部修改不影响全局。
- 组合问题:最后一步,利用接口逐级合并小问题,恢复至最初复杂问题。
总之,你有多强,ChatGPT 就有多强!
小结
本章以桌面应用为例,讲解了如何将复杂程序分解为多个小部分,分别由 ChatGPT 和 GitHub Copilot 生成代码,最后合并成大系统。应用这些工具的关键点只有一个:化繁为简。
ChatGPT 与 GitHub Copilot 各有千秋,不能互相取代。ChatGPT(尤其是 Plus 版)生成完整方案的能力较强,适合初步代码生成;而 GitHub Copilot 的代码补全功能则适合微调、完善和检测已有代码。混合使用才能达到理想效果。

