架构规范

这个 wiki 采用 Karpathy 的 LLM Wiki 三层架构:原始素材(不可变)/ wiki(实体、概念、对比、问答)/ 规范(这份文件)。 架构目标:知识”一次性整理、持续可用”,避免每次查询都从零检索。

适用范围

个人全领域知识积累。 不限主题,覆盖技术、读书、生活、思考、工作、爱好等任何想沉淀的内容。 wiki 本身不分主题子目录——主题通过**标签 + 双链 + MOC(主题索引页)**组织,这样新增任何领域都不需要动结构。

语言与命名规范(严格,强制执行)

语言优先级

  1. 正文: 中文优先。需要引用外文术语时保留英文原文,不强制翻译。
  2. frontmatter 字段值: 中文优先;技术专有名词保留英文(如 DataviewYAML)。
  3. tag 值: 英文小写连字符(见下方”标签分类法”)——便于 Dataview 查询与跨平台兼容。 例:人工智能知识管理工具tag 是唯一允许英文的地方,且必须先在分类法中注册。

文件命名(强制)

类型命名规则示例
一般笔记中文-短描述.md注意力机制.md阅读-思考快与慢.md
实体页实体名.md实体名-类别.mdObsidian.md安德烈-卡尔帕西.md
概念页概念名.md强化学习.md注意力机制.md
对比页对比-a-与-b.md对比-Llama-与-Qwen.md
问答页问答-YYYY-MM-DD-主题.md问答-2026-08-08-LLM-Wiki.md
原始素材简短来源描述.md卡尔帕西-LLM-Wiki-要点.md
MOC 主题索引页主题索引-主题名.md主题索引-人工智能.md

禁止: 大写字母(中文行内文字除外)、空格、特殊符号(除连字符 -)、emoji 文件名。 唯一例外: 日期前缀 YYYY-MM-DD- 用于日记/问答归档。 专有名词: 文件名里允许出现英文术语(如 LLMObsidianDataview),但必须与实际大小写一致,并避免无意义英文缩写。

目录命名(强制,全部中文)

用途目录名
不可变原始素材原始素材/
└─ 网页剪藏原始素材/文章/
└─ 论文/电子书原始素材/论文/
└─ 会议/访谈记录原始素材/记录/
└─ 图片、附件原始素材/附件/
实体页实体/
概念/主题页概念/
对比分析对比/
问答记录问答/
主题索引(MOC)元/
已归档内容归档/

**目录必须用中文,不允许 原始素材/实体/ 这类目录用英文名。 这是 wiki 最高优先级约定之一。

