本文件定义本库所有 md 文件的格式约束。
kb.py与所有 skill 都以此为准。 改本文件 = 改法律:必须同步改90-工具/kb.py的dump_fm字段顺序,并在文末「规则变更记录」登记。
类型 type |
目录 | 职责 | 一页装什么 |
|---|---|---|---|
source |
sources/ |
来源页:一个原材料文件对应一页 | 该文件讲了什么、关键事实、可引用原句、适用场景 |
topic |
topics/ |
主题页:多源合成的知识块 | 一个业务问题下的整合结论(市场规模、客户画像、方法论体系) |
entity |
entities/ |
实体页:人/机构/工具/政策/术语 | 该实体的定义、属性、与本业务的关系 |
module |
modules/ |
课程模块:可直接进课程的最小单元 | 目标、知识点、案例、时长、素材出处、练习 |
判定规则
sourcetopicentitymodule一个源文件通常派生 1 个 source 页 + 若干个 topic/entity/module 页。 纯废话的源文件可以只建 source 页,不强行派生。
---
id: "src_a1b2c3d4" # 唯一 id,source=src_*,topic=tp_*,entity=en_*,module=md_*
type: "source" # source | topic | entity | module 【必填】
title: "2026 AI 培训白皮书" # 人类可读标题 【必填】
summary: "一句话说明这页有什么用" # ≤ 40 字,进索引 【必填】
evidence: "A" # A|B|C|D 证据等级,见第三节 【必填】
tags: # 2–5 个,用于检索
- "行业"
- "市场"
sources: # 【关键】该页内容来自哪些原材料
- "01-行业资料/2026-AI培训白皮书.pdf"
related: # 相关页面的 stem(不含 .md)
- "提示词案例集"
status: "active" # active | draft | archived
stale: false # true = 上游变了,本页待重建
stale_reason: "" # 为什么 stale
created: "2026-11-04"
updated: "2026-11-04"
---
00-原材料/ 下的相对路径(POSIX 斜杠),不是 id、不是文件名。kb.py retract 靠它定位要回滚的页面。做课最大的风险不是没内容,是把 C 级经验当成 A 级数据讲给客户听。学员一追问就穿帮。
| 级别 | 定义 | 典型来源 | 讲课时的约束 |
|---|---|---|---|
| A | 可核验的一手数据,有明确口径和出处 | 国家统计局、上市公司财报、客户书面提供的真实数据、已发表的一手研究 | 可直接讲,页脚标出处 |
| B | 有研究或报告支撑,但样本小、口径不明、无法复现 | 咨询公司白皮书、行业调研、单一案例报告 | 必须说「某机构测算」,不能说「数据显示」 |
| C | 从业者经验、普遍共识,无直接证据 | 讲师判断、同行说法、行业习惯 | 必须说「经验上」,不能当结论用 |
| D | 推断、假设、未验证 | 「我推测客户会在意…」、模型生成的分析 | 不许进课件,只能留在 module 的「待验证」区 |
页面的 evidence = 该页所有内容里最弱的那一条。
source 页:按原文件本身的性质定级。topic 页:不得高于它所有 sources 对应 source 页的最低级。合成不会提高证据强度。module 页:不得高于它引用的素材最低级。entity 页:无权威来源时一律 C。kb.py lint 会查 EVIDENCE_INFLATED(声明等级高于来源最低级),这是本库最容易被糊弄过去的一项。
03-缺口与补料.md。正文中任何具体数字、论断、引语后面加脚注引用对应 source 页:
2026 年企业 AI 培训市场规模达 380 亿元。[^白皮书]
万 / 亿 / % / 倍 / 元 / 人 的数字,前后 100 字内必须有出处(脚注、双链、或 来源: 字样)。check-content.py 机器查这一条。[[stem]] — 双链,不带 .md。指向不存在的页面会被 lint 报 DEAD_LINK。check-content.py 机器查)下面几种是 AI 写知识库时的固定病,见到就改:
| 病症 | 例子 | 改法 |
|---|---|---|
| 元叙述 | 「本页介绍了…」「这条主要讲…」「以上就是…」 | 删掉这一句,直接写内容 |
| 空转加强词 | 「值得注意的是」「本质上」「总而言之」「不难发现」 | 直接删,不损失信息 |
| 段尾升华 | 「让我们一起拥抱 AI 时代」「未来可期」 | 删 |
| 万能开头 | 「在当今快速发展的…背景下」「随着…的不断发展」 | 直接说事 |
| 要读者翻译的比喻 | 「这套组合拳」「打通最后一公里」「形成护城河」 | 换成具体动作 |
| 电报体 | 一句话一个句号,句句十来个字,读着像念提纲 | 有因果/转折的相邻短句用「因为/所以/但」连起来 |
句子标准:一句一件事,30 字上下,最长不超过 60 字。超过 60 字的句子 check-content.py 会列出来。
读者是公司里要去做课的同事,不是 AI。所以:
页面被标 stale: true 表示内容可能已过期,读之前先看 stale_reason。
产生 stale 的三种情形:
| 情形 | 触发者 | 处理方式 |
|---|---|---|
| 源文件被删除,但页面还有其他源 | kb.py retract | 用剩余源重新合成,清掉 stale |
| 源文件内容变更 | kb-sync | 重读源,更新页面 |
| 引用的下游页面失效 | kb.py retract 级联 | 人工确认后决定改写还是解除引用 |
处理完必须清 stale: false 并删掉 stale_reason,否则下次 lint 还会报。
10-知识库/ 里放非 md 文件(图片一律引用原文路径)_index.md(kb.py graph 会覆盖)00-原材料/ 里修改或删除已入库的文件而不跑 kb-sync(会让 manifest 与磁盘脱节)sources: 写成文件绝对路径或文件名evidence_meta/矛盾登记.md 并裁决不是所有东西都值得备份,也不是所有东西丢了都能重来。分清这两件事,才知道该保护什么。
| 东西 | 丢了能重建吗 | 怎么重建 |
|---|---|---|
00-原材料/ |
不能 | 这是唯一真相源,没有替代品。靠 git 远端和备份 |
_meta/矛盾登记.md |
不能 | 裁决理由是人的判断,无法还原 |
_meta/changelog.jsonl、CHANGELOG.md |
不能 | 历史就是历史(但 git 历史里还有一份) |
10-知识库/*/ 页面内容 |
勉强能 | 重读源让 LLM 重写,但历次「沉淀」出来的结论会永久丢失 |
_meta/manifest.json |
能 | kb.py repair 从磁盘 + 页面反推(不是 scan,scan 会丢派生关系) |
_meta/derivations.jsonl |
能 | kb.py graph 从页面 frontmatter 重建 |
*/_index.md |
能 | kb.py graph |
_meta/rebuild_queue.jsonl |
能 | 从 stale: true 的页面重新推导 |
一句话:只要 00-原材料/ 还在,知识库永远能重建,只是很贵(几十小时 LLM 工时)。原材料没了,整个系统归零。
备份优先级:原材料 > 矛盾登记 > changelog > 其余。前三个丢了不可逆,后面几个丢了只是费时间。
git 是这一整套的第二层保险:它把每次改动都留了副本,所以「归档」和「回滚」实际上都是可逆的。但 git 只保护被提交过的东西 —— 同步完不提交,等于白做。
每条新规则必须登记:什么时候加的、因为什么事加的、谁改的。 没有起因的规则,三个月后就会被人当成官僚条款删掉,然后同一个坑再踩一次。
| 日期 | 改动 | 起因 |
|---|---|---|
| 2026-11-04 | 初版:四类页面 + frontmatter 契约 + 溯源 + stale | 做课系统搭建 |
| 2026-11-04 | 新增第三节「证据分级」A/B/C/D + 木桶规则 + 做课配比;evidence 列为必填字段 |
参照 HowToLiveBetter 的条目证据分级。原设计只有 sources 没有可信度,做课时无法判断哪句话能直接讲、哪句要加限定语 |
| 2026-11-04 | 新增第五节「反 AI 腔」与句子标准 | 同上,对应其 check-plain.mjs。知识库由 LLM 写,不设文风红线就会积累成"AI 生成的垃圾" |
| 2026-11-04 | 新增第四节「带单位的数字必须有出处」 | 做课翻车都翻在数字上。结构完整的页面里塞一个没有出处的 42%,比缺页更危险 |
| 2026-11-04 | 新增 _meta/矛盾登记.md;约定「两份资料说法不一致时不许静默采用新的」;新增第八节可重建性分级 |
参照 Karpathy llm-wiki 把「new data contradicts old claims」列为头号检查项。做课时最怕两份资料打架而无人知晓,引用哪份全凭运气 |
| 2026-11-04 | kb-query 增加「第 6 步 沉淀」;kb-sync 增加「5.6 回声检查」;kb.py 新增 guide 命令与人读 CHANGELOG.md |
同上。Karpathy 的核心洞察是 wiki 要「复利」:①答过的分析要归档回库,否则每次从零拼;②一个源平均触及 10–15 页,只建 1 页等于漏了回声检查。guide 对应 llmwiki 的自描述入口,省 AI 重建认知的 token |