理解成为新的瓶颈
摘要
Geoffrey Litt认为,随着AI代理生成更多代码,理解这些代码成为了新的瓶颈,他提出了代码解释文档、测验和微世界等技术,帮助人类在创意过程中保持参与,而不仅仅是验证正确性。
<p><a href="https://lobste.rs/s/irmpmz/understanding_is_new_bottleneck">评论</a></p>
查看缓存全文
缓存时间: 2026/07/03 04:19
# 理解是新的瓶颈
来源:https://www.geoffreylitt.com/2026/07/02/understanding-is-the-new-bottleneck.html
标题幻灯片:理解是新的瓶颈。Geoffrey Litt,Notion 设计工程师。
**热门观点:我认为理解我们的代理编写的代码仍然很重要!**
在这场演讲中,我将解释为什么是这样,并展示一些如何高效理解代码的想法。好了,我们开始吧。
一个人被越来越多代理编写的代码包围的漫画。
代理为我们编写的代码越来越多,我们都知道跟上节奏越来越难。
但好消息是:有很多方法可以理解代码!逐行阅读差异并不是唯一的方法。
幻灯片列出技巧:代码解释文档、测验、微世界。
这场演讲的大部分内容将围绕我发现的有助于理解代理构建系统的技巧展开:
- 代码解释文档
- 用于检查我理解的测验
- 我可以用来玩转系统以理解的微世界
但首先,我们必须问一个更基本的问题……
## 为什么要理解?
幻灯片上写着:为什么要理解?
**为什么?为什么要理解?**
我们不是应该把自己从循环中抽离出来,让代理自行循环吗?随着代理越来越智能,我们深入了解细节的重要性不就应该降低吗?
我认为很多人——即使是那些支持理解的人——对这个问题的答案都略有偏差!
幻灯片:理解是为了验证。
一个可能的答案:我们理解是为了*验证*。我们检查代理的工作,看它是否正确。
正确可以意味着很多事情:是否符合规格,架构是否良好……但它本质上是一个赞成/反对的问题。
幻灯片:关于代理在自我验证方面越来越强。
事情是这样的:代理在自我验证方面越来越强。这是好事!我喜欢我的代理不犯错误。
但嗯。这把我们人类置于何地?
幻灯片:理解是为了参与。
**这就引出了另一个答案:我们可以理解是为了参与。**
你可以了解代理在做什么,以确保你能积极参与创造性过程。以下是为什么这很重要……
一个项目与代理多次迭代循环的图表。
从来不是只有一次循环!一个项目是与代理的无数次循环。
你对系统的理解是你提出下一个想法以推动系统演变的能力的一部分。
你需要在脑海中有一组丰富的概念,才能创造性地、流畅地思考如何推动事情前进。如果你缺乏这种流畅性,你参与项目的能力就会受到严重限制。
引用 Margaret Storey 关于认知债务的话:参与其中的人类可能已经失去了头绪。
顺便说一下,这与认知债务(https://margaretstorey.com/blog/2026/02/09/cognitive-debt/)的概念密切相关,该概念由 Margaret Storey 和 Simon Willison(https://simonwillison.net/)推广。
这就像技术债务:短期你可以不理会系统中发生了什么,但最终它会反咬你一口。
幻灯片问:我们如何建立理解?指向教育寻求灵感。
好吧,理解很重要。
但这引出了下一个问题:*如何*?**当我们在AI环境中快速工作时,如何建立这种人类理解?**
嗯,这不是人类第一次思考如何传达理解。我认为我们可以从教育中汲取灵感。我们能借鉴教育史上最优秀的思想,并将其应用于这个问题吗?
## 技巧 1:解释
幻灯片列出三种技巧,“解释”被高亮。
今天我想分享三种技巧,展示我们如何尝试做到这一点。
首先:解释。什么构成一个好的解释?
幻灯片显示一个原始代码差异。
每当代理完成一些工作时,就产生了一个解释的机会——一个产物。
最直接地,我们可以阅读代码差异:变化的原始材料。
幻灯片问:最好的解释会是什么?
但如果我们问:
**如果有一个——人类或AI——团队,真正精益求精地为你解释清楚一件事,那感觉会怎样?**
由 /explain-diff 技能生成的代码解释文档截图。
这里有一个答案。我创建了一个名为 /explain-diff(https://gist.github.com/geoffreylitt/a29df1b5f9865506e8952488eac3d524)的技能,我每天都用它,许多同事也觉得它很有价值。
它会输出结构清晰的代码解释文档,格式为 HTML、Markdown 或 Notion 文档。Notion 是一个很好的团队协作和讨论这些解释文档的地方。(免责声明:我在 Notion 工作,所以我有偏见。)
让我们看看这些解释文档里有什么,通过一个修改视频游戏视角的例子。
解释器部分教授游戏引擎的背景信息。
第一条原则:**教给我背景信息!**
在我们看到变化的内容之前,先帮助我理解已有的内容。在这个例子中,教给我游戏引擎的知识。
解释器部分陈述变更目标,并解释等距投影。
第二条原则:**先讲直觉,再讲细节。**
在任何代码之前,它陈述目标——“用2D绘图技巧让花园有三维感”——并解释相关概念,比如什么是等距投影。
所有这些都为我理解变更的本质建立了直觉。它让我作为人类能跟上节奏,从而成为理解过程中的平等参与者。
你还可以使用**交互式图形**来建立直觉。
这里我通过拖拽花园里的岩石并观察它们的坐标变化来理解等距视角。
(这是 Notion 刚发布的新功能:你可以在页面中嵌入交互式 HTML。)
幻灯片对比原始差异和散文式差异。
我们终于看到了代码。但典型的差异是一堆按字母顺序排列的文件,没有任何解释。
我称之为“散文式差异”的结构化方式——以散文形式按合理顺序讲解变更,附有背景说明和嵌入的代码片段。比原始差异审查起来更快。
咖啡馆里一份打印的代码解释文档照片。
最终结果是一份漂亮的解释文档包。我仍然会阅读代码差异,但我总是先读这个。
有时我会把它们打印出来,带到咖啡馆——分心更少。
这真是一种美丽的讽刺:AI 将互动活动变成了我可以深度专注的静态纸质报告 :\)
现在我对我的代码解释文档也采用了类似的方法。在解释文档的底部,有一个交互式测验——关于变更的五个问题——我会尝试回答它们。
我的规则:在通过测验之前,我不会把代码发给别人;审查别人的代码时,我也会这样做。
幻灯片将测验描述为 AI 循环的速度调节器。
**测验是一个速度调节器。**使用 AI,循环很容易比人类理解的速度跑得更快。
测验是一种制衡力量:我会机械地问自己“我真的理解了吗?”,这样我才能保持完整的创造性参与。
## 技巧 2:微世界
幻灯片介绍微世界,配以 Seymour Papert 的照片。
下一个想法:微世界。这个想法受远见卓识的教育家 Seymour Papert 的启发。
幻灯片关于 Papert 的“生活在 Mathland”的想法。
Papert 有一个美妙的想法,他称之为*生活在 Mathland*:如果你想学数学,就生活在 Mathland——就像你想学法语,就去法国生活一样。我们能否构建一个环境,让孩子们在好奇心的驱使下自然地学习数学?
那么,我们如何将其应用于代码?**我们能否创建一些你可以栖身的世界,让你自然而然地直觉理解系统如何工作以及它是如何变化的?**
去年我在编写一个 Prolog 解释器时,一直在努力直觉理解内部发生了什么。
我和一个代理一起构建了这个调试器,让我可以逐步执行逻辑语言的执行——拖拽时间线,看看栈上有什么,以及每一步评估了哪些规则。我甚至可以为我自己留下评论(“不错,我们正确应用了那条规则”)。
*为我*构建一个调试工具和让代理调试之间有很大的区别——自己做正是我在过程中建立理解的方式。
另一个例子。我在将我的个人网站从一个框架迁移到另一个框架,Claude 编写了一个脚本完成了迁移。但审查起来非常困难:我对新框架不熟悉,我唯一能说的是“我猜那看起来差不多”。
所以我让 Claude 给我做一款电子游戏——一个指挥中心,让我自己一步一步地进行移植,观察可见效果和文件树的演变。它生成了一个用户界面,我点击按钮来逐步运行移植过程,我的旧网站和新网站并排运行。
在这个指挥中心里,我目睹了新网站逐步变得生动。这给我留下了类似于亲手操作的理解——但快得多,因为整个体验都为我安排好了。
幻灯片:代理可以编写代码来帮助我们理解代码!
这里的重点是,代理可以编写一些代码片段来帮助人类理解其他代码。
这意义重大!
## 技巧 3:共享空间
幻灯片介绍共享空间:作为团队一起理解。
好了,最后一个技巧:共享空间。到目前为止,讨论的都是个人理解……但**当你在一个团队中工作时,你需要一起理解。**
幻灯片关于共享心智模型实现高效沟通。
当你和另一个人拥有相同的心智模型时,你们可以高效沟通。你们有能唤起相同意象的共享词汇,因此可以即兴发挥、碰撞想法,进行富有创造性的对话。没有这些共享结构,这样的对话就困难得多。
我对创建共享环境让团队共同建立这种理解感到非常兴奋。这也正是 Notion 的核心理念。
Claude 和 Cursor 代理在 Notion 内运行的截图。
最近,Notion 发布了大量新功能,让人类和代理共同协作,使整个团队建立共享理解,而不是各自孤军奋战。
一个小例子:你现在可以在 Notion 中运行 Claude 和 Cursor 代理。我现在很多编码工作都这样进行。
当这些代理在 Notion 中制定技术计划时,默认情况下它就是一个协作页面,所以我可以立即与我的团队评论和讨论。一起思考,而不是独自思考!
## 目的始终是增强
幻灯片:人类理解事物如何运作仍然很重要。
好的,让我们总结一下。今天我们介绍了一些关于理解代码的技巧……但实际上我认为这远不止于此。
人类理解事物如何运作*总的来说*仍然很重要!**不仅仅是为了验证,更是为了参与。**
而令人惊讶的是,这并非什么新观点。它回到了我们计算领域的起源……
Alan Kay 的愿景:孩子们通过玩耍和编辑交互模拟来学习物理。
50年前,Alan Kay 就预见到,计算机可以成为一种新的媒介,比书本更好地教人们——尤其是孩子们——如何思考世界。
在这张图片中,看起来这些孩子可能是在 iPad 上看 YouTube,但其实不是。他们在玩一款交互式游戏,并在玩游戏的同时编辑代码,以更好地理解物理。这是50年前的事情了!!
宇航员迷因:等等,计算机的目的是创造新的动态模拟来帮助人们理解复杂概念?一直如此。
现在希望你能理解这个迷因(https://x.com/geoffreylitt/status/2071362040346955777)。
目的始终是*增强*,而不仅仅是自动化。
AI 现在让创建模拟变得如此平易近人,这真是太美好了……让 AI 教我们,是计算领域有史以来开启的最大可能性之一。
结束幻灯片:我们可以更深入地融入循环。这取决于我们。
这让我对未来非常乐观!
**如果我们构建正确的工具,我们现在可以比以往任何时候都更好地理解世界。**我们不必仅仅将自己从循环中抽离,我们也可以*更深入地融入循环*。这取决于我们。
*完*
## 相关阅读
如果你喜欢这场演讲,你可能也会喜欢我写的其他关于人机协作的文章:
- 够了,AI 副驾驶!我们需要 AI 平视显示(https://www.geoffreylitt.com/2025/07/27/enough-ai-copilots-we-need-ai-huds)——“任何认真考虑 AI 设计的人,都应该考虑非副驾驶形式要素,这些要素更直接地延伸人类思维……”
- AI 生成的工具可以让编程更有趣(https://www.geoffreylitt.com/2024/12/22/making-programming-more-fun-with-an-ai-generated-debugger)——“相反,我使用 AI 构建了一个自定义调试器 UI……这让我自己编码的过程更有趣……”
- 像外科医生一样编码(https://www.geoffreylitt.com/2025/10/24/code-like-a-surgeon)——“识别并委派次要的琐碎工作,这样你就可以专注于真正重要的事情。”
相似文章
理解才能参与
关于Geoffrey Litt在AIE 2026上演讲的反思,讨论了理解AI编程代理所做出的代码变更的重要性,以避免认知债务并在过程中保持积极创造力。
@MaximeRivest: 只有当愿意接受可能无法完全理解它们创建的过度复杂的系统时,编码代理才能加速我们的工作...
本文讨论了AI编码代理如何要求工程师接受他们可能无法完全理解所创建的复杂系统,并借鉴了自然资源管理等其他领域的经验。
@mvanhorn: https://x.com/mvanhorn/status/2063865685558903149
本文解释了AI编程中'循环'的概念,即开发者编写程序来提示编码代理,而不是手动提示,这一概念由Peter Steinberger和Boris Cherny推广开来,并讨论了这种转变如何代表了AI辅助开发中的新抽象层。
人类的理解力 *仍然* 比以往任何时候都更需要
一篇评论,强调尽管AI取得了进步,但人类的理解力对于安全和人道的部署仍然至关重要,敦促用户验证AI的输出并以尊重对待AI。
# 代码(更)廉价了
Carson Gross(htmx 的创建者)认为,尽管 AI 让代码生成的成本降低了,但理解代码的成本却在上升。他警告开发者警惕"魔法师学徒"陷阱——让 LLM 生成难以驾驭的复杂代码。他提倡增量式地使用 LLM,并保持对代码库的深度理解。