跳到主要内容

你早就是个“肉体代理”了(You’re Already a Meat Proxy)

Obie Fernandez

原文出处:由 @obie 发布于 X。

我对这样一个未来感到兴奋,尽管我隐隐觉得,这个未来对许多老朋友、以及某些我所爱的人,将会非常艰难。正是这项让我前所未有地更加成功的技术,正在瓦解他们赖以为生的那种生活安排。我可以劝他们利用好眼下这段缓冲期。我可以鼓励他们多主动一些。但我没法诚实地向他们保证,每个人都会发现自己喜欢上接下来的人生里所发生的事。

“可我想动脑子啊,老兄!”

昨晚我和一位老朋友出去叙旧,他在一家拥有数百名工程师、非常成功的大公司里做 staff engineer(资深主任工程师)。

我这位朋友最近一直很绝望,用他自己的话说,他“已经不知道该怎么干自己的活儿了”。每当我们聊起这个话题,我都会用各种变体跟他说:“你干吗不直接问问 Claude,让它告诉你怎么做你的工作?”

而他的回应,也总是各种变体:“不,你不懂。”

昨晚我们俩又兜来兜去绕圈,最后我实在受不了了,就说:“哥们儿,让我看一下你的终端。”

我们走到他的工作电脑前。他调出几十个浏览器标签页和半打终端,每个终端里都跑着一个 Claude 实例。我说了句大意是这样的话:行吧,所以看起来你是在用这玩意儿去做那事儿嘛!

“是啊,可你不明白。我感觉自己在任何事情上都推进不了,”他回答说。

“可我不明白,你怎么可能一点进展都推不动。让我开个新的 Claude。你不介意吧?”然后我就开了。我做的第一件事,是把模型切到 Fable,因为他原来用的是 Opus,所以我给出的第一条具体建议就是:只要你是在编排(orchestrate)工作,就永远用 Fable,因为它比 Opus 聪明一个数量级。

“可我不想浪费我的 token 预算。”

我有点恼火,就训了他一句:“别这样,老兄,这不是浪费预算。Opus 就是烂。就。用。Fable。呃,你是被允许用 Fable 的,对吧?”

“嗯,应该可以吧。”

“那就对了,所有事情都直接用 Fable。它很聪明,不会让你失望的,”我告诉他。

“可我想动脑子啊,老兄!”

这位朋友算得上相当聪明。他也正是那种会为生成式 AI 对人类造成的影响而感到绝望的朋友。

“老兄,去你的脑子吧。你都跟我说了六个月你不知道怎么干你的活儿。Fable 比你聪明。它比我聪明,比我们所有人都聪明,我没开玩笑。”

“它只是台机器!我拒绝相信它更聪明……”他抗议道。

“哦,所以它是只随机鹦鹉(stochastic parrot)咯??”我打断他。

他皱了下眉:“不,我不是那个意思。我是说它没有灵魂。”

我们争了几句,他跟我说他想保持掌控,我跟他说他必须把这破执念放下。

他有点烦躁,但还是看着我在那儿演示:与其给出细碎的任务,不如用提示词去追求结果。我在那个主单体(monolith)目录里敲下:

这代码就是一坨屎,架构也全他妈乱套了。

我按下回车,我朋友开始大笑。他难以置信。

“这就是你的提示词???”

我说:“呃,老兄,我对你这套系统一无所知,总得有个起点吧,对吧?”

我俩都笑了,Fable 开始干活,试图弄明白我那句提示词。显然这套系统里有大量上下文,所以它可参考的东西很多。它列出的问题包括大量缺失的测试覆盖、动辄数千行的上帝对象(God object)、一堆显然是死代码的东西——换句话说,一大堆构成了真实技术债的问题。

对我这样的人来说,这简直是多到令人瞠目结舌的唾手可得的果实(low-hanging fruit)。

为了说明我的观点,我按下回车,接受了 Fable 的第一条建议。几分钟后,我又按了一次回车,接着再一次,选择删掉一些死代码。我们开始创建一个 PR。我朋友要我确保它被设为草稿(draft)。行吧,随你。

Fable 干它的活儿。我朋友检查了一下 diff。那只是一次简单的死代码删除,以及相关的单元测试。我想继续推进,但我朋友求我停下。

“你不明白,Obie,我没法像你那样干,老兄。”

