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 | 在哪 | 是什么 | 生命周期 |
|---|---|---|---|
article | 00-Inbox/_processed/ 或 30-Resources/ | 抓取的外部内容(视频、帖子、博客) | Inbox → 复盘 → 路由或归档 |
tutorial | 同上 | how-to / 教程 | 同上 |
tool | 同上 | 软件 / 库 / 服务 | 同上 |
news | 同上 | 时效性新闻 | 7 天自动归档 |
inspiration | 30-Resources/notes/ | 闪念 / 引语 | 进化成概念页或归档 |
research | 30-Resources/notes/ | 学术 / 报告 | 永久 |
concept | 30-Resources/notes/ | 原子常青概念(Zettelkasten) | 永久,会进化 |
moc | 30-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):
- 识别平台 + manifest 条目
- 转写(faster-whisper large-v3-turbo,CT2 INT8)
- 总结:一次
claude -p调用 → JSON 含 title/summary/key_points/tags/type/suggested_route/install_commands - 候选笔记写到
00-Inbox/_processed/<日期>/<slug>.md - 复制附件(transcript.md、thumb.jpg、caption.md、images)
- 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 点跑。检查:
- 孤儿笔记 ——
type: concept且 0 入度(可能被遗弃) - 路由超时 ——
_processed/里超过 7 天还是unread(决策逾期) - Frontmatter 完整性 —— 必备字段缺失或值不合法
- 过时声明 —— 概念页提到具体版本号,交叉对比最新
- Tag 漂移 —— 全 vault 用 1-2 次的 tag(合并候选)
- 矛盾 —— 概念页的 summary 跟更新的文献笔记打架
输出 → 50-Digests/lint/YYYY-Wxx.md。机械问题 AI 自动修,语义问题人来定。
6.4 DISTILL(Tiago Forte CODE,手动触发)
当你把某个主题 学完了 想晶化:
> /distill 20-Areas/产品与工程/agent-orchestrationAI 读该主题下所有 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)遵循:
- 一条笔记一个想法 —— 如果一篇有两个独立想法,拆
- 标题就是主张 —— “RAG 对个人知识库不必要” 而不是 “RAG 思考”
- 自洽 —— 不打开其他笔记也能看懂(必要时简要复述上下文)
- 引用来源 —— 每个论点链到 inbox 文献笔记或外部源
- 保持连接 —— 创建时至少 2 个出度链
- 加别名 ——
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-Archivelint—— 跑了周度检查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 install、launchctl 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 管线:
@vanswbotTelegram →_meta/scripts/pkm_bot.py→processor.py→ vault - 转写:faster-whisper
large-v3-turbo(1.5GB CT2 模型) - 总结 / compile:
claude -p --model claude-sonnet-4-6 - LaunchAgent:pkm-bot(KeepAlive)、pkm-processor(60s)、pkm-installer(5m)、pkm-reviewer(每日 8am)、pkm-linter(周一 9am)
- 记忆系统:Nowledge Mem(
nmemCLI)—— 长期跨会话记忆;引用时带上 ID - 已启用 Obsidian 插件:Dataview、DataCards、Smart Connections、QuickAdd、InsightA、Obsidian MCP
13. 演化规则
这份 schema 应该在 git 里版本控制(当 vault 起了 git 之后)。任何对 CLAUDE.md 的改动必须:
- 先跟人讨论
- 包含已有笔记的迁移方案
- 在
log.md加decisionevent 说明为什么
schema 是地基。要敬畏。
最后更新:2026-05-28,Claude 初稿