矛盾登记.md 3.0 KB

矛盾登记

两份资料说法不一致时,不许静默采用新的那一份。登记下来,做一次裁决,写明理由。


为什么必须有这个文件

知识库最危险的状态不是"缺内容",是两份互相打架的内容并存,而没人知道。

做课时引用了哪一份,全凭运气。更糟的是:新人看到 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 语义判断)而非脚本的地方。承认它,比假装能自动检查更好。