我让他解释为什么不行。

他解释说,他有老板和队友,他不能就那么随便改,他得先提出计划,再去执行。

“那好啊,那就让 Claude 帮你做计划,”我反驳道。

“我做过了!”

我朋友于是切到 Confluence,给我看了一大堆明显是机器生成的计划,讨论着为了让这套系统变干净、需要做哪些架构改动。

我去他妈的,他早就有计划了!我大声纳闷他为什么不直接去执行这些计划,并问他是不是卡在老板签字批准上。

“不,他根本不看那些玩意儿。”

什么鬼?!?

“我得跟团队协作。他们会看。”

我有点难以置信,就追问这一点。“你的团队真的要看那个?”

我完全不信他的团队会读那堆东西,一丁点儿都不信。真要说的话,他们也是让 Claude 替他们读。

他继续说:“嗯,是啊,然后我还得把这一切都转化成 Jira 里的 epic 和 story。”

插一句,你们当中有些人读到这里,完全明白在一家公司里使用 Jira 和 Confluence 意味着什么。简而言之,这意味着这家公司并不是把开发者生产力看得高于一切。但在智能随处可得的时代,这已经不再是过去那种诅咒了,至少我觉得不再是了。

“嘿,老兄,你的 Claude 是通过 MCP 连到 Jira 的,对吧?”我转回终端,敲下这样一段话:

这些活儿现在一条都还不能推,先把它做成 Jira 里的 epic 和 story 吧

Claude 立刻往 Jira 发布了 5 个 epic,并表示即将开始在其下创建相关工单。

我朋友吓坏了,按下 ESC 把它停住。

行吧。我想我今晚的演示到此结束了。

我追问他,为什么不每天就试着做一点点渐进式的改进。他的回答是:因为没人在思考。

我被这个答非所问搞得一头雾水。

他接着抱怨说,每个人都任由 Claude 去做思考,就像我刚才那样。说他不想让自己的脑子烂掉,不想整天就坐在那儿按回车。

啊。我大概开始有点明白了。

“那为什么一点进展都没有呢?”我提出。

“我不知道,就好像现在没人再思考任何事情了。”

我这哥们儿拿着一份高薪工作,管理层的期待(显然)又很低,结果他还在抱怨没法好好干活?更糟的是,他为此抑郁,还为自己的职业前景焦虑。按理说,我这位朋友至少比那些职级更低的同事要聪明一些、更有效率一些(不然他也当不上 staff engineer),可他却处在这种状态?我像对待兄弟一样在乎这家伙。我既困惑,又担忧。

我就说:“你到底怎么回事啊老兄,把事儿干完就行了,怎么干完的不重要。真的,任何事都比每天原地打转强。”

难道他不知道这事情最后会怎么收场吗?那些拿高薪、却不为公司创造任何价值的人,迟早会变成没有薪水的人。

“可我不想只当个肉体代理!”他抗议道。

哈!

我这位朋友早就是个肉体代理了。在这个词出现之前,他就已经是了。我知道这一点。我很确定他自己也知道,他只是不愿意接受罢了。我摇了摇头。

“兄弟,你需要做的就是整天按回车,一边陪孩子玩,一边让 Claude 干它的活儿。Fable 他妈的聪明,你可以信赖它。”

他听不进去。他觉得我的观点有偏见。它确实有偏见,是成功带来的偏见。他指责我不读自己产出的每一行代码。他说得对,而这恰恰是我引以为豪的一点。

在我的工作中,我主要负责的系统是全新构建的(greenfield)、设计良好、测试充分的 Ruby on Rails 内部系统。我不需要读 Claude 产出的每一行代码。过去这几个月,我甚至不再用 Claude Code 去监督代码的编写了,因为我有自主智能体(autonomous agents)写掉了 75–80% 的代码。只有当我想添加重要的新功能或做重大架构调整时,我才会深入到细节里。

我朋友显然处在不同的处境。他负责的是生产系统中涉及客户支付的那一部分。所以我告诉他,那他就应该去读他 Claude Code 改动的每一行代码。为什么不呢?

经过一番激烈的讨论,事情很清楚:他不信任 Claude,是因为他不想信任它。到了某个时候,他必须给这份恐惧一个准确的命名。他害怕自己变得过时。

