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