Draftlize第 1 卷 · 2026 年版
免费开始 →
指南 · 活文档

活文档,
比这个 sprint 活得更久。

活文档(living documentation)指的是与它所描述的系统保持同步、而不是写完那天就冻住的文档。敌人是文档漂移:文档发布时是准的,产品往前走,几周内它就悄悄地、很自信地错了——而读者分不清哪份新、哪份旧。常见的补救——一张 review 清单、一个文档 sprint、更多自律——每次都输给「发版」。Draftlize 走另一条路:文档从 card graph 派生而来,每份都带着它由哪些卡片生成的快照,一旦上游某个决策变了,文档就自己标成 stale。

TL;DR

静态文档 vs 活的文档。

每份文档在上线那天都是准的。问题在第 90 天——它能不能告诉你它过时了,还是只会继续读着像真的。

Draftlizewiki / Confluence / markdown
文档从哪来从来源卡片派生手打,然后脱钩
某个来源决策变了文档自动标 stale文档悄悄变错
一眼能不能信?stale 是标出来的,不用猜你得对着代码重新核
AI agent 能靠它吗?经 MCP 读当前卡片读到什么文本算什么
谁让它保持最新substrate 追踪漂移一个永远不来的文档 sprint

文档为什么会漂移。

I

写一次,之后再不维护

文档在写下那天最完美,之后更新它就是永远的苦差。维护跟发版抢时间,输了,于是文档冻在原地、系统继续往前——每次发布,缝就更宽一点。

II

文档和它底下的决策没有连接

一页讲计费怎么算的文档,和当初定下计费规则的那个决策之间没有任何连接。改了规则,没人告诉这页它现在是虚构。依赖在现实里存在,在工具里却不存在。

III

读者分不清新旧

漂移最糟的地方是它看不见。一份过时的文档和一份最新的长得一模一样,于是读者信了它——而一份很自信地错着的文档,比没有文档更贵。

Draftlize 怎么让文档一直活着。

I

文档从卡片派生

一份设计文档、一份技术文档、或一份 spec,是从底下的卡片——决策、需求、理由——生成的,而不是当作独立散文手打的。文档有真正的来源,不只是有个作者。

II

每份文档带着来源快照

文档生成时,它记下自己来自哪些卡片、在什么时候。正是这份快照,让系统能把文档拿去和那些卡片的当前状态比对——文档与真相之间的链是被存下来的,不是靠记的。

III

卡片一变,文档标 stale

一个后台检测器盯着来源卡片。改动一张某份文档所依赖的 ADR 或 spec,凡是从它派生的文档都标 stale——于是文档主动告诉你它该看一眼了,而不是等着被发现是错的。

问题从来不是把文档写出来,而是文档没法知道自己什么时候不再成立。
让文档从决策派生。决策一动,文档就说话。
常见问题

FAQ。

什么是活文档(living documentation)?

活文档是与它所描述的系统保持同步、而不是写完那刻就冻住的文档。这个词来自 BDD 圈,那里文档是从可执行的规格生成的。更广义的想法是:文档应该从一个活的来源派生出来,于是来源一变,它要么自动更新、要么把自己标出来。

什么是文档漂移(documentation drift)?

文档漂移是指:系统在演进、文档没跟上,两者之间裂开的那道缝。它危险,是因为一份漂移的文档和一份最新的长得一模一样,读者会继续信它——一份很自信地错着的文档,比没有文档更贵。

怎么让文档一直保持最新?

持久的解法是别再手动维护文档,而是从单一来源派生它,再在来源变化时把它标出来。Draftlize 从 card graph 生成文档,并记下来源卡片的快照,于是一个后台检测器能在上游决策一动那一刻,就把文档标成 stale。

这和 docs-as-code 有什么不同?

Docs-as-code 把文档放进版本控制、和代码一起走同一条流水线——这是真实的进步,但文档仍然是一段得靠人记着去更新的散文。放在 card graph 上的活文档补上了缺的那一环:文档知道自己依赖哪些决策,于是它能自己标 stale,而不是指望有人注意到。

会自己标出漂移的文档——用 $5 免费。

新账户送 $5只为实际用量付费余额永不过期

把决策和 spec 存成卡片,从它们派生文档,让每份文档在来源决策一动时就标 stale。

用 $5 免费开始

Spec 驱动开发