问题是,抱着这种心态,他其实已经过时了。所有参与软件开发的人里,大概 80% 以上也都已经过时了。他们的职业生涯已经搁浅,只是他们自己还没意识到而已。

挫败感正在沸腾

巧的是,下面这条帖子昨天火了,在我写这段话的时候已经有超过 150 万次浏览和大量互动。显然,它戳中了这个行业的某根神经。

9月20日

我受够这破事了。结束了。现在工程的状况糟透了。我加入一家大公司的新岗位才半个月。这里没人懂任何东西。规格说明、代码、测试、PRD、工单、这些工单的解决方案、报告等等,全都是

别急着划走,这条帖子不长,我接着上面预览的部分再多转录一点,作为背景。

……全都是 Claude Code 做出来的。我团队里没人喜欢这样。他们被迫尽可能多地交付。我已经多次从更高层管理那里听到:推代码不是瓶颈,那我们为什么还这么慢?大家每天工作 12 到 13 个小时,就为了按回车。没人在读任何东西。公司里的人类自己什么都不干。这里的每一个人,真的每一个人,从 L1 到 L7 的工程师,都在做同样的事。跟 Claude 对话。毫无胜利可言。没人在解决 bug。实际上,已经没人在思考了。一切都由 LLM 完成。这太抽干灵魂了。说实话,我并不介意这样——如果我们至少还能有时间去看看代码、看看什么东西在往哪里去的话。但不,目标就是交付。不管发生什么。

那条帖子和它所传达的情绪也戳中了我,但我怀疑原因并不典型。在超过三十年的职业生涯里,我从来都不是一个真正意义上的肉体代理。即便是在头五年——那时我记忆里剩下的多半是冒充者综合征,以及完全不知道自己他妈在干什么——我也很确定,我总是会质疑别人让我去做的事,并在动手之前先努力去理解。

然后到了 2000 年前后,我参与到极限编程(eXtreme Programming)运动的最早期阶段,在工作中被提拔为技术领导者,剩下的事就成了历史。如果我处在听从上级指示的位置上——这种情况我经常遇到——那么我如何去落实这些指示,通常是由我自己来定的。这正是如今被人们津津乐道、被说成无比宝贵的那种“品味与判断力”。

而大多数软件开发者并不具备那种东西。

大多数软件开发者甚至从未尝试去拥有它,因为只要做一个稳定的团队合作者、遵守流程(不管那流程是什么)、按照职级比自己更高的人制定的计划交出成果,就已经足够了。

大多数软件开发者不去尝试,只是因为他们压根没有这种内在的劲头,或者因为那样更轻松——他们宁愿把自己多余的能量花在别的事情上:家庭、电子游戏、旅行,诸如此类……只要老板满意,他们就能拿到一份相对丰厚的薪水,一切都相安无事。

好吧,在我看来,也在很多人看来,这套体系显然正在瓦解。而它的余波不会好看。如果你拿薪水所做的全部事情,就是嵌入一个由别人来决定做什么的流程,然后你再把这些指令转化成软件,那么恭喜你,你就是个“肉体代理”。如果你所做的全部事情,就是从更高层级的老板那里接受指示,再把这些指示转化成给其他人的指令,那你同样也是个“肉体代理”。

肉体代理们之所以还有工作,唯一的原因就是惯性。当下的 AI 技术已经好到足以取代所有肉体代理,之所以还没有,只是因为那种颠覆性的变革需要时间。

你到底想要什么?

这就把我带回到那句我对我朋友说的话——在给 Claude Code 输提示词的间隙,“按回车,然后去陪孩子玩”。

我是认真的。我朋友不会神奇地变成我。我希望他每天都能完成一件有用的事,保住自己的工作,还能留下一些精力给他那两个漂亮的宝贝女儿。他在一家大型的、成功的公司里。我猜他还有一些缓冲期去把事情想明白。很多人都是这样。组织惯性可以让一份薪水在某个具体岗位的经济合理性开始蒸发之后,还继续发放很久。

所以,利用好这段时间。他妈的,享受其中一部分吧。但要明白你正在花掉的是什么。

因为我没法告诉你你还有多少时间。我唯一能告诉你的是:跟朋友争论“一种基于计算机的智能是否拥有灵魂”,看起来是对那段时间极其糟糕的一种用法。

