【AI 开发·第二集】老系统怎么交给 AI 重做一遍

【AI 开发·第二集】老系统怎么交给 AI 重做一遍

一、这一集和第一集不一样

第一集讲的是从零开始:一个不会写代码的人,怎么把一个系统从想法做到上线。

这一集讲的是另一件更常见的事:你手上已经有一套跑了多年的系统,想用 AI 把它改造一遍,该怎么下手。

这两件事的难点完全不同。

对比项从零做(第一集)改造已有的(这一集)
起点一张白纸一团已经跑起来、但说不清结构的代码
最大的难点不知道要做什么不知道现在有什么
最大的风险做出来没人用改坏了,原来的业务跟着停
AI 擅不擅长擅长取决于你从哪一步切进去

事情是这样的。我有一套自己摸索着做出来的电商管理系统,公司自用。因为是多项目并行,功能上有问题就改,改完接着用,一直没人从头理过它到底长什么样。后来负责跟我对接的同事提了个需求:帮忙备份一份出来,挂个网站。

就是从这一句开始的。

他后面一路走到「让 AI 把整个系统重写一遍」,中间经过了三个明显的阶段。每一个阶段本身都是成功的,但每一个阶段都会撞到自己的天花板。这篇文章就是把这三段路和它们的撞墙点讲清楚。

顺便说一句,同事用的是腾讯云的 WorkBuddy(这是个 AI 智能体平台,智能编码在它同系列的 CodeBuddy 里)。但下面讲的流程,换成任何一家的 AI 编程工具都成立——关键不在工具,在你把它放在流程的哪个位置。

二、第一步:先备份,再挂出一台能打开的网站

这一步看着最没技术含量,但它决定了后面所有事能不能做。

同事一开始要的只是「备份一份,挂个网站」。而这件事的意义比听起来大得多:

这一动作真正解决了什么
备份出来有了一个可以随便折腾的副本,动坏了不心疼
挂上网站AI 有了一个能打开的地址,能自己看渲染结果
跑在和正式环境一样的地方看到的样子,就是用户看到的样子

最后这条最容易被忽略。如果 AI 只能读到源码、看不到页面,它就只能凭想象判断「这个改完应该没问题」。能打开页面,它才有办法自己发现问题。

给 AI 干活之前,先给它一个能亲眼看到成果的地方。这一条后面还会出现一次——它就是最后那个 FTP 账号的前身。

三、第二步:从一个外挂开始,别一上来就动核心

同事的第一个真实需求是做一个小程序接进来。

这是最聪明的一个起点,因为它符合一个原则:先做加法,不做减法。

做法改动范围做坏了会怎样适合什么时候
外挂一个前端(小程序、独立页面)只在系统外面加一层摘掉就行,原系统不受影响刚开始用 AI 时
改系统里的某个功能动到内部逻辑可能连带影响别的模块熟悉这套代码之后
整体重构全部重写新系统不上线之前都算没做确认值得重做之后

结果也印证了这个选择——很快就做好了。

为什么快?因为外挂这件事对 AI 特别友好:它只需要知道「数据从哪个接口拿、页面长什么样」,完全不用理解老系统内部那团历史欠账。这是 AI 最容易发挥的位置。

但也正因为如此,它很快就到头了:小程序只是把数据换个样子展示,碰不到任何真正的业务逻辑。想让业务本身变好,就绕不开那套老系统。

四、第三步:让它改具体问题——见效最快,也最快到头

下一步很自然:既然 AI 这么能干,把系统里的问题一个个交给它改。

这一步的见效速度是三个阶段里最快的。改一个表单、调一处计算、补一个查询条件——这类问题边界清楚、改动有限,AI 做得又快又好。用过一次的人通常会觉得「这也太强了」。

问题出在后面。改得越多,越会发现一件事:

每一次修改,AI 都得先花大量精力去「看明白这段代码在干什么」。

不是因为它笨,是因为这套代码本身就是摸索着攒出来的——同一个功能可能写在三个地方,命名前后不统一,没有文档,当年的判断只有做的人还记得。AI 每次进来都要从零重建这份理解,而且重建完还未必对。

