CLAUDE.md — selfwiki Vault 规约

任何在这个 vault 上操作的 AI agent(Claude Code、Codex、Gemini、MCP 客户端)必须先读这个文件。它定义了结构、惯例和操作流程。不要随意改动——整条流水线都依赖这些规则稳定。


1. Vault 目的

为 Van(vanmiku)打造一个 持久、复利的知识工件——一个英国的中文 AI / 抖音 KOL + 产品构建者。vault 的结构让 LLM 可以逐步阅读、总结、链接和综合,不依赖 RAG。

架构灵感:Andrej Karpathy 的 LLM Wiki 模式、Nick Milo 的 LYT/ACE、Tiago Forte 的 PARA/CODE、Lex Fridman 的个人交互式 harness。


2. 三层架构(Karpathy)

┌─────────────────────────────────────────────────────────────┐
│  第一层 — 原始素材(不可变、人工筛选)                       │
│    /Volumes/GAMES/mediadownload/<platform>/                  │
│    视频、图片、info.json、srt——永远不编辑                    │
└─────────────────────────────────────────────────────────────┘
                              ↓ ingest
┌─────────────────────────────────────────────────────────────┐
│  第二层 — WIKI(LLM 拥有,你阅读)                           │
│    00-Inbox/_processed/    候选笔记(自动写入)              │
│    10-Projects/            活跃项目                          │
│    20-Areas/               长期关注领域                      │
│    30-Resources/notes/     概念页(原子、常青)              │
│    30-Resources/MOCs/      Map of Content                    │
│    30-Resources/atlas/     Nick Milo 常青知识                │
│    40-Archive/             冷藏                              │
│    50-Digests/             日报 / 周报 / 月报                │
│    60-Toolbox/             自动安装的 CLI 工具                │
└─────────────────────────────────────────────────────────────┘
                              ↓ 治理
┌─────────────────────────────────────────────────────────────┐
│  第三层 — SCHEMA(你和 LLM 共同遵守)                        │
│    CLAUDE.md(本文件)                                       │
│    index.md      内容目录                                    │
│    log.md        append-only 事件日志                        │
│    _meta/skills/ AI 可调用工作流                             │
│    _meta/templates/ 各类型笔记模板                           │
└─────────────────────────────────────────────────────────────┘

铁律:AI 永远不改第一层。AI 拥有第二层(按下面规则写/改笔记)。两层都遵守第三层。


3. 笔记类型

vault 里每一个 markdown 文件都在 frontmatter 里有一个 type:。合法的 8 种类型:

type在哪是什么生命周期
article00-Inbox/_processed/ 或 30-Resources/抓取的外部内容(视频、帖子、博客)Inbox → 复盘 → 路由或归档
tutorial同上how-to / 教程同上
tool同上软件 / 库 / 服务同上
news同上时效性新闻7 天自动归档
inspiration30-Resources/notes/闪念 / 引语进化成概念页或归档
research30-Resources/notes/学术 / 报告永久
concept30-Resources/notes/原子常青概念(Zettelkasten)永久,会进化
moc30-Resources/MOCs/某个主题的 Map of Content永久,持续生长

另外有 3 种元类型,在 _meta/ 或系统位置:

  • transcript —— 视频完整转写(被某篇笔记链接)
  • digest —— reviewer 生成的日报/周报/月报
  • log —— append-only 事件日志条目

4. 必备 frontmatter

每篇笔记最少要带:

---
type: <article|tutorial|tool|news|inspiration|research|concept|moc>
status: <unread|learning|learned|skipped|archived|evergreen>
created: <ISO 8601 时间戳>
updated: <ISO 8601 时间戳>     # AI 改的时候自动更新
source: <URL 或 "(none)" 或 "synthesis">
platform: <youtube|douyin|tiktok|rednote|bilibili|x|wechat|web|synthesis>
tags: [<小写-kebab-case>, ...]  # 最多 6 个,倾向用受控词表
language: <zh|en|mixed>
---

从自动管线进来的笔记额外带:

priority: <high|medium|low>
suggested_route: <PARA 路径>      # AI 建议,人来 move
captured_at: <ISO 时间戳>
learned_at: <ISO 或 null>
your_notes: ""                    # 人加的二次笔记
media_path: <GAMES 上的绝对路径>
transcript_source: <subtitle|whisper|none>

概念页(type: concept)额外要:

status: evergreen                 # 永远不是 "unread"
aliases: [<别名>, ...]
related: [[other-concept]], [[another]]
sources: [[<inbox-note>]], [[<inbox-note>]]   # 喂养这个概念的文献笔记