链接

  • 笔记间一律用 Obsidian 双链:[[笔记名]] 或带别名 [[笔记名|显示文本]] (正文里指向真实页面时,笔记名必须用中文,与文件名严格一致
  • 每篇 wiki 笔记至少 2 个出向双链(指向其它 wiki 页),否则视为孤儿
  • 外部链接用标准 markdown [文本](url)

文件位置规则

wiki/
├── 架构规范.md         ← 你正在读的文件
├── 索引.md             ← 全站内容目录,每次新建/移动页面必更新
├── 日志.md             ← 追加日志(按日期),超过 500 条按年份归档
├── 原始素材/           ← 不可变原始素材
│   ├── 文章/
│   ├── 论文/
│   ├── 记录/
│   └── 附件/
├── 实体/               ← 实体页(人、公司、产品、工具等)
├── 概念/               ← 概念/主题页
├── 对比/               ← 对比分析
├── 问答/               ← 值得保存的问答
├── 元/                 ← 主题地图(MOC)、元数据
└── 归档/               ← 已归档内容

wiki 页(实体/概念/对比/问答) 全部平铺、不分子目录。 理由:wiki 规模上千后子目录会变成迷宫;用 MOC 替代分层导航。

Frontmatter 规范

每个 wiki 页必须有如下 frontmatter:

---
title: 页面标题
created: YYYY-MM-DD
updated: YYYY-MM-DD
type: 实体 | 概念 | 对比 | 问答 | 总结 | 规范 | 索引 | 日志
tags: [标签a, 标签b]
sources: [原始素材/文章/来源名.md]
# 可选质量信号:
confidence: 高 | 中 | 低
contested: true              # 有未解决矛盾时
contradictions: [其他页slug] # 与本页冲突的页
---

原始素材/ 下文件额外带:

---
source_url: https://...   # 原始 URL(如适用)
ingested: YYYY-MM-DD
sha256: <hex digest>      # 正文部分的哈希,用于检测来源漂移
---

标签分类法(Taxonomy)

新标签必须先加到这里,再使用。 防止标签膨胀。

知识主题

  • 技术 / 人工智能 / 编程 / 工程 / 产品 / 设计
  • 读书 / 写作 / 语言 / 历史 / 哲学 / 心理学 / 经济学
  • 生活 / 健康 / 旅行 / 美食 / 运动
  • 艺术 / 音乐 / 电影 / 摄影

内容形式

  • 概念 / 实体 / 对比 / 问答 / 书摘 / 课程笔记 / 论文笔记

元标记

  • meta / 待整理 / 未完成 / 已归档 / 有争议 / 高置信
  • TODO / 灵感 / 行动项

每条 tag 应只属于一个类别,避免重复归类。

页面创建门槛

  • 新建实体/概念页: 该对象在 2+ 处原始素材中出现 OR 在单条素材中处于核心地位
  • 追加到现有页: 来源提及已有页面覆盖的对象
  • 不新建: 仅被一笔带过、与领域无关、或已经在更低粒度的页面里覆盖
  • 拆分: 页面超过 ~200 行时,拆为子主题页并用双链交叉引用
  • 归档: 内容被完全取代时 → 移入 归档/,从索引移除

更新策略

当新信息与现存内容冲突:

  1. 比较日期——新源一般取代旧源
  2. 真矛盾时,同时保留两方观点并标注日期和来源
  3. 在 frontmatter 标记 contested: truecontradictions: [其他页]
  4. 在 lint 报告中提示用户复核

与 Obsidian 协作

  • Obsidian 直接打开 /Users/zk/Desktop/知识库/wiki/ 即可
  • 附件目录设置:原始素材/附件/(Obsidian Settings → Files & Links → Attachment folder)
  • 推荐安装插件:Dataview(基于 frontmatter 查询)、Templater(模板)、Graph Analysis
  • 双链、[[wikilinks]]、YAML、Dataview 都原生兼容

Lint 清单

每次 lint 检查:

  1. 孤儿页(无入向双链)
  2. 断链([[wikilink]] 指向不存在的页面)
  3. 索引.md 与实际文件不一致
  4. frontmatter 缺字段 / 标签不在分类法
  5. 90 天以上未更新且有更新来源
  6. contested: trueconfidence: 低 的页面
  7. 原始素材/ 文件 sha256 漂移
  8. 超过 200 行的页面
  9. 日志.md 行数(超过 500 触发归档)
  10. 目录/文件名不符合中文优先 + 命名规范

Pitfalls(不要踩的坑)

  • 永远不修改 原始素材/——原始素材不可变;纠错放在 wiki 页里
  • 每次会话先读 架构规范 + 索引 + 日志 最近 20 行——避免重复造页
  • 新建/移动页面必须同步更新 索引.md 和 日志.md——这是导航的命脉
  • 别给一笔带过的东西建页——会变成垃圾场
  • 孤立页面不可见——至少 2 个出向双链
  • frontmatter 必填——查询、过滤、陈旧检测全靠它
  • tag 先加分类法再用——自由标签必然崩溃
  • 页面控制在 30 秒可读完——超长拆页
  • 超过 10 个现有页面会被同次 ingest 触动时,先和用户确认范围