1763 字
9 分钟
文档可读性只能由没有上下文的读者判定

一份架构文档被连续否了三版,原话是「太啰嗦」「没看明白你想表达什么」「结构上还是内容上都是一塌糊涂」。三版我自己都通读过,每一版我都读得懂。问题就在这里:缺的那部分上下文在我脑子里,读到哪句它就自动补到哪句。我的判断是,文档的可读性只能由没有上下文的读者判定,作者自评测不出来。

作者读同一句话时会自动补上文档里没有的背景

第二版是照着写作规范改的,照样被否#

第一版被否之后我以为是文风问题,去翻了协作工具官方的写作规范,里面写着叙述默认成段。第二版按这条改完,反馈是「还是这么多的废话」「分点可以吗」「你很多时候都是长篇大论的,你为什么不分点呢」。

第二版否掉了一个假设:照着一份公认的规范写,不等于这份文档的读者能读进去。那位读者读文档和回复全靠扫读,段落里的过渡句和因果铺垫对他是噪音。规范面向的是另一种读者。

第三版被否之后我才停下来,没有去改第四版。连改三版这件事本身说明「再改一版」测不出东西。

自评失效的地方在这里:读自己写的句子时,眼睛扫过的是纸面上的字,脑子里同时补上的是完整的那件事,两股信息混在一起,分不清哪一部分真的写出来了。我在三版里都读到了完整的意思,三版都没把它写全。要测出缺口,得换一个脑子里没有这份背景的人来读。

零背景试读:固定 8 个问题,逐题记下卡在哪里#

我派一个 agent,给它的设定是:第一次看这份文档,没有任何背景,只读这一份,不读它引用的任何文件。给它 8 个问题,逐题记三件事——我从文档里读出的答案是什么、这个答案清楚还是模糊还是根本没写、我卡在哪里又依赖了什么背景知识。

结果是 8 题里 6 题模糊,卡点都很具体:一个组件的职责散在四个小节里、关键数值一个都没给、有个判断全文没有一处直接回答、「第一期」这个词有两种读法。

起作用的是最后一栏。「依赖了什么背景知识」直接列出了哪些东西在我脑子里、不在文档里,这是作者自己问不出来的问题。另一个必填项是「哪里让你犹豫」,并且要求引用原文。犹豫比答错更有信息量:答错至少还有个答案,犹豫说明那句话没有传达出确定的意思。

输出格式也有约定:只报问题,每条给出文件、原句、问题、建议改法;一个问题都没有就返回空列表。没有这条约定,读者会凑出几条看着像问题的东西来证明自己读过了。

同一套办法用在 README 上要加一条规则:派一个完全没有上下文的 agent,告诉它你是第一次拿到这个仓库的人,只能按 README 的「三步上手」操作,不许读源码去猜用法,然后看它能不能跑通。禁止读源码是这条测试成立的前提——模型会自己把缺的那步猜出来,不堵死这条路,它会绕过文档缺陷把东西跑起来,测试就作废了。这份 README 连跑了两个独立 agent 交叉验证,两次都一条命令跑通,约 100 秒出了一期产物。跑不通的地方,才是 README 缺的地方。

术语要写成对照表,不能靠自觉#

试读反馈里有一类反复出现:读者不知道某个词指什么。原话是「里面很多词我都不知道什么意思」。「说人话」停在一句要求上既没法检查、也没法交给别人执行,所以做成一张三列的表:行话、人话、实际含义。

行话人话实际含义
暖池预建沙箱池提前建好一批空闲沙箱等着被领走
冷启动现建现用请求到了才开始建,调用方要等
串号跨沙箱看到别人的数据隔离失效
墓碑调用方放弃后补删请求已中断,资源还在,需要事后清理
幂等键请求编号同一个编号重复提交只生效一次

配套三条规则:图、文档、报告统一按表换;换完意思必须和第三列一致,不许为了顺口改变意思;产品名和组件名保留原文,但第一次出现要用一句话说清它干什么。最后这条是读者直接提的——「别忘了解析一下专有名词,比如说 otel sdk 是什么,你得让别人知道」。

还有一条格式要求同样来自读者:一眼能看出做了什么、和什么比的、基于什么比的、效果如何。这四件事在原来的文档里都有,但分散在九个小节里,读者凑不出来等于没写。

这套办法测不到的东西#

零背景试读只测读得懂不懂,不测对不对。读者能说「这句我读不懂」,说不了「这个数是错的」,他手里没有原始记录。事实错误要另派一个默认怀疑的角色,回原始记录逐条核对数值的原值、单位和口径。那一轮出了 18 条更正,全是口径问题:把测试环境的默认值当成生产值、把已经撤回的旧判断继续当结论引用、把实验原型上的结果写成生产对比。这类错误在试读里全部被标成「清楚」,因为它们写得很明白,只是写错了。

报回来的问题大多要重写,不是润色:同一件事在三个小节里有三种说法、「图 1」是个空占位符、表头写的是「谁在用」而读者要找的是「谁负责」、某个倍数没有比较对象。没有一条能靠换词解决。

多跑几轮也不会多出东西。我一度同时跑三四条这样的评审流水线、每组串行五步,约 30 个代理里有 19 个中途重启过,而要审的内容本身并不复杂。多派一个角色读同一份文档,读出来的还是同一份文档,不产生新证据。后来定的边界是:改文案这类事自己做;拿不准的去实测一次,不用「再派三个代理从不同角度审」代替证据。