跳转至

知识库改造 — 借鉴卡帕西的四层漏斗

1. 背景 / 动机

来源../raw/conversations/2026-05-26-knowledge-base-inspired-by-karpathy|2026-05-26-知识库结构借鉴卡帕西

用户原话

借鉴卡帕西的知识结构,构建 wiki 和 raw...希望实现: 1. 能不断迭代改进... 2. 新功能 需求,raw/wiki 怎么记录,数据结构 / API 接口,多人协作... 3. 同步 github,备份不同步 4. 所有文档有索引、title、元描述、标签

为什么要做: - 现有 docs/{wiki, rules, issues}/ 三层缺一个"低门槛入口"(raw) - 新功能/需求没有标准的 PRD 模板,多人协作时后端不知道做什么 - 文档没 frontmatter,obsidian 索引 / AI 检索受限 - 没有 .gitignore,无法选择性 push github(备份会被带上)

2. 目标 / 非目标

目标

  • docs/raw/ + docs/specs/ 两层
  • 所有 docs/ 下 md 加 YAML frontmatter
  • 写 .gitignore 隔离 backup/ 与构建产物
  • 写示例 raw + spec 让用户/AI 模仿
  • 更新 CLAUDE.md / docs/README.md 入口

非目标

  • 不迁移现有 wiki 内容到子目录(保持扁平)
  • 不强制 github push(仅准备好,由用户手动)
  • 不引入 obsidian 自动化插件(dataview / templater)

3. 用户故事

作为项目维护者,
我希望任何用户/AI 提出的需求都能先粘贴到 raw 不丢失,
评估后顺势写成 spec 给团队执行,实现完沉淀到 wiki,
以便单人迭代 + 多人协作都顺畅。

作为后端开发者(未来),
我希望打开 docs/specs/active/SPEC-xxx.md 就能看到数据模型 + API + 任务拆分,
不需要追溯多个聊天历史。

作为 AI 助手,
我希望每个文档有 frontmatter,让我按 tags / status 检索,
准确学习项目的当前架构。

4. 数据模型

不涉及代码 schema,只涉及文档 schema。

Frontmatter 标准

---
title: <标题>
description: <30字内描述>
tags: [tag1, tag2]
created: YYYY-MM-DD
updated: YYYY-MM-DD
status: draft / stable / deprecated / archived
type: wiki / rule / issue / spec / raw / index
related:
---

文件命名

类型 格式
wiki 中文标题.md
rule 中文标题.md(元规则加 00- 前缀)
issue <4位编号>-<中文标题>.md
spec SPEC-<3位编号>-<中文标题>.md
raw YYYY-MM-DD-<简短中文>.md

5. API 接口

不涉及 API(纯文档改造)。

6. UI 设计

不涉及 UI(纯文档改造)。

最终目录:

docs/
├── README.md                    体系导航
├── raw/                         🆕 原始素材
│   ├── INDEX.md
│   ├── _template.md
│   ├── inbox/      ← 待处理
│   ├── feedback/   ← 用户反馈
│   ├── conversations/  ← 重要对话
│   └── ideas/      ← 未评估想法
├── specs/                       🆕 功能规格
│   ├── INDEX.md
│   ├── _template.md
│   ├── active/     ← 进行中
│   ├── done/       ← 已完成
│   └── parked/     ← 暂缓
├── wiki/           ← 已有(补 frontmatter)
├── rules/          ← 已有(补 frontmatter)
└── issues/         ← 已有(补 frontmatter)

7. 任务拆分

骨架

  • 创建 docs/raw/{inbox,feedback,conversations,ideas}/
  • 创建 docs/specs/{active,done,parked}/
  • raw/_template.md + raw/INDEX.md
  • specs/_template.md + specs/INDEX.md

配置

  • .gitignore(排除 backup/ / dist*/ / node_modules / .obsidian 工作区配置)
  • 改写根 README.md(替换 WXT 模板默认内容)

示例

  • raw/conversations/2026-05-26-knowledge-base-inspired-by-karpathy.md(本 spec 来源)
  • raw/feedback/2026-05-26-status-chip-misalign.md(关联到 ISSUE-0021)
  • specs/done/SPEC-001-knowledge-base-refactor.md(本文件)

Frontmatter 补全(22 个现有 md)

  • 写 Python 脚本扫描 docs/**/*.md,注入或更新 YAML frontmatter

入口更新

  • 更新 CLAUDE.md 加 6 步阅读顺序(含 raw/specs)
  • 更新 docs/README.md 包含四层模型说明

规则

  • docs/rules/github-push.md —— 用户首次需要 push 时按此规则
  • 更新 docs/rules/00-meta-rule.md 加新触发场景(用户讲新需求 → raw/inbox/)

8. 风险 / 注意点

  • ⚠️ 现有文档头部「伪 frontmatter」 形式不统一(有用 > **类型**:xxx 块引用),脚本要兼容
  • ⚠️ obsidian 的 [[wikilink]] 在 github 渲染器不显示:我们用相对路径 [文本](./path.md) 作为主链接,frontmatter 里 related: [[wikilink]] 仅给 obsidian/AI 用
  • ⚠️ frontmatter 写错会导致 obsidian/dataview 异常:必须 YAML 合法(缩进 / 引号 / 冒号)

9. 验证标准

  • find docs -name "*.md" 所有文件首行是 ---
  • pnpm build 通过(确认没破坏代码)
  • obsidian 打开 docs/ 能看到 tags / dataview(用户验证)
  • CLAUDE.md 包含 raw / specs 入口
  • .gitignore 包含 backup/ + dist*/

10. 决策记录

  • 2026-05-26:选 4 层(raw / specs / wiki / issues + rules)而不是 2 层(raw + wiki)—— 因为本项目有真实多人协作场景(后端独立),需要 specs 作为契约
  • 2026-05-26:spec 命名用 SPEC-001-中文标题.md(保留全局序号 + 直观)
  • 2026-05-26:现有 docs 文件不重新归类到子目录,保持扁平 + 仅加 frontmatter —— 重新归类会破坏现有相对路径链接,收益小
  • 2026-05-26:github push 本次不做,仅准备 .gitignore + 写 push 指南到 docs/rules/github-push.md,未来由用户手动触发