
现有的项目背景,已经平稳运行了有接近 10 年了。所有的拓展、报表、API 等全部基于 PHP7 Laravel 5.2 进行的开发,最终目标是升级到最新的 Laravel 12
简单的使用 find . -type f -name "*.php" | wc -l 发现有接近 7500 个 php 文件。
升级的原因是老板认为版本过老,有潜在的漏洞风险。
关于新的 leader ,目测有 20 年以上的开发经验,但他几乎不懂 php ,有.net react nodejs 的开发经验,Claude code Max 忠实用户,最近又新开了几个 Max 账号给其它三位 php 开发。
目前执行到了第一步,先简单的从 5.2 升级到 5.3 试试水,让 Claude/Chat-GPT 生成了大概 12 个步骤,每个步骤都单独进行 git commit ,整体执行下来已经消耗了整月 20%的 token ,升完后遇到 bug 喂给 Claude 解决,一直反复进行。
三位同事的反馈是 Claude 升级的时候会改现有的业务逻辑,需要大量的时间去 review 代码。
各位有没有使用过 AI 来进行老项目升级的经历?
     1   collery      12 天前   除非你现在的人员特别清晰系统代码、逻辑以及相应功能点,不然不能一口气吃个胖子。  建议拆分 灰度 新项目这种弄  |  
     2   Moyyyyyyyyyyye   PRO 属于 AI 带来的自信心膨胀,按道理平稳为什么升级,开拓新业务新方向不行吗 o()o   |  
     3   swananan      12 天前   升级原因感觉就经不起推敲,很明显风险大于收益。  Claude Code 或者 Codex 我觉得是具备做老项目升级的能力的,但是就跟普通开发去重构老业务一样,非常懂业务的老开发都可能被埋坑里爬不出来。如果你不给 Claude Code 和 Codex 提供足够详细的业务背景,完善的测试来兜底。那这么大规模的修改,不踩坑就奇怪了。 另外,至少小规模按模块迭代,分批次上线吧,一口气改完是什么,开着飞机换引擎,一定要挑战最高难度吗,哈哈  |  
     4   liuliuliuliu   PRO 这个不用想,100%完成不了,而且 php 还不好测试,这就更困难了。   |  
     5   Zhuzhuchenyan      12 天前   只借助 Claude Code 到 Laravel 12 很困难吧,查了一下 Laravel 12 是 2025 年 3 月 7 日发布的,而 Claude Sonnet 4.5 的知识截止日期是 2025 年 1 月  Claude Sonnet 4.5 has a knowledge cutoff date of Jan 2025. This means the models’ knowledge base is most extensive and reliable on information and events up to Jan 2025. 我司目前还没在大项目上完全依赖 AI 做升级,倒是在几个代码量小的 Nest.js 和 Angular 项目中测试过 AI 跨一个大版本升级的能力,怎么说呢,还凑合,相较于人类工程师来说并没有节省很多时间。因为还是需要大量的时间去审阅所有的改动。  |  
     6   et5494      12 天前   现在不太适合直接应用于整个完成的复杂的生态  在这种项目中 AI 会增加添加很多“创新” 我们项目之前玩过,后面放弃了,工作量太大 一个微信小游戏项目  |  
     7   Hyxiao      12 天前   可以尝试把老服务单独,可抽离的,拆分出新的服务出去,慢慢去迭代。   |  
     8   jarl      12 天前  骂他 sb   |  
     9   Georgedoe      12 天前   这跟只写代码不调试有什么区别 , 没测试用例保障, AI 给你业务改了都不知道啊   |  
     10   Ketteiron      12 天前   大型项目想使用 AI 简单重构不太现实,投入大量时间是必然的。  我的建议是直接用最新版重写,或者换语言,或者什么都别做,这取决于开发资源有多少。 如果只是为了解决"漏洞",升级后还有会别的漏洞,现有代码迁移到新环境可能有新的运行时隐患,如果只是一次性投入开发资源解决旧版本隐患,说实话没多大意义。  |  
     11   YanSeven      12 天前   这个就如同完全让”驾”在路上狂飙一样让人心惊胆战。   |  
     12   hejw19970413      12 天前  升级不如重写,重写不如不写   |  
     13   spritecn      12 天前  这比重写一个工作量大   |  
     14   NoobPhper      12 天前  说明你领导 什么都不懂, 对软件工程没有敬畏之心, 最基本的 ROI 都估不出来   |  
     15   version      12 天前   想要避免漏洞.那就写中间件转发请求呢..用 nodejs 都行..这样随时微服务隔离后续的开发.旧的代码包一层监控起来..  现在的机器性能.没啥性能瓶颈.无限套娃请求都无所谓的.花那时间还不如加硬件配置.. Ai 写很多旧业务都模拟不完.. 也有可能说说而已..不然怎么入职..最终会妥协最小改动  |  
     16   gitjcc      12 天前  跨度太大了,升级不如重写 +1   |  
     17   Chaidu      12 天前  一步到位,从 5.2 直接升到 8.4 ,也别去检查代码,出问题就甩锅给领导和 AI   |  
     18   wysnxzm      12 天前   手里有锤看什么都是钉,砸到手就老实了   |  
     19   HENQIGUAI      12 天前  这种感觉行不通,AI 现阶段虽然强,但还是不能无视软件工程这么多年的基本法。   |  
     20   bojue      12 天前  Claude 帮我写前端,模版式的 CRUE 项目开发没任何问题,但是我的编辑器配置部分给我写崩了   |  
     21   MIUIOS      12 天前   出了问题他可以背锅的话随便升,如果是开发背的话,当我没说   |  
     22   jhdxr      12 天前   1. 我个人经验 laravel 在你们没定制底层的基础上兼容性其实是很好的。有很多老的方法现在不推荐使用(甚至文档上完全没有相关踪迹),但依然是可以使用的。(例如 model 里自定义属性以前是用同名方法现在是用 Attribute ;鉴权以前可能是在 controller 的前置 filter 或 middleware 里完全自己写逻辑现在推荐用 guard )  2. 个人经验,单纯的依赖 AI ,它会把很多老的方法改成最新的推荐的写法,这当然没错,但没必要,尤其是一次性改这么多是毫无疑问不推荐的。。。 3. 建议是直接 composer 硬升版本,然后把 bug 丢给 AI 去解决 4. 更好的做法是让 AI 先去写一堆 test cases ,然后再升级  |  
     23   Duanye7X24      12 天前  这不纯纯的给你送经验吗?锅他背,你去实践积累经验   |  
     24   acerphoenix      12 天前   上面所有同学说的反对意见都很正确,贴合实际,但作为旁观者,我倒是想看看这么升级的进展, 反正我自己肯定不这么搞   |  
     25   Kevin2      12 天前 via Android  重构火葬场   |  
     26   way2create      1 天前  代码另说,各种文档完善吗?   |  
     27   beneo      12 天前  建议先看《重构》这本书   |  
     28   abc0123xyz      12 天前  复杂业务不太好处理。  另外这么久的项目,我怀疑重构时候要从代码倒推业务,或者从业务猜代码啥意思...  |  
     29   jjianwen68      12 天前  大概这 leader 不等升级完就跑路了   |  
     30   mightofcode      12 天前  能找这个 leader 买几个 max 账户吗   |  
     31   wonderfulcxm      12 天前 via iPhone  我也升级了一个 PHP 项目,从 php5.6 升级到 8.3 ,Wordpress 从 4.x 升级到 6.8 ,wp 的向下兼容做得还不够错,遇到的错误和警告 ai 基本能处理。有些插件已经没人再升级维护了,我用 ai 修复了里面的写法。   |  
     32   imnpc      12 天前   Ai 目前做不了这个 ,没有最新的训练数据  1.PHP 版本变化 用法不同 2.Laravel 每个版本都有配置文件和相关用法变更 3.各种组件包类库不兼容 composer 需要升级对应的包 AI 无法做到自动识别 https://laravelshift.com/ 去这里花钱升级吧 能一步步给你从最低版本升到最新 只不过价格有点贵  |  
     33   zhanghb      12 天前  正在用 max 重构一个 java 8 项目,一定要文档先行、小步验证。步子稍微一大就乱成一锅粥。已经踩过坑回退了一大批代码重头开始了。   |  
     34   Mithril      12 天前  你要想在这公司长期工作,那最好不要碰。  想要赚一笔走人就没问题。升级完了今年的 KPI 就有了,年终奖到手就辞职,你管它明年坑不坑呢。 你猜你的技术 leader 是哪一种?  |  
     35   tojike      12 天前    |  
     36   Varobjs      12 天前   要不你和 leader 提议吓,要玩就玩彻底点,还换什么 laravel 12 ,直接换语言,换数据库   |  
     37   sagnitude      12 天前  干这事除了做着好玩,他对公司产生了什么价值?有点太搞了,还不如把 claude max 的钱发成补贴,让大家多开开 code review 会   |  
     38   javalaw2010      12 天前   正如#22 所说,laravel 的兼容性确实很不错,不过这里面最大的麻烦不是 laravel 版本升级而是 php 版本升级。我其实觉得没必要一个版本号一个版本号的升,直接一步到位 5.2->12, 如果担心风险太大可以 nginx 层面做个分流,一个接口一个接口的改,渐进式迁移,改完一批接口观察一段时间,没问题就升级下一批,虽说有 7500 个文件,但我料想真的要修改的 PHP 文件没有那么多,拍脑袋估一下可能 20%~40%。  不过讲道理,CC 并不太适合处理这个,可以试一下付费方案 https://laravelshift.com/ ,99 刀的订阅,大概会比这个性价比高不少吧。  |  
     39   br_wang      12 天前  单测全吗?是不是人来维护单测代码,Claude 修改业务代码,好一点……   |  
     40   ZztGqk      12 天前 via iPhone  ai 改的很快,但 review 要挺久的   |  
     41   Jaeger      12 天前  总结这 10 年来的项目痛点,然后重新思考项目架构,然后渐进式重构,用新的服务代替旧的服务。甚至还可以考虑使用 golang 代替 PHP ,PHP 用的人已经不多了。   |  
     42   wmwgijol28      12 天前  不如新建项目,按功能版块 API 一批一批迁移.   |  
     43   NotLongNil      12 天前  ai 在动态类型语言上面,很容易出错   |  
     44   encro      12 天前  这是一个 sb ,  一来就干这种事, 哪怕干成了, 也让老板容易对 AI 和开发产生误解。  |  
     45   laminux29      12 天前  现在的 AI 有 2 个问题,第一是单个对话 session 的显存、内存、存储空间不够,导致提问细节多了后,AI 会漏掉很多细节。第二个问题是,AI 在很多领域缺少知识投喂,比如 AI 极难搞定正确地统计 doc 、docx 的页面数量、一行代码写入 crontab 之类的需要研究与测试的内容。  AI 现在正确的用法是,同时用多款 AI ;让 AI 每次只解决一个小问题;让 AI 当助手而不是让它主导。  |  
     46   TabGre      12 天前 via iPhone  怕不是脑袋秀逗 AI 不是这样玩的   |  
     47   wsseo      12 天前  我建议升级。失败了可以看一乐,成功了可以为总结经验。   |  
     48   iOCZS      12 天前  跟蒙眼狂奔有何差别。。。   |  
     49   scys      12 天前  AI 升级大项目,短时间内跑完还好点,如果超过几个月,你会发现,里面竟然是几个不同思路的大佬在开天坑。   |  
     50   huaweii      12 天前 via Android  注意是「新来的」 leader ,属于没活嗯整烂货。而且他上面居然没人比他更懂这种搞法的风险,不叫停?这个公司感觉   |  
     51   facebook47      12 天前 via Android  这种升级,不如重做,既不动现有代码,又可以从优化的角度去升级、重构项目   |  
     52   tanxnative      12 天前  其实我也想用 golang 重写很多中间件,但是 ai 居然开始胡说了   |  
     53   maddot      12 天前   https://laravelshift.com/ 用过一次,真的挺牛的,4.2 -> 12, 升级后需要手工改的地方很少   |  
     54   BALDOOR      12 天前  佩服,我们小项目,100 个左右文件,都不敢这样搞  PHP 大版本和 Laravel 大版本升级,都是新建项目,复制旧文件一步步对着 IDE 检测提示重写的 然后人工填数据测试几次 AI 写代码,我们现在只用在代码提示和一些简单的,收敛且封闭的功能 AI 的幻觉很严重的,漏掉的东西也很多,直接写甚至比 review AI 写的快多了  |  
     55   Greendays      12 天前  很合理的想法啊,试试看呗。   |  
     56   xi4oh4o      12 天前 我从 5 升级到 12 照着文档一步一步来就行,搭配 codex   |  
     57   luziafy      12 天前  没活硬整啊,要么不升级,要么找个人对照 PHP 跟 Laravel 每个版本的升级文档修改就行了,并不复杂   |  
     58   zy0829      12 天前  就问一个问题,出问题怎么算?   |  
     59   qicaisedeyun      12 天前  你们公司产品做的啥项目?哪个行业的?   |  
     60   bugsnail      12 天前    |  
     61   forbreak      12 天前  没活硬整,升级就准备加班吧。 不说 AI 识别不识别到不同版本的语法了,单就业务逻辑这块真能 100%复刻出来吗?   |  
     62   ldw4033      12 天前  大佬觉得 AI 可以在帮他再创辉煌   |  
     63   Suaxi      12 天前    |  
     64   Smileh      12 天前  5.5 都好升级到 12  5.2 要麻烦很多  |  
     65   arthurblake      12 天前  万年定律:代码能跑就别动   |  
     66   lance07      12 天前  @javalaw2010 六百六十六,还有这种东西的   |  
     67   adgfr32      12 天前 via Android  php 项目升级难度大,因为很多问题只有运行时才会被发现  laravel 更难,因为他特别喜欢用反射,充满了魔法  |  
     68   luffy2u      12 天前  祖传代码也敢动,到时候崩了让他自己去修 bug   |  
     69   junkk      12 天前  不如让 ai 好好和老板科普一下会不会有安全问题  哪怕把现有的关键业务拆分成微服务呢? 做这事风险高收益低  |  
     70   halobugTurbo      12 天前  新来的都喜欢重构,不然 PPT 说什么呢。   |  
     71   binge921      12 天前  这种纯是徒增工作量,性价比极低   |  
     72   mandex      12 天前  我目前的项目在用 PHP 8.4 + Laravel 12 ,项目开始的时候是 PHP 7.x + Laravel 6.x ,具体版本忘记了。期间经历了多次升级,还是比较顺畅的。  我觉得项目不是特别特别大的话,按版本一个一个升级上去是可以的。 我是说人工操作啊,Claude 不好说,没试过让 Claude 干这么大的活。  |  
     73   PaulSamuelson      12 天前  所以你们公司,没有新业务么?   |  
     75   worldqiuzhi      12 天前 via iPhone  我一个简单模块让他重构都不行。 需要把他拆成十几个小的。再 review 加测试   |  
     76   Promtheus      12 天前  人升级的代码都不可靠,更何况是 ai 。它升级的代码你们敢用吗。而且还是这种很老的项目,里面不知道有多少暗坑。。   |  
     77   guanhui07      12 天前  出问题得他背锅   |  
     78   jinsongzhaocn      12 天前  Claude 是遇强则强,反之遇到菜鸟依旧菜,还有些没 Claude 经验的老手,则看能不能适应转变了。总之学习能力非常重要。至于技术 Leader ,基本都是自己的想法打动了领导,于是拿着领导的资源,验证自己的想法,最大弊端就是,不是自己的资源,失败就跑路,没有背水一战的觉悟。   |  
     79   ty29022      12 天前 via iPhone  楼上的都在胡说八道   勇敢的先行者啊 我建议你们抛开一切顾虑开始实践 当然别忘了之后在社区分享你们的经验  |  
     80   cwliang      12 天前  不知道这 20 年经验的 leader 咋想的,这种纯技术栈的升级对业务来讲带来不了任何收益,风险大于收益。安全性提升、开发体验提升、维护性提升,业务是感知不到的,但出了事绝对被骂   |  
     81   Goooooos      12 天前  弱类型语言重构简直是噩梦,项目越大越难搞   |  
     82   chenjk      12 天前  自掘坟墓   |  
     83   lguan      12 天前  10 年的项目,这 10 年中间都没有逐步跟上发展....   |  
     85   loloX      12 天前  我觉得你这个领导说的没错,你们的版本太低了! 但是你们应该优先去查看框架的文档按照官方的意见升级,而不是 AI-first 。遇到问题用 AI 给方案,但是代码最好还是自己动手写,让 AI 起到辅助的作用。   |  
     86   akakidz      12 天前  别说重构了,你直接做一个新功能,AI 实现后也没办法直接用。  让他配合项目经理和测试,先重构一个核心模块试试 要废多大功夫  |  
     88   lovelive1024      12 天前  送他两个字母   |  
     89   yl20181003      12 天前  让他升,成了老板再刷刷短视频就要裁人了,不成,就是他拉一坨大的,真是秀逗了   |  
     90   1daydayde      12 天前  典型的把 L2 当自动驾驶了啊   |  
     91   jonsmith      12 天前  经常一个 bug ,AI 能绕半天也解决不了。目测最后让你们人肉填坑。   |  
     92   visper      12 天前  很明显,leader 在领导面前吹 ai 多厉害领导全部信了,等下领导觉得很简单都是 ai 修改下就完了。   |  
     93   SayHelloHi      12 天前  开发人员重构老项目 坑都一大堆   用 AI 来重构 感觉有点不现实~  |  
     94   William97      12 天前  啧啧啧,改吧,到时候填坑时心态会爆炸的   |  
     95   BraveChi      12 天前 via iPhone  可以升级,但是你不能不测试啊?测试各种业务场景才是是否成功的保障   |  
     96   fangdaidai      12 天前  中层想要业绩就是这样的,弄出来就可以吹一把,苦的还是下面的人   |  
     97   celaraze      12 天前   laravel 我熟啊,从 5.5 开始 laravel 步入一个新的阶段,服务提供者注册的机制改变了,你从 5.2 到 5.3 没多大意义,我建议你先到 5.5 ,然后 5.5 到 6 的时候也是一个过渡,6+ 以后就可以按照文档的升级说明来了。  其实你完全可以参考每个版本的升级手册,laravel 这点是做的很好的。要啥 AI 。 https://learnku.com/docs/laravel/5.3/upgrade/1148  |  
     99   cherryas      12 天前  起码我重构了一个内部项目,性能爆炸提高。   |  
     100   agentrouter      12 天前   我的建议的话,你们真想用 AI 来做,先用 AI 把测试覆盖率拉起来,干到 100%;然后再让 AI 升级;建议是一个版本一个版本跳。每跳一个版本,过一遍测试,然后检查看看有没有啥问题。没啥问题继续往上跳。直到完成目标。   |