我不会给你那种安慰性的建议,说什么你应该去当架构师,因为 AI 总是需要有人来做高层思考。二十多年来,架构一直是我价值主张中很重要的一部分,但我完全预期 AI 会越来越多地吃掉这部分工作。我预期它会把这些工作全部吃光,直到剩下的人类只有那些为正在被构建和/或维护的东西付钱的人。在组织架构图上往上挪一格,并不能让你置身于这个过程之外。

我的老朋友 @chadfowler 正在写一本关于“再生软件(regenerative software)”的书:那种实现可以被替换、同时又能保留人们所依赖的行为的系统。要做到这一点,需要把埋在现有软件里的知识重新挖掘出来,把它的义务明确化,并确立如何判断一个替代品是否可用。今天,这需要相当多的工程判断力和经验,但我看不出有任何理由要去假设:划定边界、抽取需求、或者设计这些校验,会永远只是人类的工作。

就我个人而言,让我对这场历史性转变感到兴奋的,是随着这些能力变得可用,我能创造的价值能增加多少。回想当年在 ThoughtWorks,后来又到 Hashrocket,客户把我带进各种局面,而在那些局面里,“搞清楚该做什么”本身就是任务中相当大的一部分。我热爱这份责任。我现在依然热爱。给我更多把某个决策付诸行动的能力,我立刻就会开始琢磨:为了那个付钱给我的人,我还能再多成就些什么。

当然,这是一种偏好,而不是终身雇佣的保证。我可没有什么防 AI 证书藏在抽屉里。我预计自己需要每天都持续演进我所做的事、以及我做这些事的方式,就像我在这 30 年里一直做的那样。

我这么说,是因为我知道,很多人觉得我所偏好的那种工作关系令人精疲力竭。他们想要的,只是一份相对清晰的差事、一份不错的薪水,以及工作之外的生活。我理解这种吸引力。遗憾的是,我非常怀疑软件行业会继续把这种安排提供给每一个想要它的人。

那么你呢,亲爱的读者,你到底想要什么?

如果答案是丰厚的薪水和大量与家人共处的空闲时间,那就诚实地承认这一点。用 AI 工具把你的职责履行到令人满意的水平,再利用由此得到的喘息空间,去搞清楚下一步该怎么走。你不欠这个行业一场终身的爱恋。事实上,你也许应该考虑去做一件完全不同的事。

但如果你能激发起兴趣,想要在“构建什么”这件事上拥有更多话语权,那么现在就开始锻炼那份判断力。如果可能的话,在工作中去做。如果不行,那就在空闲时间里找一个值得解决的问题。去和那些生活在其中的人聊聊。用 AI 去调研它、挑战你自己的假设、想清楚你可以尝试些什么。决定什么样的结果才值得你所付出的努力。然后,把其中一个想法推进得足够远,去发现你到底对不对。说真的,没有比现在更好的时机了。

我为朋友做的那场小演示,在 20 分钟内产出了一个草稿 PR 和一些 Jira epic。我们始终没能走到“确认有什么重要的东西被改善”这一步。睡了一觉、又写了这篇文章之后,我意识到了一件事:在“重要性”这个问题上追到底,恰恰就是我希望我朋友不要再逃避的那部分工作。如果障碍在于要让五个人同意去做某一件事,那么让他们达成一致,就是这份工作中不可或缺的一部分。Claude 可以帮你做准备,但你还是得去跟那些你所需要的合作者打交道,对吧?

对那位我将要把这篇文章发给他的朋友,我要说:这周就挑一件事。挑一件小到足以完成、又重要到会让另一个人注意到的。让机器尽可能多地去完成工作。留意发生了什么。如果结果是错的,弄清楚为什么,然后接着干。你不会因为亲手多敲了几行代码,就变得更不像一个肉体代理。

我无法承诺这能保住你作为软件工程师的职业生涯。但它给了你一个机会,让你在还有时间去试验的时候,去发现用你过去不曾拥有的能力,你究竟能做些什么。

对于那些读到这里、嘴里喊着“不不不!”的人,我只有一个回应。站在这场 AI 海啸面前对着它发脾气,并不能阻止你被冲走。

你真的还想继续用你的脑子吗?你不想让它烂掉吗?那就搞清楚你真正想要的是什么,然后让 Claude 去为你干。

评论