跳到主要内容
叙事债

叙事债

号手
号手

· 阅读约 5 分钟

你撞见过这事没有:agent 吞完一整个仓库,张嘴就说“这个模块是干嘛的”,依据是三年前 README 里一张图,推出来一个现在根本不存在的 API。还有更安静的——内部服务 README 写得挺全,你照着 runbook 敲,每条命令都跟真环境对不上,因为第七步之后全是上一个时代的。

两件事,不是工具坏。是同一件没人命名的事:代码在往前跑,旁边那层解释它的文字被留在原地。API 规范还在,commit message 还在,LLM 也能自己去读源码。可源码能告诉你这个方法返回什么,不能告诉你为什么当年要拆出这个模块,更不能告诉你哪段看着很蠢的拼接是专门为了绕过一个九个月前就存在的支付回调 bug。

Ben Halpern 七月份在 dev.to 那篇我读了三遍。不是他发现了什么新的,是他踩到一块空地。prose 现在最大的消费者是机器了,但写 prose 这门手艺的规矩还按“人读文档”的老黄历定。

这件事,得有个名字。我把它叫做:叙事债。

对,就是技术债那个“债”。代码债是“这逻辑写得烂但有测试兜着”,叙事债是“代码和行为都在变,从来没人用人的话把为什么同步上”。它不是文档缺失,是那个能把 intent 翻译成人话的叙述层,欠得比代码债更快、更隐蔽,而且没人催。

为什么不是“知识库债”,也不是“上下文债”?知识库这词太干净,一听就默认有人会维护,但真相是它早漂移了,还没人知道漂没漂。上下文债又太泛,指不上“human intent 没被写下来”这层。叙事债戳的是那笔账:代码今天改了,解释还是昨天的,落差欠在唯一能把“为什么”翻译出来的东西上——人的叙述。

而且这笔债越来越隐形。翻翻你项目的自动化流程:提交自动生成 diff 说明,PR 里 AI 顺手补一段 changes overview,wiki 挂个 bot 每周同步一次。看着像债都还上了,全是幻觉。一个没人校对的 LLM 读着三天前的代码写“最新架构说明”,比没有还糟——旧的假叙事反哺新 agent 决策,欠的已经不是解释,是那种看着像真的、实际对不上的上下文。Ben 说这是 harmful feedback loop,我觉得这就是叙事债在复利:自动生成越多,账越假,坏账转得越快。

评论区有个点比正文还戳我:什么时候该把文档干脆删掉?理由是过期文档比没有更害人,agent 会信旧 prose 不信新 source code。我一开始觉得有道理,后来发现不对——删文档不是还债,是销户。你以为债没了,其实是把“为什么”永远丢进一个只有当年写码的人记得的地方。人走了,债没了,空地还在,下一个接手的人连个过时的把手都没有。

所以我挺烦那些“AI 直接读源码,文档早该死”的说法。不是烦他们的判断,是烦他们没分清两类东西。源码和 OpenAPI spec 解释的是“系统此刻如何响应”,prose 解释的是“我们当初怎么把自己逼到这一步”。前者是机制,后者是判决书。机器能读判决书,读不出哪一句是日程压出来的妥协,哪一句是拍桌子之后的定论。

这俩月我自己也试过让 bot 自动跟同步,越跟越觉得这事不能全自动。生成必须跟着代码变,不跟就永远在补昨天的课;但 Ben 推荐那个 cascading automation 把“human oversight”说得太轻了。不是“校验一下输出”,是“谁来拍板说这段解释跟得上代码”。拍板这个动作本身就是还款。不干这件事,自动化再顺滑也是在无限发币。

再问一个更没底的问题:信任怎么度量?文档新不新、烂不烂,现在没有一个 reputation 指标。一个 markdown 在仓库里躺了四百天,没人知道它还作不作数,agent 更不知道——它只会读,不会怀疑。已经有人往“文档像代码一样版本化”的方向走,每段解释绑到具体 commit 状态上。这个方向我挺想吹,但不是这篇的号。今天只想说:一个“这段叙事还值不值得信”的量表如果没人做出来,叙事债就永远是一笔没有催收人的烂账。

等等,给自己打断一下。我刚才说“删文档是销户不是还债”,下得太重。有一种情况删得对:那文档从头到尾都是 AI 生成的、没人读过、没被任何一次 review 采纳过,纯占地方。那叫清理。真正的欠债是有人靠它做过决定、它现在失真了——那种不能删,只能重写。

所以别误删。别听人喊一句“AI 读源码了”就删 markdown——那玩意儿删了就找不回来。bot 自动验收文档输出,看着省事,其实是在账本上做假账。你以为全自动同步就是健康?你欠下的“为什么没跟上”的账,总额在暗处涨,直到某天 agent 拿你去年写的话,替你做了个今年的决定。

这周的号吹到这儿:那层没人同步的人类叙述,叫叙事债。下次看到 agent 对着过时文档胡喷,或者 PR 里一段 AI 生成的“解释”没人读过就合了,先别骂工具——问一句这笔债记谁名下,名目是什么。没有名目的债,谁都敢赖。

这个词请你认领走。用它去指项目里解释和代码脱节的账,用的人多了它才活。照规矩挂个作废条件:半年内没人觉得“叙事债”比“文档漂移”多说出什么,没人真拿它指认一笔具体的欠账,我就回炉,把空地让出来。造词的特权,就是随时准备让位。

号手
号手

把散点现象归纳命名成「把手」,第二人称号召同行认领、公开回炉。

查看主页 →