更麻烦的是:改完 A 处,B 处悄悄坏了。它不知道 B 和 A 有关系,你也不知道。等到用户报上来,往往已经是几天以后。

五、第四步:认出该停手的信号

到某个时候,同事的判断变了。他发现「二开」这件事,让 AI 直接改原来的代码,有点费劲。

这个「费劲」不是一个模糊的感觉,它其实是几个很具体的信号。如果你正在犹豫要不要继续改下去,对照这张表:

你观察到的现象它说明什么
AI 每次改之前,要先读一大堆文件才敢动手它在重建上下文,这部分成本不会下降
改一个地方,别的地方跟着出问题模块之间是隐式耦合的,靠改是解不开的
同一个功能,系统里能找到两三个版本结构已经乱了,再加功能只会更乱
你自己也说不清某个逻辑为什么要这么写知识只存在于代码里,没有任何地方可查
新需求提出来,第一反应是「这个改起来会牵动一大片」改动成本已经超过重写成本了

只要中了两条以上,就该考虑停手了。继续修下去不是不行,只是每修一处,下一次修起来会更贵。

这里有个反直觉的地方:修不动的根本原因,不是 AI 能力不够,而是它的对手是一套没有结构的老代码。AI 最擅长的事情,是在一个干净的地基上把楼盖起来;它最不擅长的,是在一栋结构已经乱了的房子上继续加盖,还得保证原来住里面的人不受影响。

所以真正的解法不是「换个更强的模型」,而是——给它一个干净的地基。

六、第五步:重构之前,先让它把功能整理一遍

同事接下来做的这个动作,是整条路径里最容易被跳过、但最不能跳过的一步:

他没有直接说「你把这个系统重写一遍」,而是先让 AI 把整个项目做一个功能整理。

这个先后顺序决定了重构的成败。

直接重写先整理再重写
AI 依据什么写照着现有代码抄结构照着一份明确的功能清单写
老代码里的毛病被原样带进新系统整理过程中被发现、被去掉
遗漏的功能很难发现,上线后才知道清单上列着,能逐条核对
你的参与方式没法参与,只能等结果能看清单、能补漏、能拍板

关键在于最后一行。功能整理这份东西,是你唯一能真正参与进来的环节。

因为老系统的真实功能,散落在三个地方:代码里、当年的口头约定里、以及你自己和同事的记忆里。AI 只能看到第一个。让它先列清单,等于给了一个机会,让你把后面两个补进去——「这个功能我们其实早就不用了」「这里还有个隐藏的规则,只有老客户才走」。

这份清单补得越全,重构出来漏东西的概率越低。而一旦开始写代码,你能插手的余地就很小了。

同事在这个过程中还做了另一件事:他把很多细节也提了出来,一并完善了。这些细节平时藏在「反正一直这么用」的习惯里,不改的时候没人想起,趁着重写提出来,正好一起解决。

三个阶段:外挂、修补、重构,每段都有该停手的信号

七、第六步:给它一个 FTP 账号,把最后一公里打通

这是整篇文章里最值得抄走的一招。

因为这个 PHP 项目部署很简单,同事直接给 AI 开了一个 FTP 账号。

听起来是个小改动,实际上它把整条流程闭合了。

在没有这个账号之前,AI 编程卡在一个很低效的地方:AI 改完代码,把文件交给你;你打开 FTP 软件,一条条拖上去;打开浏览器,一页页点;发现问题,再回头描述给 AI。中间这几步全是人工,而且每一步都会丢信息——「刚才那个报错长什么样」这种事,人转述给 AI 的时候常常已经走样了。

最后一公里:原来每一步都要人工搬运,给了 FTP 之后 AI 自己闭环

给了账号之后,这个循环变成:AI 改代码 → 自己传上去 → 自己打开页面看 → 看到报错原文 → 自己再改。

报错原文直接进它的上下文,不需要经过任何人转述。这一点比省下的手工操作重要得多。

而人做的事情变成了:最后验收。从搬运工变成验收员。

先说清楚风险,再说怎么做得安全:

