斩断戈耳狄俄斯毛线团

Lobsters Hottest 新闻

摘要

作者反思了为其 Intertwingler 应用服务器解决复杂依赖关系图的挑战,旨在实现密集超媒体以减少过多的读写需求,同时批评人工智能生成过多内容。

<p><a href="https://lobste.rs/s/hetkyy/cutting_gordian_hairball">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/05/17 11:23

# 斩断戈尔迪乌姆式的乱麻(Gordian Hairball) 来源:https://buttondown.com/dorian/archive/cutting-the-gordian-hairball 此刻,我距离完成一项任务仅有数小时之遥——这项任务我多年来一直知道终将不得不做,自去年8月1日起就变得“紧迫”,从圣诞节前后起又成了“关键”,而到头来竟是我许久以来被迫写下的最为隐蔽、折磨人的代码之一。我想,最符合自己风格的做法,就是暂停一切编程活动,先把它写下来。 > 所有要做之事的巨大依赖关系图。(https://doriantaylor.com/file/2026-04-22-master-dependency-graph?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball) 这就是所谓的乱麻:一张依赖图,几乎涵盖了我接下来打算完成的所有产品工作。我几小时后就能搞定的是最左边那个红色对象。我本可以等到做完再写,但那样可能就没现在这么有动力了,因为我更想赶紧去**用**这个新能力,去做那些一直等着它完成的事情。 我多次写过,Intertwingler(https://intertwingler.net/?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball),我那个初生的应用服务器,最初是“一堆关于网络应该如何运作的看法和好(?)想法”,但我从未详细说明这些看法或想法**是**什么,也未曾讲清我相信网络应该**为何**而运作。我用来描述 Intertwingler 目标的术语一直是**密集超媒体**,这很简洁,但世上似乎只有少数人明白这究竟意味着什么。我曾试着讲述它与**稀疏**超媒体的对比——后者在我看来是我们过去三十年所体验的网络形态——但同样,除非你已经深谙理论,否则这依然无法传达我一直奋力改变之事的**价值**。 由内而外工作的挑战之一,是需要**多年**时间才能找到让普通受众理解其**价值**的语言——至少在一个初始约束内要“足够普通”,例如西方(或至少英语世界)、受过教育、城市、白领等等。开发这一能力的动机是**更好的商业信息基础设施**——我的意思是更好的方法来评估环境、管理关系和风险、协调、制定策略、规划、确定优先级、回忆(政策、程序、概念)等等。在众多表述价值主张的方式中,我挑两个重点来说: - **读得更少,却理解得更多,** - **写得更少,却传达得更多。** 这对我来说极具个人意义。我深切——甚至痛苦地——感到自己需要读太多才能理解状况,也需要写太多才能沟通清楚。我之所以觉得要**读**太多,是因为读到的很多东西最后都是**填充物**——如果不算陈旧、过时或彻底垃圾的话。我觉得要**写**太多——或者随便选一种表达媒介(https://www.youtube.com/@methodandstructure?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball)——因为我经常需要反复用不同方式、对不同人、通过不同渠道说大致相同的事情。在传播这些略有变化且极易过时的信息时,我加剧了清晰传达准确和最新信息的难题——其他处于同样位置的人也是如此。 > 而人工智能让情况变得更**糟**,因为大多数时候它不过是在生成大量华丽、一次性、无结构且可能误导人的文本。 在我看来,解决这个问题的方法是创造一个**基板**,让任意小的信息片段都能在全球范围内被重复使用——**始终**供人类使用,并尽可能让计算机也能使用——而且重要的是,要能追溯每个片段的来源。万维网作为一种媒介,在**原则上**提供了实现这一愿景的可能,但在实践中,大量的习惯和惯性阻碍了它的实现。我将这种情况主要归因于**满意原则**(satisficing)(https://en.wikipedia.org/wiki/Satisficing?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball)的条件——这些条件我们最终已经超越了——我在这里说**我们**,是因为我难以相信自己是在这个星球上唯一遇到这种困难的人。网络在“足够好”的状态下对大多数人所期望的某些结果而言是可行的,但**我的**目标超出了这个范围。 因此,Intertwingler 一直是一个练习:**我到底需要撕碎多少惯例才能达到我想要的效果?**答案是**显然相当多**,但绝对数量上其实并没有那么多。它(仍然)小到可以由一个人完成——事实上,我不确定它怎么能**不是**一个人能完成的工作,因为我自己也在边做边学,了解 Intertwingler(以及很快的 Intermingler(https://github.com/doriantaylor/rs-intermingler?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball))应该如何存在于世界中。 ## 读得更少,却理解得更多 我如何诠释并因此**行动**向“读得更少却理解得更多”这个目标?就是用其他技术和媒介——特别是图形和交互过程——来取代通常由**文本**承担的功能。我认为,传统的商业——以及学术——沟通在基本层面是**杂乱**的。文档以及像本新闻信这样的类文档制品通常带有大量的**体积**。它们内部寻址能力差——无论是按惯例还是固有结构——其中包含的信息容易被错放。这导致更容易**复制**其内容,而不是**引用**它们。这会引入错误和不一致,尤其是当这些文档的内容——它们是**固定的**——随时间与现实脱节时。这是一种**以纸张为中心**的世界观,而我们拥有在**范式上**比这更好的信息技术已经**几十年**了。 > 我想明确一点:纸张及模仿纸张的制品仍然有其作用。我只是认为,纸张作为商业信息基础设施主导范式的时代显然已经**结束**了。 网络比纸张做得无限好的一件事是:它可以将文档放在一个**地址**上,世界上任何人——毕竟是**世界**范围的网络——都能立即访问。**而且**,如果你**更新**那个文档,下次人们访问时就会看到新版本。仅凭这一能力,就使**实时文档**成为一个有意义的概念。这不仅不同于印刷品——因为**发布**行为本身不再主导创作和编辑周期——而且也不同于印刷品(即使小错误也是灾难)——你可以直接修改文档,这也会**同时**为**所有人**修复它。简直像魔法一样。 > 诚然,这引入了**新**问题:在没人注意时偷偷对文本进行实质性更改,不标示更改发生或之前写了什么。不过,这个问题原则上已经解决了,实践中也可以解决。我认为这只是 Intertwingler 能够保证的另一件事。 网络相对于纸张的另一个大家都熟悉的主要优势是它在资源之间**链接**的能力。链接机制也延伸到嵌入式图像和视听媒体,以及用于交互界面和演示的代码和其他资产。链接很棒,因为它提供了一种具体的机制来**解引用**信息——在纸张范式中(各种离题、括号、脚注、尾注、旁注、词汇表、索引和参考文献)这种做法原始而笨拙。纸张必须将这些特征全部交织在同一文档中,而网络可以把它们分离出去,从而从读者角度占用更少的**空间**。 > 矛盾的是,我倾向于将网络描述为拥有**无限**的空间,因此你可以让任何时刻的视图只占用更少空间——但这既是祝福也是诅咒。 网络在这方面失败的地方——而且这影响了上述两种能力——在于其寻址机制臭名昭著的**不可靠**。这已经是一个**几十年**来众所周知的问题(https://www.w3.org/Provider/Style/URI?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball),然而显然我们仍未看到它得到最终解决。当然,你无法独自解决整个**网络**的问题,但你**可以**对自己**暴露**的地址做出连续性保证,并且可以采取措施来减轻邻居的失败对你用户的影响。Intertwingler 就是这样一种尝试,我希望通过它以身作则。 你越想就越会意识到,网络 URL 天生的**不可靠性**才是我们无法拥有美好事物的真正原因。毕竟,**为什么**要链接到一个页面,如果读者点击时它很可能**不复存在**?或者如果它**存在**,它还会是你链接时的那个东西吗?这两个相关现象,分别称为**链接失效**(link rot)(https://en.wikipedia.org/wiki/Link_rot?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball)和**内容漂移**(content drift),在我看来是网络尽管作为内容载体——尤其是**软件**——如此成功,却仍然成为糟糕超文本的根本原因。 我大致是说,如果你能做出某些保证: - 对你网站上**暴露的地址**的连续性保证, - 对你**自己**网站内资源之间链接的连续性保证, - 帮助缓解指向你**网站外**的断裂链接的工具…… ……那么,实现“读得更少却理解得更多”的超媒体功能才值得投入。为什么?因为这一策略依赖于缩小单个**页面**,并将它们之间的链接**密度**提高几个数量级。如果你要这样做,它们**必须**可靠。 我目前最感兴趣的超媒体特性,至少在短期内,是能够寻址**多重受众叠加**。当你局限于静态文本时,名义上要传达某种实质性信息,你实际上一次只能针对**一个**受众。这是因为——先不管他们对主题是否感兴趣——不同的人有不同的理解水平,以及对智力严谨性有不同程度的期望。换句话说,有些人需要概念被解释和阐明,而另一些人则坚持要求对你的论点进行详细辩护——并附上证据。这些组成部分和其他任何东西一样占用空间,因此一份同时包含**两者**的常规文档会变得特别冗长,且无法满足任何人。然而,使用超文本实现这一点毫无问题。而对于中间直线受众——既理解所有相关概念又已经接受所有论点的人——你无需浪费他们任何时间就能切入要点。 > 在商业环境中,还有一点:常常有大自尊在作祟。因此,让一个不理解所说内容的人能够**悄悄地**通过旁支路径自学者,不失面子地跟上进度,具有巨大价值。相反,是那些书呆子和律师坚持要读小字,所以你无需用免责声明、脚注和引用给其他**所有人**的主信息添乱。 我对超媒体还特别热衷于另一个方面:使用正式的数学结构来传达信息、讲述故事并支撑论证。这涉及绘制图表,并通过嵌入内容的结构化数据对象创建交互行为。它甚至比纯粹的定义或脚注更**依赖**于给定链接的**含义**。同样,在链接失效的条件下(以及作为链接失效特例的内容漂移),这样做不值当,而且根据我的经验,用常规网络开发技术基本上无法管理。这也是我创建 Intertwingler 的另一个原因。 ## 写得更少,却传达得更多 在许多专业环境中,**记录**的过程通常被视为你“真正”工作之上的“额外”工作。这是因为文档通常必须**追赶**任何实际发生的过程,并将其写下来。之后,如果政策、程序或事务状态发生变化,你**又**要追踪所有旧信息到达的地方,并全部更新。你能负担的追踪只有这么多,因此有些不可避免地会被忽视。当整个系统因熵而变得过于积重难返时,就有强烈的冲动将其全部丢弃并重新开始。此时,你的组织会失去宝贵的记忆,因为它与过时的垃圾纠缠不清。在某些情况下,人们甚至会被迫问:如果文档在任何人阅读之前就会不同步,记录的意义究竟**是什么**? > 几年前我在一次会议上做过一个演讲(https://youtu.be/iiRdzSVKUeI?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball),其中我说你可以把不同信息想象成具有不同程度的易腐性,就像一顿饭中的不同食材,而文档就像那顿饭本身。就像一顿饭一样,文档往往**比**你放入的最易腐食材还要容易变质。即使不会害死你,它也可能像一个在外卖盒里放了20分钟的芝士汉堡:冷、湿、硬,总之难以下咽。 在我看来,这个问题的根本原因是大多数**记录**行为发生在文**档**——或类文档制品中。它们的共同点是往往是无定形的对象,几乎没有正式结构,内部可寻址性差,并且缺乏超文本的基本能力,导致情况被约束为:将信息**复制**到文档中远比比**引用**它容易得多。我当然指的是称为**嵌入引用**(transclusion)(https://en.wikipedia.org/wiki/Transclusion?utm_source=dorian&utm_medium=email&utm_campaign=cutting-the-gordian-hairball)的能力——即把任意窄信息片段(可能递归地)嵌入到其他文档中。嵌入的内容你名义上只需写**一次**,可多次重用,而且你对它做的任何更改都会自动传播。尽管在万维网存在之前,超文本系统就已经设计并实现了真正无缝的嵌入引用,甚至在其**之上**也发明了大量临时解决方案,但万维网仍然没有合理的**标准**机制来正确进行嵌入引用。我再次倾向于把矛头指向链接失效。 > 多年来有过一些提案,例如“无缝” `` 标签,但故事通常是这样: blah blah 安全, blah blah 如何做……

相似文章

最终瓶颈

Armin Ronacher

一篇反思性博客文章,探讨了代码生成中AI加速如何压倒审查流程,在软件工程中创造了新的瓶颈。并与历史上的工业瓶颈进行了类比,建议将抑制输入作为必要回应。

我决定回归手写代码

Hacker News Top

作者在重构一个 Kubernetes 仪表盘工具时反思道,虽然借助 AI 进行“氛围编程”(vibe-coding)能加速功能开发,但在缺乏人工监督的情况下,往往会导致架构臃肿和技术债务。

引用 James Shore

Simon Willison's Blog

James Shore 认为,为防止技术债务不断加剧,AI 编码工具必须随产出增加而成比例地降低维护成本。

我们把世界变得太复杂了

Hacker News Top

一篇评论文章,认为现代社会和科技不必要地让生活变得复杂,批评将通用人工智能(AGI)视为救世主的说法,并建议回归简单。

AI 正在把激进的通才变成他妈的机构

Reddit r/ArtificialInteligence

作者讲述了如何利用 AI 编码工具独自搭建复杂的网页基础设施,认为 AI 能让个人操盘手在没有大型团队的情况下,达成机构级的产出。