@badlogicgames:推荐阅读。

X AI KOLs Timeline 新闻

摘要

本文讨论了软件工程中的有限认知概念,强调了人类记忆和注意力的局限性,以及在这些限制下如何构建软件系统。

推荐阅读。 https://t.co/emuVkKpo8T
查看原文
查看缓存全文

缓存时间: 2026/06/29 02:22

推荐阅读。

https://t.co/emuVkKpo8T


为有限认知而设计

来源:https://shapeofthesystem.com/posts/2026/02/03/bounded-cognition
构建软件的心灵远比它构建的软件要小,而工程中几乎所有美好的事物,都是与这一差距共存的方式。

2026年2月3日·跨领域(https://shapeofthesystem.com/posts/cross-cutting/index.html)

你可能听说过,大脑一次能同时处理七件事。这是大众心理学中被引用最多的数字,但提出这个数字的人其实自己都不相信。乔治·米勒(George Miller)在1956年发表的论文《神奇的数字七,加减二》中,一半是当作玩笑来写的。他写道,这个数字在毫不相关的实验中反复出现,很可能只是巧合,甚至一度说自己被一个整数折磨得够呛。他的怀疑是对的。后来的研究者剥离了我们用来作弊的小技巧——比如低声复述、将数字分组——结果数字就下降了。当所有这些辅助手段都被去掉后,一个人在不借助任何帮助的情况下,能同时记住的独立事物的诚实数字大约是四。

四个。现在把这个数字和你正在阅读本篇文章的设备对比一下,它运行着数千万行代码。软件的整个问题就藏在这个比例里。我们构建的系统是人类创造过的最精密的物件之一,它们被构建、被修改、在压力下被从崩溃边缘拉回来,而这一切都靠那些一次只能记住大约四件事的大脑。

而且,问题还不只是容量小,它还非常狭窄。你投向那四个槽位的注意力,不是照亮整个房间的泛光灯,而是黑暗仓库里的一束手电光,几乎所有东西都在光柱之外。有一个著名的实验,让人们观看一段视频,并数一数一支队伍传了多少次篮球。视频进行到一半时,一个穿着大猩猩服装的人走到画面中央,转向镜头,捶胸顿足,然后走开。整整九秒钟,清晰可见。大约一半的观看者根本没有看到它。他们正盯着它看。他们不是瞎子。只是光束对准了球。还有更离奇的。在另一项研究中,人们被拦在街上问路,就在他们回答的中途,两个工人抬着一扇门从他们之间穿过,而门后面,问路的人被换成了另一个人。不同的身高、不同的衬衫、不同的声音。大约有一半的情况下,这个人会继续向一个完全陌生的人指路,却从未注意到面前的人已经被替换了。而且,就算你抓住了那一点点信息,也只能维持几秒钟。给一个人看三个随机字母,阻止他复述,二十秒内大部分就消失了。所以,这就是四个槽位、一束窄光和一只漏桶。这就是我们用来构建软件的“工具”。

一旦你真切感受到心灵是多么渺小,软件令人惊讶的地方就不再是它会出故障。真正令人惊讶的是它居然还能运行。我们搭建了这些逻辑的大教堂,它们庞大到任何一个人都无法完全装进脑海里,却用与生俱来的、同样那四个槽位、会忽视大猩猩的大脑,设法让它们屹立不倒。正常运行时间才是奇迹。

这让我们行业喜爱的一个词,暴露在更刺眼的聚光灯下:人为错误。翻阅几乎任何一份故障报告,最后都会找到一个人:输错了命令、点错了按钮、没看到警告。我们把整件事归咎于他们的粗心,并承诺下次会更努力。但是,一半专注的人都会直接看过去却注意不到的警告,其实根本算不上警告。它只是一个装饰品。一个只需疲惫地点击一下就可能引发灾难的按钮,是设计师放在那里的,而不是那个碰巧点击它的人。那些专门研究这个的人——在航空、医疗和核电站控制室里,在那里“再小心一点”这种建议可能会害死人——很久以前就明白了这个道理。当一个有能力的人反复犯同样的错误时,问题几乎从不在人身上。问题在于,这个系统是为一个并不存在的操作者设计的。一个从不疲倦、从不走神、能把整台机器同时装进脑子里的人。那个操作者从未出生。为TA搭建的每个系统,从一开始就是坏的,只是还没遇到它的“糟糕日子”而已。

有那么一段时间,你可以安慰自己说,机器会把我们从这一切中拯救出来,至少计算机没有那四个槽位的大脑。然后,我们造出了能读写语言的机器,把代码交给它们,然后看着它们以一种令人不安的熟悉方式失败。一个大型语言模型有所谓的“上下文窗口”,这是一个硬性限制,决定了它在任意时刻能考虑多少信息。它的行为不像长期记忆,更像你此刻正在脑中想着的东西;一旦某样东西从窗口里掉出去,它不是被模糊记起,而是直接消失。即使在窗口内,模型也不是均匀地分配注意力。有一项标题非常平淡的研究叫“迷失在中段”(Lost in the Middle),研究人员发现,当所需事实位于长输入的开头或结尾时,这些系统回答得很好;但当它埋在中段时,回答质量明显变差。这正好和一个疲惫的人浏览文档时的样子一模一样:抓住开头和结尾,中间部分则变得目光呆滞。给模型越多的内容去读,它的表现反而可能更差。在某些测试中,给它更多检索到的文档,准确率反而降到了不给任何文档时的水平以下。模型的注意力是固定的总量,总和必须为1,所以你看的东西越多,任何单个早期事物能保留的注意力就越少。当分散得足够稀疏时,你在会话开头给出的指令就变得微弱了,助手可能会重复编写一个它已经写过的函数,或者破坏你们半小时前共同做出的某个决定。它跟丢了线索。同样的有限性,只不过现在运行在硅芯片上,犯错的模式和你最糟糕的那个下午一模一样。

这对新手和专家、对休息充沛者和筋疲力尽者、对人类和机器,都是如此。改变系统的心灵,总是比系统本身小得多。不存在一个版本,可以通过变得更聪明、雇佣更聪明的人、或购买更大的模型来超越这一点,因为这个差距不是几个数量级,有一天你可能能弥合。这是这项工作的永久性条件。所以,工程的核心问题不是“我们如何找到一个足够大的脑子来装下这一切”,因为没有这样的脑子。问题是“我们如何塑造这个东西,让一个小脑子能够安全地修改它,而不会让整个系统崩塌”。几乎所有我们称之为“优良工程”的事物,都是对这个问题的一个回答。给某物起一个精确的名字,你就多了一个不必记在脑子里的信息。画一条边界,你就获得了一个不必反复核查的承诺。写一个测试,你就把一个决定停放在了一个不会随时间消逝的地方。而任何可以撤销的操作,都是允许犯错的空间。以上每一种做法,都将本应存在于那脆弱的四槽位大脑中的事物,转移到了系统结构之中,在你眨眼的瞬间,它仍然在那里。

以这种方式构建有一个安静的红利,最清晰的证据就躺在厨房抽屉里。1990年,一个叫萨姆·法伯(Sam Farber)的人看着妻子贝琪(Betsey)费力地用一把普通的蔬菜削皮器,那薄薄的金属手柄硌着她因关节炎而僵硬的手指。他决定给她做一个更好的。他们最终的设计是一个柔软、有弹性的握柄,疼痛的手不用使劲就能握住,它后来成为全球最畅销的厨房工具之一,被数百万完全没有关节炎的人购买,因为为有困难的手设计的把手,结果对所有的手都更好。为最受限的用户设计,并不是我们其他人忍受的某种慈善。更多时候,它只是给了你一个更好的东西。对于我们用代码构建的东西也是如此。让系统对疲惫的工程师、分心的工程师、一无所知的新手、以及不断跟丢线索的机器都安全,你并没有为天才降低天花板。你只是建造了每个工程师在光束变窄时——而这终将发生——都会伸手去拿的东西。

这一切都不是应用一次就能了事的技巧。它是一种思维习惯。它是一种将自己注意力视为稀缺且不可靠资源,并据此进行构建的方式。我花了很长时间试图将这个习惯转化为具体的行动,那些你对系统做的具体事情,让一个小小的大脑能够安全地修改它,它们最终汇成了一篇宣言。这篇文章是支撑整个宣言的思想。如果其中任何一点引起了你的共鸣,如果你曾直视过大猩猩却错过了它,那么剩下的只是具体实现而已。


在宣言中,这是序言:整篇宣言就是对它的一个漫长回答。

参考文献

  • [Cowan 2001] Nelson Cowan,《短期记忆中的神奇数字4:关于心理存储容量的重新思考》。Behavioral and Brain Sciences 24(1),2001。https://doi.org/10.1017/S0140525X01003922。工作记忆限制约为四个组块,而非七个;参见信条·序言(https://shapeofthesystem.com/index.html#preamble)。
  • [Liu et al. 2023] Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni & Percy Liang,《迷失在中段:语言模型如何使用长上下文》。arXiv:2307.03172,2023(后发表于TACL vol. 12,2024)。https://arxiv.org/abs/2307.03172。模型关注两端,丢失长上下文的中间部分;参见信条·序言(https://shapeofthesystem.com/index.html#preamble)。
  • [Miller 1956] George A. Miller,《神奇的数字七,加减二》。Psychological Review 63(2),1956。https://doi.org/10.1037/h0043158。工作记忆限制,对应“工程师必须记在脑中的内容”;参见信条·序言(https://shapeofthesystem.com/index.html#preamble)。
  • [OXO Good Grips 1990] OXO Good Grips,由萨姆·法伯在看到妻子贝琪费力使用削皮器后创立,与Smart Design合作设计。1990年。https://en.wikipedia.org/wiki/Sam_Farber。为受限情况设计使工具对所有人都更好;参见信条·序言(https://shapeofthesystem.com/index.html#preamble)。
  • [Peterson & Peterson 1959] Lloyd Peterson & Margaret Peterson,《单个词语项目的短期保持》。Journal of Experimental Psychology 58(3),1959。https://doi.org/10.1037/h0049234。未复述的项目在几秒内衰减;参见信条·序言(https://shapeofthesystem.com/index.html#preamble)。
  • [Simons & Chabris 1999] Daniel Simons & Christopher Chabris,《我们中间的大猩猩:对动态事件的持续非注意盲视》。Perception 28(9),1999。https://doi.org/10.1068/p281059。专注的注意力使明显的事物变得不可见;参见信条·序言(https://shapeofthesystem.com/index.html#preamble)。
  • [Simons & Levin 1998] Daniel Simons & Daniel Levin,《在现实世界互动中未能察觉人物变化》(“门研究”)。Psychonomic Bulletin & Review 5(4),1998。https://doi.org/10.3758/BF03208840。变化盲视:一半人错过被替换的对话者;参见信条·序言(https://shapeofthesystem.com/index.html#preamble)。

这是一系列关于为大脑真实工作方式——疲惫、易分心、普通,并且现在部分由机器驱动——构建软件的现场笔记的根源。全套行动方案来自它们所依据的宣言:《系统的形状》(The Shape of the System)(https://shapeofthesystem.com/)。

相似文章

面向有限认知的工程

Hacker News Top

文章探讨了人类认知的局限性——例如工作记忆只能同时处理大约四个项目——以及这些限制如何塑造软件工程,并论证了许多“人为错误”实际上是设计缺陷。

认知依赖

Reddit r/singularity

一篇简短的评论文章,探讨依赖AI进行软件开发是否会导致工程师技能退化,并可能造成AI进展停滞,直至递归自我改进(RSI)成为可能。

学习软件架构

Hacker News Top

一位软件工程师分享了学习软件架构的见解,强调组织架构与激励机制优先于代码本身,并结合 rust-analyzer 与科学计算代码的实例进行了说明。

@saranormous: https://x.com/saranormous/status/2064510215056400652

X AI KOLs Following

尽管以Devin为代表的AI编程助手取得了快速进展,显著提升了代码编写和交付的速度,但本文认为,软件工程中最有价值的部分仍难以通过基准测试衡量,并且需要人类的判断和组织协调,这些是无法轻易自动化的。