仅凭ai真的能做好复杂项目吗?
凭AI从零搭多源RAG系统后,我看清了AI编程的真相
上个月我干了一件事,现在回头看,大概是我这一年最有教育意义的一次实践。
我试着用Claude和GPT,从零搭一个完整的多源RAG系统。不是那种跑个demo发朋友圈的水平,而是真的要接实验室里乱七八糟的文档数据、做查询改写、做混合检索、最后部署成一个组里其他人能用的内部工具。
我给自己的规则是:尽量让AI写所有代码,我只负责提需求和做决策。
前三个小时,我觉得世界变了。
架构图让AI画,清晰漂亮。后端代码让AI写,FastAPI+LangChain唰唰地出。前端让AI搭,React组件一个接一个。连Dockerfile和docker-compose都帮我配好了,nginx反向代理的配置都给你写得明明白白。
那种感觉怎么形容呢——就像你突然有了一个什么都会、什么都不抱怨、凌晨三点也不犯困的搭档。我当时真的产生了一种很强的幻觉:照这个效率,独立开发者要起飞了吧?
然后第二天开始联调。
然后我撞了整整一周的墙。
先回答表面上的问题:能,但有一个残酷的前提。
AI确实能帮你生成一个”看起来完整”的项目。这一点我不否认,而且我亲身体验过,它在”从0到0.6”这个阶段的效率提升是碾压级的。
以前搭一个项目骨架可能要两三天,现在两三个小时。以前查一个不熟悉的库的用法要翻半天文档,现在问一句就有。以前写CRUD写到想吐,现在AI替你吐。
但”看起来完整”和”真正能在生产环境里跑起来”之间,隔着一条比你想象中深得多的沟。
那条沟里藏着什么呢?
藏着边界情况、藏着模块间的隐式耦合、藏着”这个字段业务上不允许为空但数据库设计时没加约束”这种只存在于人脑子里的知识、藏着并发场景下的竞态条件、藏着用户会用你根本想不到的方式把你的系统搞崩的一百种可能。
这些东西加起来,就是那最后的20%。但这20%消耗的时间,往往是前面80%的三到五倍。
我那个RAG系统就是这样。AI帮我写完了所有模块的代码,每个模块单独测都能跑。但一联调,各种诡异的问题像地鼠一样冒出来:文档解析偶尔会吞掉表格里的数据、embedding的batch处理在遇到超长文本时直接OOM、前端的streaming展示和后端的SSE推送时序对不上、检索结果的reranking在某些query下反而把最相关的结果排到了最后面……
每一个问题,单独拎出来问AI,它都能给你一个看起来合理的解答。
但问题是——你得先知道问题出在哪。
复杂项目的核心困难根本不是”写代码”
这是我觉得很多人对”AI做项目”这件事最大的误解。
他们的思维链条是这样的:项目复杂 → 代码量大 → 需要写更多代码 → AI能写代码 → 所以AI能做复杂项目。
这个推理链条的第一步就错了。
复杂项目之所以复杂,从来不是因为代码量大。一个十万行代码的CRUD系统可能远没有一个三千行代码的分布式调度器复杂。
复杂性来自于三个东西:
第一,状态空间的爆炸。
系统里有几十个组件,每个组件有自己的内部状态,组件之间还会互相影响。当A处于状态X、B处于状态Y、同时用户正在做Z操作的时候,系统会怎样?这种组合爆炸的可能性,不是AI能穷举的,也不是人能穷举的——但有经验的工程师能凭直觉知道”哪些组合最容易出事”,然后重点防御。
AI没有这种直觉。
第二,决策的连锁反应。
技术选型是一个典型的例子。用PostgreSQL还是MongoDB?用Redis还是Memcached?用gRPC还是REST?每一个选择看起来都是局部的,但它会像多米诺骨牌一样影响后面十几个环节——缓存策略、数据一致性方案、运维复杂度、团队学习成本、未来的扩展性。
AI能告诉你每个选项的优缺点,列得整整齐齐。但它做不了那个在特定约束条件下的综合权衡。因为那个权衡依赖的不只是技术知识,还有对团队能力的判断、对业务未来走向的预判、对”什么东西以后改起来最痛”的经验。
第三,需求本身是模糊的、变化的、甚至是矛盾的。
这一条最致命。
真实项目里,需求从来不是一个写好的spec文档。产品经理说”我想要一个智能搜索”,你以为他要全文检索,做完了他说”不对,我想要的是用户输入一句话就能找到答案那种”。你做了语义检索,他又说”但是关键词精确匹配的场景也不能丢”。你把两种混合在一起了,他说”结果排序不太对,能不能更智能一点”。
这种在模糊中摸索、在反复沟通中逼近真实需求的能力,是AI完全不具备的。
因为AI只能回答你问的问题。而复杂项目里最难的事情,是搞清楚应该问什么问题。
我那一周撞墙的具体经历
说点实际的,让你感受一下那个从”AI真棒”到”还是得靠自己”的心理曲线。
第一天,一切顺利。AI帮我搭好了项目骨架,包括文件结构、基础的API路由、数据库schema、前端的页面框架。我几乎没怎么自己写代码,主要工作是review AI的输出然后微调。成就感爆棚。
第二天,开始写核心的文档处理pipeline。这里就开始出问题了。AI给我写的PDF解析代码用的是PyPDF2,在规整的论文PDF上效果不错,但我们实验室的文档有大量扫描件、有表格、有手写批注。我跟AI说了这个情况,它建议我换成unstructured库,给了我新代码。但新代码跟原来的数据结构不兼容,改了接口之后,下游的chunking模块又挂了。
这是AI写代码的一个典型问题:它每次给你的都是局部最优解,但局部最优解拼在一起,经常不是全局最优。
第三天到第四天,在做检索和排序。这部分我自己比较熟,所以AI给的代码我能快速判断对不对。但有一个很隐蔽的bug花了我大半天:AI在实现hybrid search的时候,把BM25的分数和向量相似度的分数直接做了线性加权——但它没有做归一化。BM25的分数范围和cosine similarity的分数范围完全不在一个量级上,直接加权等于BM25被完全淹没了。
我问AI这段代码有没有问题,它说”看起来没问题”。我把具体的分数打印出来给它看,它才意识到需要归一化。
这就是AI的盲区:它能写出”语法正确、逻辑看起来对”的代码,但它不会主动去想”这段代码在真实数据上跑起来,数值分布会是什么样”。
第五天到第六天,部署。这是最痛苦的部分。本地跑得好好的东西,到了服务器上各种出问题。CUDA版本跟PyTorch不兼容、容器里的内存不够加载模型、nginx的proxy_pass配置和SSE的streaming冲突。每个问题都能问AI,AI也确实能给出可能的解决方案——但通常要试三四个方案才能找到真正管用的那个。
而且AI给的方案经常有”时效性问题”。它推荐的某个解决方法是基于旧版本库的,新版本的API已经改了。这种坑,你不自己踩一脚根本发现不了。
第七天,基本跑通了。但回头看这一周,我的真实感受是:如果没有AI,这个项目我大概需要三周。有了AI,用了一周多。
效率确实提高了,但没有提高到”AI替我做完了”的程度。更像是”AI帮我跳过了所有简单的部分,然后我被所有困难的部分集中暴打”。
(某种意义上,体验反而更痛苦了。以前简单和困难的部分交替出现,还能喘口气。现在简单的部分被AI秒杀了,剩下的全是硬骨头。)
真正的分水岭:你自己到底有多少斤两
说了这么多,回到最核心的判断:
AI对项目开发的帮助程度,几乎完全取决于使用者本身的水平。
这句话不是鸡汤,是我观察自己和实验室同学用AI的经历后得出的最诚实的结论。
如果你本身就能做好这个项目—— AI让你快3-5倍。你知道架构该怎么设计,让AI帮你快速实现。你知道哪里有坑,让AI帮你写防御性代码。你知道这段逻辑有性能问题,能精确地告诉AI”帮我用XXX方式优化这个函数”。你review AI代码的时候,能一眼看出它哪里写得不对。
这时候AI是一个极其强大的加速器,你是驾驶员,它是引擎。你踩多深的油门,它就给你多大的推力。
如果你本身做不了这个项目—— AI能帮你走到”看起来像那么回事”的阶段,然后你就会卡住。因为AI生成的代码你看不透,出了bug你不知道该往哪个方向查,AI给了三个可能的原因你不知道该先试哪个。你开始反复问AI,AI每次给你一个不同的建议,你照着改,改出新的bug,再问,再改,再出bug……
最后那个项目变成一团谁也看不懂的东西。包括你自己。包括AI。
我见过一个比较极端的例子。一个本科同学想做毕设,找AI帮他写一个推荐系统。AI确实帮他从零搭了一个能跑的系统出来,代码量还挺大,看起来很完整。但答辩的时候老师随便问了几个问题——”你这个embedding维度为什么选128?”“你的负采样策略是什么?为什么这样设计?”“这个loss function的物理意义是什么?”——他一个都答不上来。
因为那些代码不是他写的,也不是他理解后让AI代写的。是AI写的他直接用的。
代码跑起来了,但知识没有长在他身上。
AI搞不定的事情清单
根据我自己的经历和观察,列一些AI在复杂项目中真正搞不定的事:
- 跨文件的逻辑一致性:当项目有几十个文件时,AI的上下文窗口根本装不下全貌。它改了A文件的接口签名,不知道B、C、D三个文件也在调这个接口。即使长上下文模型,也很难在脑子里维护完整项目心智模型。
- 隐式约束和业务规则:很多规则不在代码、不在文档里,只在踩过坑的人的经验里。
- 性能问题的定位:AI能写出功能正确的代码,但性能问题需要看 profiling、监控、理解底层执行模型,而非仅看代码。
- 系统级debug:问题出在代码与系统、网络、硬件、第三方服务的交互时,AI很难精准定位。
- 与人打交道的部分:沟通需求、对齐方案、协调协作、判断他人未说出口的意图,项目成败往往由这30%决定,AI完全无法替代。
很多项目最后做烂了,不是技术不行,是沟通出了问题。需求没对齐,接口没约定清楚,优先级没达成共识。这些事情没有任何一个大模型能替你做。
那到底该怎么用?
分享一下我现在摸索出来的工作流,不一定是最优的,但至少是踩坑后更舒服的方式。
核心心法:把AI当一个极其博学但没有判断力的实习生。
它什么都知道一点,写代码速度极快,但你绝对不能把一个完整的任务扔给它然后等着收成品。你得把任务拆碎,每一步都检查,关键决策自己做。
具体使用环节:
- 设计阶段:自己先定架构与模块划分,让AI帮忙review、找潜在问题与边界情况。
- 实现阶段:单个函数、模块让AI写初版,自己review修改,确保看懂每一行代码。
- 测试阶段:AI写单元测试,集成与端到端测试自己来。
- Debug阶段:自己先定位问题范围,再把代码与报错喂给AI分析,不甩锅式提问。
- 文档与注释:交给AI,效率与质量都很高。
- 重构阶段:AI生成第一版重构方案,最终方案自己定。
规律很明显:
AI负责”执行”,你负责”判断”;AI负责”怎么实现”,你负责”做不做”和”做哪个”。
你对项目的理解和掌控,任何时候都不能让渡给AI。一旦开始”信任AI输出不需要检查”,就等于失去对项目的控制。
一个更深层的问题
AI时代,”会做项目”这件事的含义正在发生变化。
以前,”会做项目”约等于”能写出实现功能的代码”。代码能力是核心,手速是竞争力。
现在,写代码这件事正在被AI大幅压缩。那”会做项目”的核心能力是什么?
我目前的理解是三样东西:
- 理解问题的能力:把模糊需求翻译成清晰技术问题,界定范围与优先级。
- 评估方案的能力:从AI给出的多个方案中,选出最适配当前场景的一个。
- 整合的能力:把模块、技术、人力工作整合成稳定可用的整体,在约束中做平衡。
某种意义上,AI把软件开发的”体力活”大幅消除了,剩下的全是”脑力活”。
这对真正有能力的人是巨大利好——脑力不用浪费在模板代码上。但对只会写重复代码的人,是一个残酷信号。
结语
回到最开始的问题。仅凭AI真的能做好复杂项目吗?
我的回答是:AI能帮你做完一个复杂项目,但它做不好一个复杂项目。
“做完”和”做好”之间的差距,就是你作为工程师、开发者、思考者的价值所在。
AI是你的引擎,但你得是那个知道要去哪的人。引擎再强,没有方向盘和导航,你只会原地轰油门——动静很大,哪也去不了。
我现在每天都在用AI写代码、读论文、做实验。它确实改变了我的工作方式,效率确实提高了很多。但我从来没有一秒钟觉得”我可以不用理解这些东西了”。
恰恰相反。AI越强,你需要理解的东西越多。
因为你要理解的不再是”怎么写一个for循环”,而是”这个系统为什么要这样设计”“这个方案在什么条件下会失效”“这段AI写的代码背后的假设是什么”。
层次变了,但学习的必要性一点没少。
晚上10点的实验室,屏幕上开着四五个AI对话窗口,旁边还有一个terminal在跑实验。有时候我会想,我们可能是最后一代需要”学会编程”才能做项目的人,也可能是第一代需要”学会跟AI协作”才能做好项目的人。
这两件事并不矛盾。甚至,前者是后者的前提。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)