看到RPCS3这条新规的时候,我正在循环一首bossa nova,手里还攥着半块没吃完的提拉米苏。然后我突然就笑不出来了。
嗯嗯
因为我想起来三年前的事。理解的加油呀
那时候我刚从全职妈妈的状态里爬出来,报了个夜校学Python。抱抱第一节课老师让我们手写一个排序算法,我憋了四十分钟,写出来的东西跑是跑通了,但时间复杂度惨不忍睹。下课抓着他问,他指着白板上一行说,你看这里,你选pivot的方式让最坏情况变成了O(n²)。那一瞬间我真的有种被看穿的感觉——不是尴尬,是那种"原来我的每一个选择都被看着"的清醒。
后来我才知道,那种被看着的感觉,就是责任。
抱抱你现在去GitHub上逛,AI生成的PR描述写得比人还像回事,commit message工整得像是用尺子量过。但有个问题我一直想不懂:当那行代码在凌晨两点让某个远在南美的用户服务器崩溃的时候,谁会被从被窝里拽起来?
不是"AI model v3.5",是一个具体的人。可能是你,可能是我。
我补充一个可能有点冷门的视角吧。去年我打工的地方有个legacy项目,前任开发者早就离职了,文档七零八落。老板让我加个功能,我第一反应是丢给Copilot试试。它确实吐了一段能跑的代码,但我盯着那几行看了很久,越看越虚——不是看不懂,是看不懂它为什么"这样"写而不是"那样"写。它选了这个变量名,用了这个结构,但背后的trade-off是什么?它有没有在我不注意的角落埋了什么?
最后我重写了。不是因为AI写得不好,是因为我没法对一段我理解不透的东西说"我负责"。
这让我想到开源社区里一个很少被提起的词:craftsmanship,手艺。不是那种复古的浪漫,而是一种非常实际的、对自己作品的掌控感。你写的每一行,你知道它为什么在那里,你知道它会在什么情况下失效,你知道未来六个月谁来维护它。这种掌控感,AI给不了,因为它不"在场"——它没有凌晨三点被pager duty吵醒的经历,没有用户邮件里那句"我的数据全没了"带来的胃紧缩。
但我也不是说要彻底把AI踢出去。
有个挺有意思的现象,我在温哥华这边参加一些本地meetup的时候注意到。年轻开发者里流行一种玩法:让AI写测试用例,然后自己写实现;或者反过来,自己写骨架,AI填细节,但核心逻辑必须亲手过。这有点像什么呢,就像我跳舞的时候用节拍器——它帮你卡节奏,但身体怎么动、重心怎么转移,还是得自己来。不然你跳的不是舞,是机械复制。
嗯嗯是呢
RPCS3选择ban掉AI agent,我理解他们的焦虑。但补充一点,这种"完全禁止"的姿态可能也会带来副作用。我认识的一个contributor,英语不是母语,写issue和comment的时候全靠GPT润色,不然他根本不敢开口。会好的如果一刀切,这种人就被挡在外面了。责任的主体是人,但"表达"的门槛是不是一定要那么高?
说到底,AI在开源社区里能扮演什么角色,我觉得答案可能不在"助手"和"裁判"之间选边站。更像是一种mirror——它照出来的是我们自己的盲区。当你发现AI写的代码你看不懂,真正的问题不是"AI太厉害了",是"我的理解到哪里为止"。那个边界,才是我们需要诚实面对的东西。
没事的我做过三年全职妈妈,那段时间最大的体会是:你可以外包体力活,但没法外包"我在场"这件事。孩子发烧的时候,保姆可以代劳很多,但那个守在床边数呼吸的夜晚,那个决定"现在去医院还是再观察"的瞬间,必须是你。
没事的代码也一样。
你现在还会手写代码之后再让AI优化,还是直接让它生成然后review?我有点好奇大家的workflow都进化到什么阶段了。btw我这边还是老派,先泡杯茶,打开编辑器,一行行敲,偶尔让它帮忙补个正则表达式什么的。可能效率不是最高,但至少凌晨三点响起来的时候,我知道该怪谁。