Object
Object 是 TypeMD 知識庫的基本建構元素。你追蹤的一切——書籍、人物、想法、專案——都是 Object。
什麼是 Object?
Section titled “什麼是 Object?”Object 是一個 Markdown 檔案,由兩個部分組成:
- Frontmatter — 檔案頂端的 YAML 中繼資料(系統屬性如
name和時間戳記,加上 schema 定義的屬性) - Body — 自由格式的 Markdown 內文(筆記、想法、參考資料)
---name: Go in Actioncreated_at: "2026-03-09T10:30:00+08:00"updated_at: "2026-03-11T18:00:00+08:00"status: readingrating: 4.5author: person/alan-donovan-01jqr3k5mpbvn8e0f2g7h9txyz---
# Notes
A great book about Go concurrency patterns.
See also: [[note/go-concurrency-patterns]]名稱不等於檔名
Section titled “名稱不等於檔名”Object 的顯示名稱(name 屬性)跟檔名是獨立的。檔名是穩定的儲存識別碼(slug + ULID);name 是人類可讀的標籤,可以包含空格、大小寫混合和特殊字元。
這個解耦意味著你可以重新命名 Object 而不需要搬動檔案,也可以從 template 自動產生名稱(例如 日記 2026-03-14),而不需要擔心檔案系統的限制。
Object ID
Section titled “Object ID”每個 Object 都有一個格式為 type/slug-ulid 的 ID,例如:
book/golang-in-action-01jqr3k5mpbvn8e0f2g7h9txyz| 部分 | 說明 |
|---|---|
book | 這個 Object 所屬的 Type |
golang-in-action | Slug——人類可讀的名稱 |
01jqr3k5mpbvn8e0f2g7h9txyz | ULID——唯一識別碼 |
使用 tmd object create 時,ULID 會自動附加。如果你手動建立檔案,ULID 是可選的——TypeMD 向後相容不含 ULID 的純 slug。
Object 不是檔案
Section titled “Object 不是檔案”在大多數筆記工具中,你把檔案放進資料夾來組織知識。在 TypeMD 中,你透過給 Object 一個 Type 並用 Relation 連接它們來組織知識。
檔案系統只是儲存層。一個 book Object 和一個 person Object 可以互相引用,不管它們在目錄樹的哪個位置。結構來自你的資料模型,而非資料夾階層。
Object 的存放位置
Section titled “Object 的存放位置”Object 儲存在 Vault 的 objects/ 目錄下,依 Type 分類:
objects/├── book/│ ├── golang-in-action-01jqr3k5mpbvn8e0f2g7h9txyz.md│ └── designing-data-intensive-applications-01jqr4m7npcwo9f3g8h0jtuyab.md├── person/│ └── alan-donovan-01jqr3k5mpbvn8e0f2g7h9txyz.md└── note/ └── go-concurrency-patterns-01jqr5n8oqdxp0g4h1i2kuvabc.md每個 Type 有自己的子目錄。這讓檔案系統保持整潔,但真正的組織是透過 Type 和 Relation 來實現的。