要我说,换工具这事本身就是脑子进水。
上个月月底我把用了大半年的 Cursur 卸了,装了个那个叫什么 Claud Code 的。名字我懒得改,就这么叫它。为什么换?不是因为它好,是因为原来那个在我那个老对账仓库里开始瞎猜了,上下文一加载到三十来万字符,它就开始给我编函数名,编得有鼻子有眼的。
我们那个对账系统,2018 年上线,PHP 5.6 撑到 7.4,升完就没人敢再动过。跑批凌晨两点起,一天三百万行流水,祖传代码,注释比脸还干净。
换它第三天,出事。
上周三凌晨两点四十,手机响,值班的打过来说批跑一半卡死了。我爬起来看日志,最后一行是 PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes),甩在 MatchEngine.php 1847 行。
MatchEngine 那个文件 1973 行,当年是我写的,也搭了老张一部分,具体哪段是谁的我真记不清了。我翻到 1847,一个 foreach,里面往一个 $logs 数组里塞东西,塞完从来没 unset。就那种平时看着没事的写法,那天流水多了二十万条,内存当场就炸了。
我自己找这个也得找半小时。我把文件丢给它,说内存爆了,你找。三分钟不到,它把这行指出来了,还顺手说了句这 $logs 只有后半段偶尔用一次,攒着纯属浪费。
行吧,有两下子。
然后它自作主张给我改了。改完我扫了一眼 diff,坏了。它把我原来算金额的 bcadd 换成了普通加号。对账系统,两毛钱对不上就得查到天亮,这能行?我当场改回来了。这事怪我,提示词没说清楚金额必须走 bc 函数。话说回来,我凭什么得说?这不本来就是常识。
真正让我闭嘴的是周五晚上。那天我在家,本来不想碰公司的事,群里问生产里有批脏数据怎么清,我顺手把表结构与索引贴过去问了它一句。它给了三条语句,第二条我一看就知道会锁全表,直接划掉,用了第一条和第三条,跑完干净。
所以我现在的路数是,它出草稿,我划掉一半。产出是快了,但划掉那一半才是真本事,那是我十二年攒的,不是它算出来的。它不知道我们那张表凌晨两点在跑批,我知道。
这几天下来,说实话体验还是可以的。上下文能吃得下整个仓库,不乱编了,报错查得也准,比我一个一个文件 grep 快得多。不过也就那样吧,工具终究是工具。它快,是因为它没有别的事干,我慢是因为我一边改一边还得接着电话。这个没法比。
我要不要把这个感受跟组里小年轻说说?算了,说了他们也不听,他们早就在用了,比我还熟。上礼拜我看见新来的那个把需求直接喂进去出初稿,全程就守着看,跟我路数一模一样,就是人家不藏着。
反正就这么个事。这个月让它打下手的次数我也不统计了,统计了没意义。下不为例。它名字我还是叫 Claud Code。PHP 也照样能接它,跑批系统一晚上没再崩过,谁再跟我说 PHP 死了,让他来我们机房看看。