# 矛盾登记 > 两份资料说法不一致时,**不许静默采用新的那一份**。登记下来,做一次裁决,写明理由。 --- ## 为什么必须有这个文件 知识库最危险的状态不是"缺内容",是**两份互相打架的内容并存,而没人知道**。 做课时引用了哪一份,全凭运气。更糟的是:新人看到 A 页写"市场 380 亿",B 页写"市场 210 亿",会以为是自己理解错了。 Karpathy 在 llm-wiki 里把「new data contradicts old claims」列为 lint 第一项,理由是:一个不处理矛盾的 wiki,规模越大越不可信。 --- ## 登记表 | 登记日 | 冲突点 | 说法 A(来源 · 等级) | 说法 B(来源 · 等级) | 裁决 | 状态 | |---|---|---|---|---|---| | _(示例)_ 2026-11-04 | 企业 AI 培训市场规模 | 380 亿(某白皮书 · B) | 210 亿(行业年报 · B) | 取 380 亿,口径含 IT 培训;210 亿仅指管理培训 | 已裁决 | --- ## 规则 ### 什么时候登记 入库(`kb-sync`)或检索(`kb-query`)时,只要发现**同一件事有两种说法**,就登记。包括: - 数字不一致(最常见,也最危险) - 结论相反("应该先做 X" vs "不要先做 X") - 时间口径不同(2024 年数据 vs 2026 年数据,看起来矛盾其实是时效差) - 适用范围不同("中小企业适用" vs "只适合大企业") ### 怎么裁决 三选一,**必须选一个,不许挂着**: | 裁决 | 适用 | 后续动作 | |---|---|---| | **采用 A** | A 的口径更清楚、来源更强、更新更近 | 把 B 的说法从页面里删掉,或在正文注明「另一种口径是 X,已不采用,理由见矛盾登记」 | | **采用 B** | 同上,反过来 | 同上 | | **都采用,写明条件** | 确实都成立,只是适用范围不同 | 页面里两句话并存,但必须紧跟「前者适用于…,后者适用于…」 | **裁决后,页面上不能有两句话并存而没有任何说明。** 那等于把问题丢给读者。 ### 状态 - `待裁决` —— 已登记,还没定。**这时候这页不能用于做课**(课件里不许出现待裁决的数字) - `已裁决` —— 定了,页面已按裁决改完 - `已消解` —— 源更新后矛盾自然消失(比如旧文件被删了) ### 谁来裁决 数字口径类:谁最懂这块业务谁定,通常是做课的人。 法条、政策类:只认官方原文,以官方最新版为准,不裁决直接替换。 客户数据类:以客户书面提供的为准,口头说法登记为 C 级备注。 --- ## 和 lint 的关系 `kb.py lint` **查不出**矛盾 —— 这需要读懂两段话的意思,脚本做不到。 所以矛盾只能靠两处兜住: 1. **入库时**:`kb-ingest` 有一项检查「本页结论是否和已有页冲突」 2. **体检时**:`kb-lint` 的每月任务里有一条「抽 5 个 topic 页,对比它们的数字是否互相矛盾」 这是这套系统里少数需要人(或 LLM 语义判断)而非脚本的地方。承认它,比假装能自动检查更好。