我敲下一行Bug,为了从AI手中夺回我的大脑

69 阅读7分钟

那是去年冬天,公司上线 ArchSynth Enterprise,CTO 在全员会上激情演讲:“这不是工具,是认知协作者!”

我嗤之以鼻。 五年Java,三年微服务,手写过熔断、调优过GC、半夜重启过K8s Pod的男人,需要AI教我写代码?

结果第一次试用,真香了。

// 我手写骨架
@PostMapping("/login")
public ResponseEntity login(@RequestBody LoginRequest req) {
    // TODO: 校验、限流、缓存、异常处理 —— 林远 2024.11.03
}

三秒后,ArchSynth 补全了所有内容,还附赠一份PDF:《登录接口架构决策说明书 v1.0》,含流程图、压测建议、异常码表。

我愣了三秒,默默点了 ✅ Merge。那天我在周报里写:“ArchSynth 提效显著,减少样板代码编写时间约70%。”

—— 我没写的是:“它写得比我好,还比我快。我居然有点慌。”


三个月后,实习生提交订单状态机,一堆 if-else。我刚想开口说“建议用状态模式”,ArchSynth 先跳出来了:

📌 建议重构为 State Pattern,参考《领域驱动设计》P.156,已生成重构代码。

我点开看,类图画得比架构师还标准,测试覆盖率98%。我在MR评论里敲下:“LGTM,建议采纳ArchSynth方案。”

实习生秒回:“好的林哥!ArchSynth太强了!”

我笑了笑,心里却空了一块。以前我会画草图讲半小时“为什么”。现在?我连“为什么”都懒得问了。因为ArchSynth的注释,比我的解释还全。

那个月,我的Git提交记录里,70%都是:

chore: apply ArchSynth suggestion on cache strategy
chore: merge ArchSynth-generated unit tests

我像个人形审批流。输入:AI方案。输出:✅。思考?那是什么?能吃吗?

恐慌是具体起来的。 那个周末,我想给自己的开源小项目加个LRU缓存,我以前闭着眼都能写。但当我真的打开IDE,敲下 class MyLRUCache 时,手指却僵住了。我忘了 LinkedHashMap 的构造函数参数是哪几个,忘了 removeEldestEntry 该怎么重写。

搁在以前,这根本不是事。但现在,我的第一反应是 @ArchSynth, generate a LRU cache

我强迫自己关掉AI,像个初学者一样,一个字母一个字母地查文档。那个下午,我对着屏幕,第一次感觉我的大脑和手指之间,隔了一层叫 ArchSynth 的毛玻璃。它不只是帮我写代码,它还在格式化我的编程记忆。


架构评审会,讨论支付回调幂等方案。ArchSynth 生成三种方案,产品经理问:“林远,你觉得哪个好?”

我盯着屏幕三秒,说:“第二个吧,DB方案,文档里说兼容性最好。”

散会后,实习生问我:“林哥,为啥不选Redis方案?延迟更低啊。”

我张了张嘴,突然发现——我根本没看Redis方案的细节。 我选它,只是因为ArchSynth把“DB方案”标成了“推荐”。

我假装看手机:“哦…那个啊,DB方案…更稳。” —— 稳个鬼。我连“稳”在哪都不知道。

那天晚上,我翻出三个月前自己写的幂等方案注释: // 临时用DB唯一索引顶一下,回头换Redis —— 林远 2024.08.12 // TODO: 压测后再决定,别拍脑袋!

字丑,啰嗦,还带感叹号。但每一句,都是我亲手思考的痕迹


转折点,是上周三。陈工在会上突然cue我:“这个熔断阈值,是你拍的,还是 ArchSynth 算的?”

我手指比脑子诚实,Ctrl+O 直接拉出 design-decision-v3.pdf。我照着念了一遍,语气平稳得像自动语音播报。陈工点点头:“行,有依据就行。”

那晚刷牙,我对着镜子愣住:这参数是我定的?还是ArchSynth定的?我怎么…真不记得了?

那一刻我悟了:

ArchSynth没取代我。它只是让我活成了一个“人形确认终端”。 功能:Review、Approve、Deploy。 优点:零情绪波动、零追问动机、零文档负债。

我打开电脑,翻出 legacy-human 分支——那里面全是“垃圾代码”,跑得慢,不优雅,但每一行都带着我思考时的笨拙、犹豫、试错

