纯净原则:让文档和提示词只说当前事实的 16 条规则
文档为什么会越来越脏
在调优一个多 agent PPT 生成流水线时,我反复遇到同一种问题:文档和提示词越写越长,但能用的信息越来越少。
读者打开一份文档,想知道的是 "现在该怎么用"。但正文里夹着 "自 v2.8 起新增"" 之前是 X,现改为 Y""本次改动……"—— 这些是给作者看的,不是给读者看的。读者不需要知道历史,只需要当前事实。
本质问题是:写文档的人把变更日志当成了文档本身。版本演进、变更指针、特例补丁,全堆进正文。结果是正文越来越臃肿,真正的事实被噪声淹没。
我把这种 "文档不纯净" 的现象拆成五大类、16 条可审计的规则,叫它 "纯净原则"。
纯净原则的 16 条审计规则
核心心智一句话:读者只需当前事实,版本演进归 git log / CHANGELOG。
mindmap
root((纯净原则))
A[溯源残留]
B[装饰与冗余]
C[死内容]
D[doc/impl裂隙]
E[语言与平台残留]五大类逐一看。每条都配一个 "怎么查",能直接 grep 或人工抽检。
A. 溯源残留
文件里带着 "这是何时 / 为何加的" 叙事。
- 标签式溯源 —— 小节标题 / 括号带版本或事件,如
(v2.8 新增)、(已观测)、(保留)。查:grep(.*新/(.*保留。 - 正文嵌版本号 / 变更指针 ——"自 vX 起"" 详见 CHANGELOG""原来用 A,现已迁移到 B"。查:正文里
v[0-9]\.[0-9](非依赖声明),以及 "之前/原来/改为/迁移到" 句式。 - 按批次而非维度分组 —— 信息架构本身带时间线,按 "加入顺序" 组织而非按主题维度。查:把所有小节标题的溯源词删掉后,分组是否还合理?不合理 → 分组本身是残留。
B. 装饰与冗余
为达标而存在、不承载信息的结构。
- 装饰性 diagram / 注释 —— 为凑 "≥N 张图" 而画,不服务信息。查:删掉它,读者会少理解什么?答案是 "nothing" → 删。
- benchmark 角标当卖点 —— 文档里
#N 排名、stars 数当推荐理由。查:角标是否驱动当前决策?若只是 "看它多流行",降为背景或删。 - 重复 / 冗余 —— 同一内容多处陈述。查:同一断言 grep 命中 ≥2 处,确认是否一处链另一处而非复制。
- 特例 guard —— 用加粗的 "除非/注意/例外" 补丁架构字段,而非把特例纳入字段定义。查:找
**除非**/**注意**/// HACK,判断能否重构为字段。
C. 死内容
文件声称存在、但实际没有或已过时的东西。
- 死指令 ——"统一/一律/必须" 类规则,正文实际没全做到。查:每条 "统一/必须" 指令,抽验正文是否真做到。
- 死链接 / 过时引用 ——
[x](x.md)指向不存在文件;引用的函数 / flag 已改名。查:lint 查死链;人工查引用符号是否仍存在。 - 死字段 / 死参数 ——frontmatter、配置表、函数签名里无人读的字段。查:grep 字段名全仓无读取 → 删。
D. doc / impl 裂隙
文档声称与实际结构 / 行为不符。
- 校验项与动作不对应 —— 文档写了 "检查 X",但实现没产生 X 的动作;或代码做了 Y 但校验没查。查:逐条校验项反查动作源,逐条动作反查校验。
- 产物路径与清单不同步 —— 文档声明的产物路径与实际产物清单不一致。查:改声明时同步改清单。
- 跨实例共享结构 drift —— 多处共享同一结构,但某实例偷偷改了命名或顺序。查:grep 共享结构的标题 / 字段名,确认所有实例用词一致。
- 章节 / 编号跳号 ——1,2,3,5,6(漏 4)。查:编号是否连续无跳。
E. 语言与平台残留
夹带不属于当前语境的内容。
- 语言混用 —— 一种语言文档夹另一种语言叙述(代码标识符 / 枚举值除外)。查:正文语言是否一致。
- 平台 / 工具实现痕迹 —— 特定平台 / 工具的私有 API、CI step id 混进通用规则。查:规则是否平台无关。
怎么落地:心智先于清单
16 条规则不是检查清单,是写作心智。落地有三点:
flowchart LR
A[写之前<br/>心智:读者只看当前事实] --> B[写之时<br/>每条规则对应一个 grep]
B --> C[改之后<br/>每次diff局部纯净]
C --> D[全局纯净]** 第一,心智先于清单。** 记住 "读者只需当前事实" 这一句,能拦掉一半的问题。规则是用来兜底和审计的,不是用来边写边对的。
** 第二,每条规则都配 "怎么查"。** 能 grep 的就 grep,能 lint 的就 lint,让审计可自动化。比如 "标签式溯源" 直接 grep (.*新,"死字段" 直接 grep 字段名看有没有消费者。
** 第三,纯净审计落实到每次 diff。** 不是等全部写完再审计,而是每改一处就保持局部纯净,最后全局自然纯净。这条经验在合并多个 PR 时尤其重要 —— 大重构全程遵循纯净原则,commit 按子 agent、公式、校验等分类,主线才清晰。
本周其他工程产出
除了纯净原则,本周还做了这些,各点到为止:
- designer 调优:designer 不再忠实复用文稿文字,而是做 PPT 风格化;以 HTML 源文件作为中间产物,方便单页调优。
- 公式处理:OMML 在 WPS 支持不完整,改用 MathJax → SVG / 图片方案;LaTeX 智能识别归 researcher,渲染归 designer。
- 降级设计:脚本启动参数 "首选 → 失败降级",而非多选一;提示词对应 "渐进性披露",不一次给太多选择。
- HITL 显式化:需求对齐 → 大纲设计 → finalize.py 校验 → 用户确认才推进,不默认回答。
- AI 阅读器 v0.1:新项目,PRD 与 tech 方向确认。
参考资料
- Diátaxis — A documentation framework:把文档分成教程/指南/参考/解释四类,对应 "读者要什么" 而非 "作者要写什么"。
- Google Developer Documentation Style Guide:Google 的技术写作规范,强调简洁与一致。
- Write the Docs — Beginners Guide to Docs:文档社区的最佳实践合集。