新增、移动、重命名、拆分或删除 Markdown 时,在同一修改中:
- 更新当前目录
_index.md。 - 创建或删除子目录时,更新上一层
_index.md。 - 新增、删除或重命名
general/一级主题时,同步general/_index.md和knowledge/CLAUDE.md的知识地图(这棵树里已经没有README.md)。 - 修复所有相对链接和 anchor。
- 移动错题时保持“编号”不变,只更新归属、路径和索引。
- 删除被新页面替代的重复正文,不留兼容副本。
- 确认本次改动没有带入机器信息、凭据、用户绝对路径或临时产物。
- 改到
repos/vllm-omni/时,再对照下面的发版审计: owner 入口页、SHA pin 和sources:由机器审计对账,不在两个校验器的范围里。
python knowledge/tools/check_knowledge_tree.py
python knowledge/tools/check_wiki_lint.py两个脚本都区分错误和提醒:只有错误让退出码非 0,提醒(接近拆分线、孤页、
超过 365 天未更新、confidence: low)需要人判断,不是必须清零的门。当前这棵树本身
就带着 2 条接近拆分线的提醒。
如果修改准备提交,还要查当前完整 diff 和未跟踪文件,不只看 HEAD。以真实 target base 为准,不硬编码 remote 或默认分支。
tools/check_knowledge_tree.py 负责容易明确判断的事:
- 正式知识目录有
_index.md; - 当前有效页面在最近索引中恰好有一个真实 Markdown 链接;
- 子目录的
_index.md在上一层索引中恰好有一个真实 Markdown 链接 (models/_index.md声明<!-- children: filesystem -->时豁免); - 相对链接指向存在的文件,且不是绝对路径;
- 文件和目录大小没超过 拆分阈值;
- 错题文件名、字段、状态、编号和索引完整;
components/、models/直属仓库,没有被工作主题或另一个 owner 包住;- 源码 owner 下没有
guides/中转层; - 没有两个 owner 各存一份逐字节相同的整页正文(≥200 字符时比较);
doc/knowledge/CONTRIBUTING.md仍在 100 个非空行 / 8 KiB 以内;local/没有被 Git 跟踪;- 正式页面没有真实 IPv4(
127.除外)、C:\Users\…、远端用户 home、私钥块, 也没有StrictHostKeyChecking=no、全局safe.directory *、--gpus all、pkill、rm -rf、find … -exec rm。
tools/check_wiki_lint.py 额外负责:
- 沉淀层 frontmatter、类型和标签符合
SCHEMA.md(repos/jianghan-roleplay-data-pipeline/整棵子树豁免); - adapter
manifest.yaml的knowledge:只使用允许字段(source、repo_subdir、briefing_docs、briefing_docs_extra、performance_briefing_docs、review_checklist),briefing 和 checklist 不能指向incidents/history/results原始证据层,review_checklist指向的页面必须真实存在; - 提醒级:没有任何入链的孤页、超过 365 天没更新的页面、
confidence: low或contested的页面。
repos/vllm-omni/ 这一片除了两个校验器,还被 tools/audit_vllm_omni_release.py
按 adapters/vllm_omni/release_baseline.yaml 对账。它不是 lint:改错了本地两个脚本
照样 0 错误,失败发生在 CI 的 vLLM-Omni release drift audit 里。
- owner 入口页(
owner_documents):baseline 为每个上游结构 owner 声明一个知识 入口,例如scheduler → knowledge/repos/vllm-omni/components/scheduler/rules.md。 重命名、移动或删除这些页面时必须在同一改动里同步 baseline。 - SHA pin(
pin_documents):8 个文件的正文里带main @ <短 SHA>或v0.26.0rc1 @ <短 SHA>形式的标记,必须与 baseline 的audited_sha一致 ——doc/architecture/KNOWLEDGE.md、models/catalog.md,以及 configuration、diffusion、 distributed、model-executor、scheduler、serving 六个 component 的_index.md。 人工不要手改这些 pin,它们随发版由imupdate更新。 sources:溯源:frontmatter 里以vllm_omni/、tests/、benchmarks/、docs/、.buildkite/开头的sources:条目会与上游文件列表对账;上游删除或重命名 该路径后报stale_knowledge_source(重命名时报告会给出新路径)。incidents/、history/、results/、_archive不参与这项检查。
触发方式:每周一对 upstream main 跑 report-only;任何改到
knowledge/repos/vllm-omni/**、baseline、adapter manifest、imupdate skill 或审计脚本
的 PR,都会用 previous_audited_sha → audited_sha 跑 enforce。命令、模式和更新一个
release 的步骤见发版漂移审计。
- 两篇文章是不是重复;
- 错题最终属于哪个 owner;
- 大文件应该按哪些主题拆;
- 仓库专属页是否复制了太多通用内容;
- 规则是否真的会改变下次行为。
工具不会生成目录、自动移动页面、静默决定 owner,或只因行数到线就机械切文件。
- 新的跨仓库经验只写
general/。 - 新的仓库、代码模块和模型知识只写
repos/。 - 稳定教训先写最近 owner 的规则,复杂事故证据才可选写错题。
- 当前机器事实只写 ignored
local/。 - 不建兼容副本或第二套写入路径;历史位置通过 Git history 查询。
- 不熟悉框架的人只看根入口和
_index.md就能找到需要的一篇规范。 - 日常落盘不再需要读整本贡献手册。
doc/knowledge/CONTRIBUTING.md不超过 100 个非空行或 8 KiB(校验器跨树检查这一条)。- 工作主题和代码模块并列,不形成
dev/frontend/backend这类套娃。 - 复盘已经更新最近 owner 的可执行规则,确实需要的错题只有一份正文。
- 超过阈值的文件和目录已按主题整理,或有明确的不拆原因和复核日期。
- 每个当前有效页面可从最近索引找到,所有链接有效。
- 第三方只需建目录、写 Markdown、更新上层索引并运行检查,不需要额外配置系统。
local/没有被 Git 跟踪,knowledge/CLAUDE.md和doc/knowledge/CONTRIBUTING.md仍然是短入口。