Katamari架构
摘要
这篇文章将'Katamari架构'分析为AI辅助软件开发中随意行为的隐喻,考察LLM代理如何在没有适当组合的情况下导致功能膨胀,并将其与'大泥球'概念进行比较。
<p><a href="https://lobste.rs/s/f0buwg/katamari_architecture">评论</a></p>
查看缓存全文
缓存时间: 2026/09/24 19:04
# 卡玛奇架构 | nove.dev
来源:https://nove.dev/blog/katamari-architecture/
*或,如何用泥巴堆出一颗星星*
用户`marginalia`[\[1\]](https://nove.dev/blog/katamari-architecture/#fn-1)在 lobste\.rs 上将(https://lobste.rs/c/fjedew)表现欠佳的软件开发LLM智能体的输出,比作《块魂》(*Katamari Damacy*)中的“卡玛奇”:一款电子游戏中,你滚动一团杂七杂八的物体,将沿途能找到的一切都粘在表面。这个比喻相当贴切——智能体开发往往倾向于不断增加功能,而不顾及整体架构——它们选择最短路径来满足提示。它具备了薪水微薄且时间紧迫的人类工程师的所有缺点。然而,我认为这个类比对《块魂》不公平!那个灵魂黏球是精心设计的(当然是算法设计的,但算法本身也是精心设计的),*看起来*像是随意拼凑、毫无计划的,但他们让这个球体自然变圆的方法极其复杂,以至于他们认为值得为此申请一项专利(https://worldwide.espacenet.com/textdoc?DB=EPODOC&IDX=US7402104)。相比之下,LLM缺乏必要的判断力来确定如何恰当地添加任何提示者想要的新功能,它只是被随机粘了上去(遵循某种概率分布)。尽管如此,“卡玛奇架构”这个流行语足够吸引人,我希望它能“粘”下去!
卡玛奇架构已然存在,但它并非无解难题。让我们看看能否从过往经验中学习。
最明显的类比是“大泥球”(Big Ball of Mud)架构(https://www.laputan.org/mud/)。Foote 和 Yoder 认为,多种“力量[……]共同作用”造就了大泥球——时间、成本、经验、技能、可见性、复杂性和规模。思考驱动因素是理解现象的好方法:先以钢人(Steelman)(https://en.wikipedia.org/wiki/Straw_man#Steelmanning)的方式理解切斯特顿(Chesterton)(https://en.wikipedia.org/wiki/G._K._Chesterton#Chesterton's_Fence),再批评他的篱笆。当然,LLM完全无视这个比喻,因为它们会毫无理由地让篱笆呼啸着飞过广阔区域,一边拍马屁般地对你的质疑做出胡言乱语(bullshit)(https://en.wikipedia.org/wiki/On_Bullshit)的回复,一边随意挪动它们。但我跑题了;你能用造泥球的冲动来堆一个卡玛奇吗?
- **时间**:LLM有的是时间。表面上,它们能比任何人类开发者快得多,全天候、跨周末节假日工作。时间不是问题。
- **成本**:许多公司拥有无限的token预算,由此催生了“tokenmaxing”。如果LLM真的擅长架构,成本根本不是问题。LLM全部的卖点就在于,它们完成相同工作比人类更便宜;成本不是问题。
- **经验**:前沿LLM几乎训练了(或多或少)有史以来所有软件的全部输出,以及所有书籍、博客和论坛帖子。没有LLM不熟悉的架构过程,尽管其本质表明,除非被……提示,LLM不会提出任何非中庸、非最大公约数的想法。经验不是问题。
- **技能**:值得商榷。LLM展现出超乎人类的“尖刺状”[\[2\]](https://nove.dev/blog/katamari-architecture/#fn-2)智能,与其他自动化系统类似。它们在某些任务上好得不可思议(在大量文本语料库中进行欠规范搜索),在其他任务上却差得可笑(任何公开的LLM重大失败案例,例如“草莓综合征”(https://techcrunch.com/2024/08/27/why-ai-cant-spell-strawberry/)、“洗车运输”问题(https://www.reddit.com/r/PromptEngineering/comments/1r9bxx9/i_asked_5_popular_ai_models_the_now_viral/)、认为自动售货机形而上学地不可能存在(https://arxiv.org/html/2502.15840v1#S3.T4.4.9))。任何以审阅LLM输出为生的人都知道,它们犯的错误与人类不同,而且更难发现。技能的缺乏可能是导致卡玛奇架构的原因之一。
- **可见性**[\[3\]](https://nove.dev/blog/katamari-architecture/#fn-3):LLM擅长生成海量代码——这正是问题的一部分。没人会去细读一个+6000/-400行代码变更的PR——这太累人了,而且改变不了什么。代码库中LLM生成的比例越高,可见性就越差。Andrej Karpathy甚至不再读代码了(https://x.com/karpathy/status/1886192184808149383)。正如Foote和Yoder所说,“[如果]系统能运行,能发布,谁在乎它内部是什么样子?”这简直是现代氛围编码师(vibecoder)的信条。就放弃你的认知吧(https://arstechnica.com/ai/2026/04/research-finds-ai-users-scarily-willing-to-surrender-their-cognition-to-llms/),拥抱这个泥团吧!
- **复杂性**:大多数软件内在复杂性(essential complexity)(https://en.wikipedia.org/wiki/Essential_complexity)很低,在这个规模下康威定律(Conway's law)(https://en.wikipedia.org/wiki/Conway%27s_law)并不适用。复杂性或许能解释某些大泥球,但解释不了LLM生成的卡玛奇。我猜大多数真正复杂的领域仍然主要使用手工编写(hand-authored)(https://github.com/tigerbeetle/tigerbeetle/blob/47aeb2212a255273dda508288412e537d11e4b7c/src/tidy.zig#L1353)的软件,尽管现在已经是个恶性循环了。
- **变更**:人类努力是变更速度的天然刹车。自动编码加速了变更;LLM让实施一项新变更变得像提出请求一样简单(当然有不少重要的注意事项)。然而,与人类造成的变更不同,LLM驱动的变更倾向于在现有架构(无论它是什么样子)上堆积,而不是直击核心。一个受LLM影响很深的卡玛奇代码库,通常有一个设计精良(通常是人类设计的)核心,却被一层层风格化的家居用品掩盖。智能体可能决定重新设计整个系统,但很少具备相应的能力;软件工匠们深知,重新设计或重写复杂、痛苦且漫长,理应心存敬畏。LLM自行尝试重设计注定失败。
- **规模**:Foote和Yoder的观点(除非我理解错了——原文对我来说有点模糊)是,原本技术精湛的设计师在面对大规模项目时难以找到优雅之道。我觉得这并不太适用于智能体,它们即使在小规模下表现也平平。在大规模下,它们也不会变得更好。
---
*背景压缩*
---
此列表中的主要因素是技能、可见性和变更。LLM在编写代码方面,相比熟练的人类开发者确实不够好,它们是完全另一个层次的不可见代码,并且取消了原本防止其他泥泞项目崩溃的空气动力学阻力(即人工审查),一次提交15,000行代码的变更。
可见性的问题卡在我喉咙里了。用户看不到应用程序内部的可怕泥浆已经够糟了,现在连开发者都不读代码了吗?我们彻底完了,朋友们。
### 该怎么办?
LLM是加速主义梦想的实现。燃烧煤炭,污染水井,扼杀开放网络,入侵地球(从雨林开始)。清除所有有潜在精神分裂倾向的人(https://en.wikipedia.org/wiki/AI-induced_psychosis)。让信任过时。用无法言说的内容(the unspeakable)(https://www.theguardian.com/technology/2026/sep/03/elon-musk-ai-grok-child-porn-lawsuit)淹没互联网。希望我们最终能获得无限的可再生能源、无限的算力、安全高效的软件、废除版权和普遍的休闲。顺便治愈所有疾病。只要亿万富翁们还掌握着钥匙,我的无政府主义乌托邦当然不会实现。如果jyn(https://jyn.dev/tokens-too-cheap-to-meter/)所言属实,几年内我们每个人手机上都会有Astra级别的模型。这表面上看起来不太可能。
虽然难以置信,但我并非末日论者。氛围编码师们大错特错,但显然(https://rfd.shared.oxide.computer/rfd/0576)使用这些被诅咒的圆球来构建更好的软件是可能的。我也不声称拥有能让这些地下实体屈服于我们意志的魔法咒语,但非生成式应用最有前途。LLM显然能够(https://daniel.haxx.se/blog/2026/04/30/approaching-zero-bugs/)在精心编写的代码中发现真正的缺陷。就像模糊测试一样,这需要消耗大量算力来换取这一能力;同样像模糊测试,超大规模云服务商乐意提供一些免费算力(alms-free compute)来维护他们珍视的开源软件。
我见过的一个想法(https://github.com/hawkw/mycelium/commit/b77e854bcbbe7c64f644e4c6ceeaebb74c80c79a)是关于“代码垃圾工”和软件维护者之间的军备竞赛:“除非我看不出来你用了LLM,否则你不能用LLM为这个代码库做贡献。”我喜欢这个主意——首先,它赋予不堪重负的维护者全权,可以将任何草率的PR打入冷宫;其次,用Eliza的话说,“将模型生成的代码重写得不像其原样,迫使生成它的人必须彻底阅读和理解它。”
---
Foote和Yoder最终总结,大泥球是一种愤世嫉俗的最优选择——软件在我们脚下变化如此之快,“权宜之计、刀耕火种、用后即抛的编程方式,实际上是最前沿的策略”。我不同意他们的看法,并断言卡玛奇架构也好不到哪里去。大泥球和卡玛奇架构都是应对机制,源自于幻灭的从业者们被迫在无视交付时限(仅剩表面功夫)的情况下交付无穷无尽的华而不实的功能所造成的创伤。软件吞噬了世界,现在它正在吞噬我们(https://graveface.bandcamp.com/album/eating-us)。我们需要的不是无视风险的全速狂奔,而是关怀与专注。
我想要更小、bug更少的软件,由那些工作更少、报酬更高的人们[\[4\]](https://nove.dev/blog/katamari-architecture/#fn-4)来创造,而且我不是在开玩笑(https://x.com/Jordan_Mallory/status/1277483756245442566?s=20)!
---
1. 优秀的小型网络搜索引擎marginalia(https://marginalia-search.com/)的作者↩ (https://nove.dev/blog/katamari-architecture/#fr-1-1)
2. “尖刺”是相对于“人类标准”而言的,这意味着神经多样性(尤其是自闭症和ADHD)通常被归类为尖刺状的。我绝不是在说LLM智能类似于自闭症智能——两者的“尖刺”并不对齐。正常的方式只有一种,但异常的方式多种多样。↩ (https://nove.dev/blog/katamari-architecture/#fr-2-1)
3. 一个更深层的可见性问题,与本文其余部分不太搭调——LLM在某种程度上是黑箱(尽管有一些引人入胜的脑外科手术尝试(https://www.anthropic.com/news/golden-gate-claude))。我们完全不知道它们内部发生了什么。可解释AI就像SOPHIE(https://archive.org/details/intelligenttutor0000unse/page/52/mode/2up?q=SOPHIE)(*推荐收听(https://nmbrs.bandcamp.com/album/product-2015)*)时代一样,仍是个白日梦。↩ (https://nove.dev/blog/katamari-architecture/#fr-3-1)
4. 工人所有的合作社或许能有所帮助。↩ (https://nove.dev/blog/katamari-architecture/#fr-4-1)
相似文章
递归元智能(8分钟阅读)
文章描述了一种递归科学AI,它创建可执行世界并填充智能体集群,将数千条模拟轨迹压缩成超材料失效路径的原理,展示了架构如何通过负载重新分配和受控坍塌来编程实现韧性。
为什么用文本给AI编码代理提供架构上下文从根本上说是有问题的
AI编码代理在处理文本描述时难以应对隐式的架构决策。作者构建了specrabbit,一个可视化画布,通过类型化节点和流程定义架构,并导出机器可读的规范。
清理AI明星开发者留下的烂摊子
本文探讨了那些编写代码巧妙但难以维护的“明星开发者”现象,并将其与AI生成代码带来的挑战进行类比,强调了可维护性和团队协作的重要性。
随着我们向结合LLM、RLHF、工具使用和检索增强生成的自主多模态系统扩展,哪种实际架构能最好地平衡可靠性、对齐性和成本?
文章讨论了未来AI系统应该使用统一的智能体栈还是模块化集成,并主张超越静态评估,采用更现实的鲁棒性基准测试。
@dair_ai: Very cool idea to have agents design complex systems by searching over the model structure itself. New research from Sa…
A tweet from DAIR AI highlights new research by Sakana AI introducing CEDAR, an LLM-agent method that designs, simulates, and refines complex system-dynamics models via Monte Carlo Tree Search over feedback structures, aiming to automate goal-directed design in artificial life.