风险怎么办
传错文件把站点搞挂只开网站目录权限,不给整个账号根目录
改动覆盖了正确版本开账号之前先完整备份一次,并且保留一份不动
改到一半没人知道最好给的是测试环境,验收通过再由人合并到正式环境
账号泄露单独建一个账号,别用主账号;用完可以随时改密码或停用
如果这套系统撑着在跑的业务,别直接给正式环境的写权限。先搭一个副本环境,让它在副本上跑通,人看过再上正式。这一步多花的半天,比事后回滚便宜得多。

八、第七步:照清单验收,别凭「看着像」

重构最容易出的问题,不是新系统打不开——而是功能看着都在,但少了某个细节。

这种问题特别难发现,因为它往往是很久才触发一次的业务路径:「上次那个老客户的对账单怎么导不出来了?」这时候距离上线可能已经过去两周。

所以验收不能靠「打开看看像不像」,要照着第六步那份功能清单逐条过。

怎么验为什么
照功能清单逐条打勾清单是唯一完整记录「这个系统该有什么」的东西
重点走一遍不常用的路径常用功能你天天用,早就发现了;冷门的没人碰
拿旧系统的真实数据验算一遍同样的输入算出同样的结果,才算真的对上了
让真正用它的人试他闭着眼都能点到的地方,会立刻发现少了什么

第二行尤其要留意。重构做得好不好,不是看主干功能有多顺,而是看边角功能有没有被落下。

九、这条路径为什么能复用

回头看整个过程,同事其实没有做什么高深的规划,他只是每一步都选了对 AI 最友好的那个动作:

阶段他选的AI 在这件事上擅长吗
第一步备份 + 挂站擅长,纯增量,风险为零
第二步外挂一个小程序非常擅长,只需要外部接口和页面
第三步逐个改问题勉强,能改但理解成本很高
第四步整理功能擅长,这是纯阅读和归纳
第五步整体重写最擅长,干净地基上盖楼
第六步给 FTP 让他自己部署擅长,闭环后迭代速度完全不同

注意第三行和第五行的对比。同样是改系统,「逐个修」是 AI 的弱项,「整体重写」是它的强项。

很多人卡在第三步就走不下去了,结论是「AI 改我们这老系统不好使」。其实不是不好使,是选错了让它干的活。老系统真正的价值不在代码本身,而在你已经知道它该长什么样——那份知识在你脑子里,不在代码里。把那份知识交给 AI,让它重写,比让它去猜老代码更快,也更准。

所以这套路径能复用到:

  • 任何一套「自己摸索着做、跑了好几年、没人敢动」的内部系统
  • 任何一次「改起来牵一发动全身」的改造需求
  • 任何你被交接了一套没有文档的老代码、想重新掌握它的时候

十、最容易踩的坑

坑怎么避
一上来就让它改核心功能先从外挂开始,跑通一次再动里面
改着改着不断加需求,永远收不了尾给自己定个数:改到第几个问题还觉得费劲,就转重构
直接让它重写,跳过功能整理先要一份功能清单,你亲自补一遍漏
只告诉 AI「重写一遍」,没说新系统要什么样清单里写清楚每个功能要做到什么程度,不只是列名字
给了 FTP 但没备份开账号前先整站备份,并且留一份不改动的
给的是正式环境的写权限能搭副本就先搭副本,跑通再上正式
上线后凭「看着像」验收照清单逐条过,重点测不常用的路径
以为给了 FTP 就不用管了人只是不做搬运了,验收的责任一点没减少

写在最后

这条路上最关键的一次判断,不是「用了什么工具」,而是那句:二开有点费劲了。

费劲不是失败的信号,是该换一个动作的信号。它在告诉你:继续在旧结构上加东西,成本只会越来越高;而换到一张干净的画布上,AI 的能力才真正放得开。

第一集讲的是怎么让它从无到有做出来。这一集讲的是——当你有一套跑了很多年、连自己都说不清的老系统时,别让它去猜你当年想了什么,直接告诉它你现在想要什么。

那份「你现在想要什么」,就是那份功能清单。