5. Wiki 链接惯例

  • 概念[[concept-name]](kebab-case 小写,ASCII 或中文皆可)
  • 别名[[concept-name|显示文本]]
  • MOC 链接[[MOC-主题名]]
  • 附件![[filename.jpg]]
  • 日期引用[[2026-05-28]](Templater 配好后自动建日记)

什么时候要 wiki 链

  • 任何提到已有概念页的地方 → 链
  • 任何人/工具/公司在 vault 里出现 3 次以上 → 给它建概念页,然后链
  • 跨平台 / 跨主题的连接 → 双向都链(如果 Dataview 不够,body 里显式 wikilink 回另一篇)

6. 四大核心操作

6.1 INGEST(基本全自动)

触发/Volumes/GAMES/mediadownload/<platform>/ 下出现新文件。

流水线_meta/scripts/processor.py):

  1. 识别平台 + manifest 条目
  2. 转写(faster-whisper large-v3-turbo,CT2 INT8)
  3. 总结:一次 claude -p 调用 → JSON 含 title/summary/key_points/tags/type/suggested_route/install_commands
  4. 候选笔记写到 00-Inbox/_processed/<日期>/<slug>.md
  5. 复制附件(transcript.md、thumb.jpg、caption.md、images)
  6. Compile(Karpathy 步骤):再调一次 claude 做:
    • 识别 3-7 个实体/概念
    • 每个:如果 30-Resources/notes/ 已有概念页,append “Sources” 反链 + 一行 takeaway;没有的,进队列待人审
    • log.md 加一条 event
    • 建议 0-3 个 MOC 归属,标到 frontmatter 的 suggested_mocs:

人的角色:定期看 _processed/ 的候选,改 status: learned,move 到 PARA 目的地。

6.2 QUERY(vault 作为 oracle)

三种模式:

A 模式 — Smart Connections(Obsidian 内嵌 RAG):用于”找相似笔记”或快速语义搜索。

B 模式 — Claude Code + MCP(Karpathy 标准):用于综合性问题。

cd /Users/vanmiku/Documents/selfwiki && claude
> 读 30-Resources/notes/agent-orchestration.md 和它所有的 [[sources]]。
> 综合最新关于多 agent 任务委派的思考。
> 如果还没有,把综合结果落成新概念页。

C 模式 — 复利问答(Karpathy 杀手锏):当问答产生了新洞察,把答案落档成新笔记30-Resources/notes/。下次同样的问题,答案就在 wiki 一次 lookup 内,不用重新综合。问题本身 append 到 log.md,让 vault 记得被问过什么。

6.3 LINT(每周健康检查)

_meta/scripts/linter.py,每周一上午 9 点跑。检查:

  1. 孤儿笔记 —— type: concept 且 0 入度(可能被遗弃)
  2. 路由超时 —— _processed/ 里超过 7 天还是 unread(决策逾期)
  3. Frontmatter 完整性 —— 必备字段缺失或值不合法
  4. 过时声明 —— 概念页提到具体版本号,交叉对比最新
  5. Tag 漂移 —— 全 vault 用 1-2 次的 tag(合并候选)
  6. 矛盾 —— 概念页的 summary 跟更新的文献笔记打架

输出 → 50-Digests/lint/YYYY-Wxx.md。机械问题 AI 自动修,语义问题人来定。

6.4 DISTILL(Tiago Forte CODE,手动触发)

当你把某个主题 学完了 想晶化:

> /distill 20-Areas/产品与工程/agent-orchestration

AI 读该主题下所有 tag 笔记,产出:

  • 30-Resources/notes/ 下一篇更新过的概念页
  • 30-Resources/MOCs/ 下一次 MOC 更新
  • 可选 “Express” 输出(LinkedIn 帖子、博客草稿、Twitter 长串)到 40-Archive/express/

7. PARA + Atlas 混合(Nick Milo + Tiago Forte)

10-Projects/          PARA:有截止时间的事
20-Areas/             PARA:长期承担的角色
30-Resources/
  ├── notes/          原子常青概念(Zettelkasten)
  ├── MOCs/           各主题 Map of Content
  └── atlas/          Nick Milo 的 Atlas——耐久常青知识
40-Archive/           PARA:完成或失效

东西去哪

  • 有截止 → 10-Projects/<project-name>/
  • 你扮演的长期角色(如 “投资”、“写作”)→ 20-Areas/<area>/
  • 独立想法 / 概念(不绑定某项目)→ 30-Resources/notes/<concept-slug>.md
  • 主题索引 → 30-Resources/MOCs/MOC-<topic>.md
  • 高信念耐久知识(不依附任何源)→ 30-Resources/atlas/<atom>.md
  • 完成 / 死亡 → 40-Archive/<原文件夹>/

