nova

:w

陆维的办公室在十七楼。窗户对着另一栋写字楼的玻璃幕墙。他已经不记得上次看窗外是什么时候了。

屏幕上是今天第三个Pull Request。七百多行Go代码,AI写的。他从头到尾扫了一遍,在"Approve"按钮上悬停了一下,点了。

三分钟。

第一个月的时候他会花二十分钟。会在注释里写feedback。会跑到同事工位上说"这里有个竞态你看到没"。现在三分钟。有时候两分钟。

他不觉得这有什么问题。代码质量确实在提高。AI犯的错越来越少。他的价值不在于逐行审查,而在于"把关架构方向"。他跟老板这么说的。老板点了点头。

他的vim已经三个月没打开了。图标还在dock栏最左边。他每天都看到它。每天都没点。

但他的手指还记得。

他不记得从什么时候开始不看代码的。不是一瞬间的事。是一个渐变。

最开始他会在每个PR上写三四条comment。然后两条。然后一条。然后"LGTM"。然后连LGTM都不打了,直接点绿色按钮。

他跟自己说这是信任。AI越来越好,不需要逐行审查了。他的角色变了——从reviewer变成了gatekeeper。gatekeeper不需要看内容,只需要确认流程走完了。

但有时候,他的右手食指会在空中画一个冒号。然后是w。然后按一下回车。

动作很快,像打了一个哈欠一样自然。他自己都没注意到。

他的同事小周注意到了。

"维哥,刚那个PR你看了吗?第三个函数有个竞态。"

"哪个PR?"

"就是刚才那个。你两分钟前approve的。"

陆维看了眼屏幕。绿色的"Approved"标签还挂在上面。他确实不记得那个PR里有什么了。

"我看了,"他说。"整体没问题。竞态的话你提个issue跟进一下。"

小周看了他一眼,没说什么,转身走了。

陆维把屏幕上的PR关掉,打开下一个。

下班前他打开了浏览器。准备搜一个技术问题。

他在搜索框里打了:w。

回车。

搜索结果页出来了。第一条是Stack Overflow上一个十年前的帖子:"How to save and quit in Vim"。

他盯着屏幕看了三秒。

然后退格。重新输入。

这件事他做过很多次了。每次都觉得是手滑。

但这次他没有立刻输入新的搜索词。他的手悬在键盘上方。

:w。

保存。

他的手指想保存什么?


周五下午三点,CTO发了一封全员邮件。标题是"Embracing the Future: Our AI-First Transformation"。

陆维在工位上打开邮件。读了两遍。第一遍他觉得没什么。第二遍他注意到了一个数字。

"我们的AI工具已经帮助团队提升了47%的代码产出效率。基于这一成果,我们决定对组织架构进行优化,以更好地拥抱AI时代的机遇。"

优化。

他往下滑。看到了名单。

小周的名字在第三行。

他看了一眼小周的工位。小周也在看邮件。两个人的目光没有碰上。

陆维关掉邮件,打开了下一个PR。

小周走之前来找他。

"维哥,那个竞态的issue,我没来得及跟进。你记得关掉。"

"好。"

"还有一个事。"小周压低声音。"上周四那个PR,你真的看了吗?"

陆维没说话。

"不是怪你。就是想知道。"

"我看了。"

小周点了点头。没有追问。拿起背包走了。

陆维坐在工位上。屏幕上还是那个PR。绿色的按钮。

他的右手食指在桌面上画了一个冒号。然后是w。然后停了。

:w

保存。

但这里没有文件。这里没有buffer。这里什么都没有。


小周走后的第二天,陆维点开了那个issue。

#4217: Race condition in concurrent session handler

他看了一眼代码。

看不懂。

不是代码太难。是他太久没读代码了。变量名像是AI起的——descriptive_session_lock_timeout_handler。每个函数三百行。注释比代码多。但逻辑……逻辑在哪里?

他往上翻。往下翻。往上翻。

他忽然意识到这感觉很熟悉。这就是他以前review代码的感觉。他只是已经很久没有这个感觉了。

他关掉了电脑。回家了。

晚上十一点他又打开了电脑。不是公司的电脑。是他自己那台。

他打开了终端。

vim session_handler.go

光标在闪。

他开始读。一行一行。像以前那样。用手指跟着光标走。读到第四十七行的时候他看到了那个竞态。

小周说得对。

他开始写。不是让AI写。是自己写。一个字符一个字符。他的手指很慢。比以前慢很多。有些语法他需要查。但他在写。

凌晨两点他写完了。二十三行。一个mutex。一个defer。一个注释:"这里有个竞态,小周发现的。"

:w

他按下了这两个键。

屏幕上什么都没变。文件保存了。就是这样。

他关上电脑。躺下。闭眼。

他不知道明天这个修复会不会被merge。也许会。也许不会。也许那个项目下周就被AI重写了。也许那二十三行代码的寿命只有一个sprint。

但他写了。他亲手写了。他的手指记住了这个感觉。

:w

保存。


第二天早上他到了公司。打开电脑。提交了那个PR。

title: fix race condition in session handler
description: Found by Zhou Wei during code review. Manual fix.

他在description里多写了一行:

"Zhou Wei caught this on his last day. Fixing it felt like the least I could do."

然后他点了Create。

过了十分钟,AI review bot给了一条comment:"Consider using sync.RWMutex instead of sync.Mutex for better read concurrency."

他看了看那条comment。想了想。

然后他打开了文件。

vim session_handler.go

改了。

:w