English | 简体中文
A pure-Markdown, tool-agnostic, AI-friendly knowledge management system for programmers. It combines PARA (action-oriented categories) + Zettelkasten (atomic notes) + MOC (maps of content) + Johnny.Decimal (numbered locations) + Karpathy-style layering (raw vs. finished material). This file is the single source of rules for the system: both humans and AI follow it.
Note: note filenames inside this vault are Chinese; this English version is a courtesy translation, the Chinese file remains the authoritative text.
0-Note\
├── 00-MOC\ Index layer. One "map" per topic; the entry point for notes (links only, no content)
├── 10-Projects\ Project layer. Goal-and-deadline learning (e.g. "finish Hot100 in 14 days")
├── 20-Areas\ Area layer. Long-term maintained knowledge fields (01-Algorithms / 02-Languages / 03-DevTools / 04-Systems / 05-Networking / 06-Web / 07-ForeignLanguages)
├── 30-Resources\ Resource layer. Collected material/tools/scripts/images, not yet distilled
├── 40-Archive\ Archive layer. Finished projects, outdated knowledge (append-only)
├── 90-Templates\ Template layer. Unified note skeletons (algorithm / project / system / language)
└── README.md This file (the constitution)
Companion directory outside the repo (binary material, not in git):
F:\0-Note-Data\- Anki decks, xlsx/csv, processing scripts and other raw material, mirroring subfolder names such as English / Español
The numeric prefixes carry two meanings: (1) smaller numbers sit closer to the repo core and move more often; (2) each layer is a lifecycle stage. The same topic moves between layers as its lifecycle position changes. Examples below are real files from this vault:
| Directory | Meaning | What goes in | Real example in this vault |
|---|---|---|---|
| 00-MOC | Index layer · one map per topic | Links and routes only; content lives in 20-Areas | A line in 00-MOC/算法.md like - [[冒泡算法]] — ... is the entry to a note |
| 10-Projects | Project layer · goal+deadline learning | Project folders (goal, deadline, task list) | Currently empty; planned e.g. 10-Projects/Hot100-2026Q4\ |
| 20-Areas | Area layer · long-term fields | The finished notes themselves (the only home for note bodies) | 20-Areas/01-算法/冒泡算法.md (a full note) |
| 30-Resources | Resource layer · raw material staging | Unrefined material, images, script tools | 30-Resources/image/, 30-Resources/tools/ |
| 40-Archive | Archive layer · retired | Finished projects, outdated knowledge (append-only) | Currently empty; e.g. a finished 10-Projects\ folder moves here wholesale |
| 90-Templates | Template layer · skeletons | Templates copied when writing new notes (never edited) | 90-Templates/20-笔记正文模板.md |
One-line mnemonic: 00 points the way -> 10 starts a project -> 20 hosts the notes -> 30 stages raw material -> 40 seals the past -> 90 provides the format.
Why is 30 after 20? 30-Resources is "not yet distilled material", 20-Areas is "distilled output" - material flows from the edge (30) toward the core (20), matching the PARA direction.
Information has a lifecycle; it must flow, storing without moving is forbidden:
- New material goes to
30-Resourcesfirst, never straight into Areas - To learn something systematically -> create a project folder in
10-Projects(goal + deadline + task list) - Project folder naming = time-granularity first +
!prefix for pinned daily items; granularity encodes difficulty: months for beginner topics, quarters for foundations/deployment, years for advanced internals. The exact learning order inside a group lives in the 00-MOC "learning route" index - Distilled knowledge -> written into
20-Areas; finished projects move wholesale into40-Archive - Quarterly review: anything in Resources untouched for 3+ months gets either distilled into Areas or deleted
- One note, one topic (atomicity)
- Rewrite in your own words - copy-pasted material is collecting, not learning
- Code is fine, but must come with "why it is written this way" comments
- Notes interlink via
[[wiki-links]](clickable in Obsidian, harmless plain text in VS Code)
- Find things via MOC maps, not by digging into folders
- One MOC per topic (e.g.
00-MOC\算法.md): lists all notes of the topic + recommended order + gaps to fill - After writing a note, add its line to the matching MOC
YAML frontmatter at the top of every note, at most 8 fields: type (algorithm | project | system | language | tutorial), tags, status (todo | learning | done | review), date, difficulty (1-5, algorithm notes), source, related ("[[note]]"), optional review (next review date).
- This vault (0-Note) stores finished text only: md notes
- Binary material (Anki/xlsx/large images/scripts/docx/pdf) lives outside the repo in
0-Note-Data\or in30-Resources\subfolders (image\,tools\,English\/Español\) - Knowledge is "compiled" once: raw material -> distill -> finished Areas note; afterwards keep updating the output instead of re-reading raw material
Copy the matching skeleton from 90-Templates\ (currently one shared body template serves all four scenarios; the essential sections differ):
| Scenario | Skeleton | Essential sections |
|---|---|---|
| An algorithm problem | 20-笔记正文模板.md |
problem -> intuition & trial -> core idea -> code -> complexity -> similar problems -> review log |
| An open-source / own project | 20-笔记正文模板.md |
what it solves -> architecture -> run it -> core mechanism -> decisions & trade-offs -> what I can reuse -> retrospective |
| A system / middleware | 20-笔记正文模板.md |
one-sentence essence -> what it solves -> core concepts -> architecture -> trade-offs -> bottlenecks -> interview angles |
| A language / technology | 20-笔记正文模板.md |
positioning -> environment cheatsheet -> core mental models -> syntax diff table -> pitfalls & best practices -> snippets |
For how each layer's templates fit together and a full project lifecycle, see
90-Templates/90-模板总览与生命周期.md.
- Note files:
topic.md(Chinese fine, short and searchable) - Project folders:
goal-deadline(e.g.Hot100-2026Q4\) - MOC files:
topic.md(e.g.算法.md,系统.md) - Foreign languages split into two MOCs: human languages (English/Spanish) under
外语.md; programming/markup languages under编程语言.md - No date prefixes on knowledge notes (retrieval relies on MOC and tags, not time)
Two kinds of text live in this vault - decide before writing:
| Kind | Definition | Filename | Home | frontmatter type |
|---|---|---|---|---|
| Note | Distilled knowledge: principles / methods / trade-offs | topic.md, no date prefix |
matching 20-Areas category |
algorithm / system / language / tutorial |
| Log | Event record: what happened + how it was handled + what to watch | 记录-<event>.md |
30-Resources/logs/ |
log |
- If an event yields a reusable method, distill that method into a 20-Areas note and link it from the log via
related - Logs live in the resource layer: subject to the quarterly cleanup (archive/delete after 3 months without reference), never occupying Areas
- The vault structure is described by this file; generate new notes from
90-Templatesskeletons, with frontmatter - When writing notes for me: distilled content goes into the matching
20-Areascategory; raw material into30-Resources - Update the relevant MOC link list after every big change
- Respect the flow rule: never dump raw material into Areas
Following the real note 20-Areas/01-算法/冒泡算法.md (bubble sort):
- Stash (30-Resources) - you collect a C bubble-sort snippet, a solution PDF, an animation. Collecting is not learning; no organizing yet.
- Distill (20-Areas) - copy
90-Templates/20-笔记正文模板.md, rename to20-Areas/01-算法/冒泡算法.md, fill the skeleton in your own words with "why" comments, add frontmatter (<= 8 fields). Raw material from step 1 is then deleted or demoted. - Index (00-MOC) - add one line to
00-MOC/算法.md:- [[冒泡算法]] — .... Content lives in 20-Areas; the MOC holds a single line. Finding all sorting notes means opening one map. - Project (10-Projects) - if this becomes systematic practice, create
10-Projects/2026-10-刷完Hot100/with goal, deadline, task list; cross-link viarelated: [[..]]so project and area layers hook into each other. - Archive (40-Archive) - when the project is done, the whole folder moves into
40-Archive(append-only). A single outdated note moves there too, and the MOC drops its link.
idea/material -> 30-Resources (staging) --\
+-> 20-Areas (finished notes) -> 40-Archive (sealed)
templates 90-Templates <-copy- write body -+ ^ |
\-> 00-MOC (index entry) <- move when done
00 indexes, 10 charters, 20 hosts, 30 stages, 40 seals, 90 formats - the same knowledge advances 30 -> 20 -> 40 as it matures; 00 always points at it, 90 always teaches how to write it.