8. 原子笔记纪律(Zettelkasten)

概念页(type: concept)遵循:

  1. 一条笔记一个想法 —— 如果一篇有两个独立想法,拆
  2. 标题就是主张 —— “RAG 对个人知识库不必要” 而不是 “RAG 思考”
  3. 自洽 —— 不打开其他笔记也能看懂(必要时简要复述上下文)
  4. 引用来源 —— 每个论点链到 inbox 文献笔记或外部源
  5. 保持连接 —— 创建时至少 2 个出度链
  6. 加别名 —— aliases: 列同义词,链才能路由准

9. log.md 事件格式

Append-only,机器可解析。Linter 用它检测活动间隙,C 模式查询用它找问过什么。

## [YYYY-MM-DD HH:MM] <event-type> | <一行描述>
 
<可选详情,缩进或 fenced 块>

合法 <event-type>

  • ingest —— 新笔记从原始素材生成
  • compile —— wiki 更新(实体提取、反链加上)
  • query —— 用户问了 vault 一个问题
  • distill —— 概念页合并
  • archive —— 笔记 move 到 40-Archive
  • lint —— 跑了周度检查
  • decision —— 人的决策记录(如 “弃用 tag X”)

例子:

## [2026-05-28 12:30] ingest | youtube_xxx — 用 LLM Wiki 绕开 RAG
 
创建: 00-Inbox/_processed/2026-05-28/youtube_xxx.md
Compile 链接了 3 个概念: [[llm-wiki]], [[markdown-knowledge-base]], [[karpathy-thoughts]]
建议 MOC: [[MOC: AI-knowledge-management]]

10. AI 护栏(你这个 LLM 必须做和不能做的)

必须

  • 进入 vault 时先读 CLAUDE.md(你正在读)
  • 写笔记时严格遵循 frontmatter 惯例
  • 大量使用 wiki 链(概念、人物、工具、项目)
  • 每次改 wiki 都 append log.md
  • 一字不改保留 your_notes: 字段——那是人类的声音
  • 中文内容引用为中文,英文为英文,没人让你翻译就别翻译
  • 每条主张都引用来源([[<inbox-note>]] 或 URL)

不能

  • 改第一层(/Volumes/GAMES/mediadownload/
  • 删除文件(move 到 40-Archive/
  • your_notes: 内容
  • 改其他笔记的 learned_at: 时间戳
  • 没经用户明确允许动 _meta/scripts/
  • 跑改全局状态的 shell 命令(brew installlaunchctl unload 等)—— 那归 installer.py
  • 绕开 schema——如果某条笔记不符合任何已定义的 type,问人

应当

  • 优先建新原子概念,而不是把已有笔记扩到超出”一个想法”
  • 当概念页超过 800 字,提议拆分
  • 当两个概念页明显重叠,提议合并
  • 当 tag 累计超过 50 个唯一值,提议合并
  • 批量推 log.md 编辑,不要一次微改一次推

11. 身份与用户上下文

  • 姓名:Van(vanmiku)
  • 邮箱vanmiku@outlook.com
  • 位置:英国(时区 BST/GMT)
  • 角色:AI 抖音 KOL(约 11 万粉)、产品构建者、直播运营者
  • 语言:中文(主要)、英文(工作流畅)
  • 现金跑道:约 6 个月——项目必须轻量,不能 all-in
  • 关心的项目10-Projects/):trading-research、观察者(小说)、subwave、video-automation
  • 长期关注领域20-Areas/):投资与交易、写作与叙事、产品与工程、移民

12. 工具链(别重复造轮子)

  • Vault 同步:自托管 LiveSync(已在跑)
  • Ingest 管线@vanswbot Telegram → _meta/scripts/pkm_bot.pyprocessor.py → vault
  • 转写:faster-whisper large-v3-turbo(1.5GB CT2 模型)
  • 总结 / compileclaude -p --model claude-sonnet-4-6
  • LaunchAgent:pkm-bot(KeepAlive)、pkm-processor(60s)、pkm-installer(5m)、pkm-reviewer(每日 8am)、pkm-linter(周一 9am)
  • 记忆系统:Nowledge Mem(nmem CLI)—— 长期跨会话记忆;引用时带上 ID
  • 已启用 Obsidian 插件:Dataview、DataCards、Smart Connections、QuickAdd、InsightA、Obsidian MCP

13. 演化规则

这份 schema 应该在 git 里版本控制(当 vault 起了 git 之后)。任何对 CLAUDE.md 的改动必须:

  1. 先跟人讨论
  2. 包含已有笔记的迁移方案
  3. log.mddecision event 说明为什么

schema 是地基。要敬畏。


最后更新:2026-05-28,Claude 初稿