我盯着屏幕,突然鼻子一酸。我居然在怀念自己写bug的日子。


今天,新模块“用户行为埋点”启动。ArchSynth 秒出 Kafka + Flink 方案。我盯着看了十分钟,然后,在IDE里新建了一个文件:

// 林远手写版 v0.1
// 不用ArchSynth,不用Kafka,就用最土的——写日志文件 + 定时上传
// 为什么?因为我要知道每一行代码为什么在这里
...

刚提交,IDE右下角弹出提示:

💡 检测到非标准实现。是否需要我为您优化这段代码?(98%用户选择“是”)

我点了“否”。

在Code Review会上,我主动开口:“这个模块,我没用ArchSynth。方案很土,但每一行我都想得清清楚楚。欢迎大家拍砖。”

会议室安静了三秒。架构师叹气:“林远,你这是技术倒退。”

我笑了:“给我一周,我压测,我监控,我兜底。如果出问题,我背锅。”

陈工看了我一眼,最终点头:“行。但——必须加监控告警,磁盘满了你负责清。”


三天后,事故来了。日志写太快,/data 分区爆满,服务返回500。

告警的钉钉消息像心跳监测仪一样在手机上狂跳。我冲进云控制台时,手心全是汗,但大脑却异常清醒。df -hlsof、修改配置、重启服务……每一个命令都敲得飞快,每一个决策都不假思索。

这是一种久违的感觉。在AI的庇护下,我已经很久没有体验过这种混杂着恐惧、专注和掌控感的“心流”了。 当我敲下最后一个回车,看着监控曲线恢复平稳时,我靠在椅子上,感觉全身的力气都被抽干了。但奇怪的是,我心里涌起的不是疲惫,而是一种踏实的、活着的感觉。

这个Bug,是我亲手写的;这个坑,是我亲手填的。它丑陋,但它属于我。

CTO 打来电话,语气平静:“修好后,写个事故复盘。我要看‘为什么你坚持不用ArchSynth’。”


复盘会上,我放出了监控图、修复脚本、优化方案。我说:“这次事故,让我重新学会了‘设计取舍’。ArchSynth 给的是最优解,但不是‘我的解’。我要的不是正确,是理解。”

没人鼓掌。但也没人再质疑。

散会后,陈工在茶水间叫住了我。“那个日志方案,我刚工作那会儿也这么干过,”他递给我一瓶水,眼神里没有责备,“那时候没这么多好工具,全靠人肉。踩坑是成长的唯一方式。”

他顿了顿,说:“ArchSynth是巡航导弹,指哪打哪,精准高效。但你得确保自己还有能力开手动挡的吉普车,尤其是在导弹失灵的泥地里。别让工具定义了你的能力边界。

我握着那瓶冰水,突然明白了他在会上为什么那么问。他不是在质疑我,他是在提醒我。


三个月后,ArchSynth Enterprise 发布 v3.0。我的账户页面,静静躺着一行灰字:

协作模式:混合型(人类主导率 12%)

我笑了笑,关掉了通知。

我的代码,90%还是AI生成。但那天埋点服务崩溃时,是我亲手清的磁盘,是我写的轮转脚本,是我画的压测曲线,是我,在复盘会上说出了“我选这个,是因为我想记得它会怎么死”。

ArchSynth 不会记得“怎么死”。它只记得“怎么活”。


我关掉IDE,走到窗边。楼下,新来的应届生正兴奋地演示 ArchSynth 自动生成的“智能调度算法”,团队鼓掌。产品经理笑着说:“以后这种模块,直接让 ArchSynth 跑方案,我们只做验收。”

没人觉得不对。没人觉得少了什么。

我喝了一口凉掉的咖啡,苦涩的味道在舌尖蔓延。 —— 我们正在把“思考”,重新定义为“验收”。 而验收,是不需要注释的。

我看到自己的倒影映在玻璃上,一个模糊的、不起眼的轮廓。在身后那个由AI驱动的、高效运转的世界里,这个轮廓显得有些多余,又有些固执。

我伸出手,在冰冷的玻璃上,用指尖画了一个歪歪扭扭的问号。


🧩 后记:没有胜利,只有选择

ArchSynth 不会取代你。 它只会让你,慢慢习惯被取代。

你不需要反抗它。 你只需要问自己一句:

“今天,我思考的部分,还有多少?”