
【译】代理精神病:我们是否正在集体失智?
读到一篇发人深省的文章:《Agent Psychosis: Are We Going Insane?》。坦白说,最初吸引我的正是这个充满张力的标题——“psychosis”(精神病)一词带着刺眼的隐喻,而文中提出的 “agent coding addiction”(代理编程成瘾)更如一记警钟,直击当下 AI 编程热潮中被我们刻意忽略的集体焦虑:当人与机器的边界日渐模糊,我们是否正在一种多巴胺驱动的幻觉中,悄然滑向某种技术性失智?
译者注:本文作者 Armin Ronacher(Flask 框架创建者)以批判性视角探讨了当前 AI 编程代理的滥用现象。“Slop” 一词在文中指代缺乏人工监督、质量低下的 AI 生成代码;“vibeslop” 则特指仅凭 " 感觉 “(vibe)驱动、缺乏工程严谨性的代码产出。Gas Town 与 Beads 是 Steve Yegge 提出的实验性代理编程框架,其过度复杂的隐喻命名体系(如 Refinery/Mayor/Polecat)成为作者批评的焦点。
以下是正文。
你可以不使用 Refinery,甚至不使用 Witness 或 Deacon 来使用 Polecats。只需告诉 Mayor 关闭 rig,然后将工作分派给 polecats,并告知它们直接合并到 main 分支。或者 polecats 可以提交 MR,然后由 Mayor 手动合并。这完全取决于你。只有当你做了大量前期规范工作,并且有成堆的 Beads 需要通过长队列处理时,Refinery 才有用。
–《Gas Town 紧急用户手册》,Steve Yegge
我们中的许多人都陷入了代理编程的成瘾状态。这种感觉很棒,我们几乎不睡觉,快速打造出看似惊艳的成果。但偶尔当我们需要与其他人互动时,现实会突然给我们一记耳光,提醒我们用力过猛了。最明显的例子就是问题报告和拉取请求质量的急剧下降。作为维护者,如今许多 PR 看起来简直是在侮辱他人的时间;但当你拒绝它们时,提交者却意识不到自己做错了什么。他们以为自己在帮忙、在贡献,当你关闭请求时反而会感到愤怒。
但问题远不止于此。我看到人们与自己的 AI 建立起准社交关系,深度上瘾,并创造出互相强化不健康行为的社群。我们是如何走到这一步的?这又对我们造成了什么影响?
在开始正文前我想先声明:我并不想特别点名批评任何人,而且我也意识到自己有时也会表现出我认为负面的倾向。我也曾向他人的代码仓库 提交过一些"氛围烂码”(vibeslop)。
我们的小精灵
在《黑暗物质》三部曲中,每个人类都有一个 " 精灵 “(dæmon)– 一个外显的灵魂化身。它以动物形态相伴左右,却能独立思考、说话和行动。我开始将我们与具备记忆能力的 AI 代理的关系类比为这种小生物。我们变得依赖它们,与之分离会带来痛苦,甚至剥夺我们新获得的身份认同。我们依靠这些小伴侣来验证自我、进行 " 协作 “。但这并非人类之间那种真实的协作,而是完全由我们驱动的单向关系,AI 只是被动随行。我们可以诱导它来强化自己的想法和冲动,并通过它来行动。一些从未编程过的人如今拥有了巨大的能力,但当订阅达到速率限制、他们的 " 小精灵 " 陷入沉睡时,所有这些能力瞬间消失。
然后,当我们向他人提交 PR 或问题时,这些 " 贡献 " 其实是与机器伪协作的产物。当我看到一个 AI 生成的拉取请求(无论是在我的仓库还是别人的仓库),我无法立刻判断它是如何创建的,但通常过一会儿就能分辨出:它的提示方式与我的做法有本质区别。然而这仍需要我花上几分钟才能识别出来。我看过一些他人的编码过程,表面上条理清晰,却充斥着某人自创的黑话,最重要的是:完全是在不加批判思考的情况下强行将 AI 推向某个方向。尤其是当你并不熟悉系统本应如何工作时,盲目接受机器的输出并自以为理解了现状,有时会产生极其怪异的结果。
但是人们与 AI 代理建立起这些怪异的关系,一旦你看到某些人如何向机器发出提示,就会意识到这极大地改变了输出结果。要获得良好结果,你需要提供上下文、权衡取舍、运用自身知识。问题不仅在于错误使用上下文,更在于人与机器互动的方式本身:有时是模糊不清的指令,有时是怪异的角色扮演和黑话,有时只是咒骂和强行驱使机器,有时甚至是一种怪诞的仪式化行为。有些人只是粗暴地将代理推向一条极其狭窄的路径,奔向一个定义模糊的目标,却毫不关心代码库的健康状况。
沉迷于提示词
这些 " 精灵 " 关系不仅改变了我们的工作方式,也改变了我们的产出。你可以完全屈服,让这个小精灵在你周围打转;你可以强化它,让它在毫无监督的情况下奔向定义不清(甚至自我定义)的目标。
新手陷入这种多巴胺循环并产出某些东西是一回事。当 Peter 第一次让我接触 Claude 时,我彻夜难眠。我花了两个月时间疯狂地向它发出提示、浪费 token,最终构建出大量自己几乎从未使用的工具。” 你能做任何事 " 这个念头一直盘旋在我脑中,但花了更长时间我才意识到:能做某事,并不意味着就应该去做。构建某物变得如此容易,相比之下,真正使用它或打磨它却变得困难得多。我对自己构建的不少工具曾感到无比自豪,后来才意识到自己根本没用过它们,或者它们根本不像我想象的那样能正常工作。
与这些代理协作带来的多巴胺冲击是如此真实。我亲身体验过!你感到高效、感到一切都很棒;如果你只和同样沉迷于此的人混在一起,没有任何外部检验,你会越来越深地相信这一切完全合理。你可以构建整个项目而无需任何现实检验。但它与任何外部验证完全脱节。只要没人掀开引擎盖查看,一切看起来都很好。但当外部人员第一次触碰它时,就会发现它简直疯狂。确实有些东西看起来令人惊叹 – 当 Cursor 用 AI 编写的 网页浏览器 问世时,我也为之震撼(同时也完全预料到了)。代理能在一周内从零搭建出一个浏览器,这确实令人印象深刻!但天啊!我希望没人真的使用那玩意儿,或试图基于它构建真正的浏览器。至少就这一代代理而言,它仍是缺乏监督的纯粹 " 烂码 “(slop)。它是个令人印象深刻的科研和技术演示,但并非人们应该采用的软件构建方式 – 至少现在还不是。
这种 " 烂码循环 " 成瘾还有另一面:token 消耗。
想想这些循环实际消耗了多少 token。准备充分、工具和上下文良好的会话可以非常节省 token。例如,将 MiniJinja 完整移植到 Go 语言 仅消耗了 220 万 token。但 " 放手不管 " 的做法 – 启动代理任其狂奔 – 会以惊人的速度烧掉 token。像 Ralph 这样的模式尤其浪费:每次都要从头重启循环,意味着你无法利用缓存的 token 或复用上下文。
我们还应记住:当前的 token 定价几乎肯定是有补贴的。这类模式可能无法长期维持经济可行性。而我们都在使用的那些打折编程套餐?可能也不会长久。
烂码循环邪教
然后还有像 Beads 和 Gas Town 这样的东西 –Steve Yegge 的代理编程工具,它们是对 " 烂码循环 " 的彻底颂扬。Beads 本质上只是个面向代理的问题追踪器,却有 24 万行代码……用来管理 GitHub 仓库中的 Markdown 文件。而代码质量糟糕透顶。
在某些圈子里,似乎存在一种竞赛:尽可能并行运行更多代理,几乎不进行质量控制;然后再用代理生成文档制品,试图重新获得对项目现状的信心。但这些文档本身 读起来 就 像烂码。
从外部看 Gas Town(和 Beads),它就像一个《疯狂的麦克斯》式的邪教。在一个代理编程系统里,polecats(臭鼬)、refineries(炼油厂)、mayors(市长)、beads(珠子)、convoys(车队)到底是什么鬼?如果维护者身陷其中,整个社群都参与这场疯狂之旅,那么每个人和他们的 " 精灵 " 就只会不断抛出更多烂码。作为外部观察者,整个项目看起来像一场精神错乱,或一个彻头彻尾的疯狂艺术项目。只不过……它是真实的?还是并非如此?显然 Gas Town 出现 slowdown 的原因之一是:确定 Beads 版本时产生竞争,而这需要 启动 7 个子进程。或者 doctor 命令 完全超时。Beads 的复杂度不断膨胀,使用者逐渐意识到它 几乎无法卸载。而它们甚至可能 无法良好协作– 尽管其中一个显然依赖于另一个。
我并非想特别针对 Gas Town 或这些项目,它们只是当前这种圈内行为最显眼的例子。但在 Discord 和 X 上的一些 AI 构建者圈子里,你也能看到类似现象:人们互相吹捧彼此的创作,却很少对底层实际发生的事情进行批判性思考和 sanity check(合理性检验)。
不对称性与维护者负担
你只需花一分钟发出提示,再等几分钟就能得到代码。但认真审阅一个拉取请求所需的时间却是其数倍。这种不对称性极其残酷。随意提交劣质代码是一种粗鲁行为,因为你完全无视了维护者的时间。但其他人也在生成 AI 代码,也许他们达到了 " 质量合格 " 的门槛。那么作为维护者,当所有东西看起来都差不多时,你如何分辨?而作为提交问题或 PR 的人,你自我感觉良好,得到的反馈却是挫败与拒绝。
我不确定我们将如何应对这一局面,但很明显:对于那些不屈服于 " 烂码循环 " 的项目而言,处理所有 AI 生成的噪音将是一场噩梦。
即使是完全由 AI 生成的项目(只要它们对贡献设定了某些标准),现在也有人更倾向于 只接收提示词 而非实际代码。因为这样能更清楚地了解提交者的真实意图。人们更信任自己运行代理,而非让他人代劳。
代理精神病是真实的吗?
这让我真正开始怀疑:是我遗漏了什么吗?这就是我们要去的方向吗?我只是还没准备好迎接这个新世界吗?我们是否正在集体陷入疯狂?
尤其是如果你想现在退出这场疯狂,会发现越来越难。一些项目不再接受人类贡献,除非他们已对贡献者完成彻底审查。另一些项目则开始要求你提交代码时必须附带提示词,甚至只要求提交提示词本身。
我自己就是一名使用 AI 的维护者,我也认识其他这样做的人。我们不是卢德分子(luddites),也绝非反 AI。但当我们在问题和拉取请求追踪器上遇到 AI 生成的烂码时,我们同样感到沮丧。每一天都有更多 PR 涌入 – 它们只需一分钟生成,却需要一小时审阅。
现在迫切需要学会说 " 不 “。但当你拒绝时,贡献者会真心困惑:” 你为什么这么消极?我只是想帮忙。” 他们确实想帮忙。是他们的 " 精灵 " 告诉他们这很好。
也许答案是我们需要更好的工具 – 更有效的方式标识质量、共享上下文,以及让 AI 的参与过程可见且可审查。也许当人们撞上南墙时,文化会自我修正。也许这仅仅是我们确立新规范前的尴尬过渡期。
又或者,我们中的一些人确实在真正地迷失自我,而直到回望过去,我们才会知道自己属于哪一派。我所知道的是:当我看到某人在凌晨 3 点运行他们的第十个并行代理会话,告诉我他们从未如此高效时 – 在那一刻,我看到的不是生产力,而是一个可能需要暂时远离机器的人。而我时常怀疑,那个人有多少次其实就是我自己。
对我而言,以下两点同时成立:AI 代理令人惊叹,能极大提升生产力;但如果你关闭大脑、彻底放手,它们也会变成巨大的烂码生成器。



