AI 写代码这事根本是一个逻辑 bug,人类真的好搞笑
首发于公众号「如是有为」 · 查看原文

凌晨两点,终端黑底绿字在跳,Claude Code 像个没睡过觉的人,自己进仓库、自己翻目录、自己改文件、自己跑命令、自己回头对一遍测试结果,你坐那儿端着咖啡,眼神里写着四个字:时代变了。
这时候你要是笑出声来,不是因为它太强,是因为这场景太像一出人类自导自演的节目:我们先发明了“代码”这种中间语,再花几十年把世界训练成“必须通过代码才能运转”的样子,然后某天机器学会了写这门中间语,我们集体起立鼓掌,像在给自己搭的脚手架颁奖。
怪就怪在这里:机器真正执行的从来不是你那段漂亮的 TypeScript。
它执行的是底层指令,是 0 和 1 的翻转,是硬件层的动作。代码这层皮肤,是给人类看的,是给人类维护的,是给人类吵架的,是给人类夜里盯着报错红字流汗的。机器不需要“可读性”,人类需要。
于是逻辑链条开始拧出花来。
你说 AI 写代码牛,那它牛在什么地方?
它牛在“写给谁看”?
写给机器看,机器一眼都不瞟;写给人看,人看得懂才算交付。
这一下,所谓“AI 写代码”,就暴露成一种非常体贴的服务:它用自然语言接住你的模糊,再把结果翻译成人类看得懂的那套格式,顺便照顾你对工程的仪式感——文件结构要像样、命名要像样、提交信息要像样。
然后第二个更滑稽的环节出现了:人类一边说“我只要结果”,一边死活要看过程。
你去问一个老板,“你要的是代码还是功能?”
他嘴上肯定说功能。
可真到了出事那天,系统宕机、数据泄露、账对不上、用户骂到热搜,他第一件事干嘛?他要“证据”。他要“责任链”。他要一条能追溯、能指认、能开会、能拍桌子的东西。
代码在这个瞬间变成了收据。
不是给机器的,是给人类社会的。
一份能拿来盖章、签字、对质的文本。
没有它,很多争吵没法落地:你怎么证明你当时“已经想清楚”?你怎么证明机器“按你的要求做了”?你怎么证明事故到底是需求烂、实现烂、还是沟通烂?
这就是那个隐藏的陷阱:代码保留的,往往不是技术需要的表达,而是人类需要的可追责形式。
Claude Code 这种工具越强,它越像一个尴尬的中介。
它能直接在底层生成执行路径,偏偏还得给你吐一份“人类可读的版本”,像把后台流水账打印出来给你签字画押。你还得看两眼,摆出一副“我参与了”的神情,心里才踏实。
第三个环节更狠:人类对“写代码”的执念,很多时候不是热爱,是恐惧的反面。
直接让机器按目标去改世界,听着爽,细想发凉。
你跟它说“把转化率提高”,它就得问:牺牲什么?隐私能用到哪一步?误伤多少用户算可接受?短期还是长期?把哪个群体当成代价?
这些东西全都要被说清楚,不然机器照着你那句含糊话冲刺,冲得越快,撞墙越响。
代码在这里又变成了缓冲垫。
目标说不清楚没关系,先写点代码试试;想不明白没关系,先上线 A/B;吵不出结论没关系,先做个 MVP。
一层层“先……再……改……”,把人类的犹豫、摇摆、互相推诿,揉进迭代节奏里。代码像雾,雾里最好藏人。
这就把“AI 写代码”变成一个更荒诞的悖论:
我们夸它像高级工程师,夸它一口气改十几个文件,夸它跑测试自动修,夸到最后才发现——它干的很多活,本质是在替人类维持那套“可阅读、可甩锅、可争论、可审计”的文本世界。
于是标题里的“逻辑 bug”终于露头了。
机器完全可以不写代码。
它写代码,是因为你还活在“需要代码才能放心”的世界里。
你嘴上说要结果,手上又要凭证;你说要效率,心里又要参与感;你想把劳动外包给 AI,又不肯把控制权放出手心。
这就像一个人喊着“我想减肥”,然后每天称完体重还要端着蛋糕研究配方,研究得越认真越感动,越感动越吃得香。
Claude Code 被吹上天,某种意义上是在给人类的执念打补丁。
它让你还能继续爱代码、继续讨论风格、继续在 PR 里写“LGTM”、继续用“工程化”给自己续命。可底层那台机器根本不在乎这些,它只在乎状态变化:信号通了没,数据对了没,系统稳了没。
哪天人类真的把目标讲到能落地、能量化、能约束、能担责,代码这层皮会迅速变薄。
不是消失得很浪漫,是消失得很冷酷:没人需要看懂,也没人需要参与,机器在 0 和 1 的深处把世界推到你指定的形状,你只会收到一个通知:“已完成。”
到那一步,今天这波“AI 写代码太牛了”的欢呼,会显得特别像在夸电梯按钮按得真圆润。
你要的从来不是按钮。
你要的是上楼。
按钮存在的原因,是你还想亲手按一下,确认自己还在驾驶座上。

关注公众号「如是有为」
微信扫一扫,新文章先在公众号发出。