Decentralization? We're still early!
課 4 的 7
In Progress

第四课 Trilium笔记属性、关系与模板

Brave 2026-02-03

在前面的章节中,我们学会了用树状结构组织笔记,用克隆打破分类的边界。但如果你只是把 Trilium 当作一个"高级文件夹",那就太可惜了。

Trilium 真正强大的地方在于它的属性系统(Attributes)——这是一套让你的笔记具备"智能"的机制。

📌 通过属性系统,你可以:

  • 给笔记添加元数据,实现智能筛选和搜索
  • 建立笔记之间的语义关系,而不仅仅是层级关系
  • 创建模板,让新笔记自动继承结构和属性
  • 甚至可以用属性控制 Trilium 的行为,实现高度自定义

本节将深入讲解 Trilium 的属性系统,包括:

  • 🏷️ 标签(Labels):给笔记贴标签
  • 🔗 关系(Relations):建立笔记间的联系
  • 📋 模板(Templates):自动化笔记创建
  • 🗺️ 关系图(Relation Map):可视化知识网络

一、属性系统概述

1.1 什么是属性?

在 Trilium 中,属性(Attributes) 是附加在笔记上的键值对(key-value pairs),用于提供额外的元数据或控制笔记的行为。

┌─────────────────────────────────────────────────────────────┐
│                     属性的本质                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  笔记内容:                                                  │
│  ┌─────────────────────────────────────┐                    │
│  │  # Python 入门指南                   │                    │
│  │                                     │                    │
│  │  Python 是一种...                    │                    │
│  └─────────────────────────────────────┘                    │
│                                                             │
│  笔记属性(元数据):                                         │
│  ┌─────────────────────────────────────┐                    │
│  │  #language = Python                 │  ← 标签            │
│  │  #difficulty = beginner             │  ← 标签            │
│  │  #year = 2025                       │  ← 标签            │
│  │  ~author = 某作者笔记                │  ← 关系            │
│  │  ~relatedTo = JavaScript入门        │  ← 关系            │
│  └─────────────────────────────────────┘                    │
│                                                             │
│  属性 = 关于笔记的"笔记"                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

1.2 属性的两种类型

类型前缀值类型用途
标签(Label)#文本(可选)分类、标记、配置
关系(Relation)~指向另一个笔记建立笔记间的联系

示例对比

标签示例:
#book                    ← 无值标签,仅表示"这是一本书"
#year=2024               ← 有值标签,表示"年份是2024"
#rating=5                ← 有值标签,表示"评分是5"

关系示例:
~author=@张三的笔记       ← 关系,指向"张三"这个笔记
~template=@读书笔记模板   ← 关系,指向模板笔记
~relatedTo=@另一篇笔记    ← 关系,表示与另一篇笔记相关

1.3 查看和编辑属性

在 Trilium 中查看和编辑属性有几种方式:

🖱️ 方式一:右侧边栏(推荐)

  1. 选中笔记
  2. 查看右侧边栏的 "Owned Attributes" 部分
  3. 点击 "+" 按钮添加新属性
  4. 点击现有属性可以编辑或删除

⌨️ 方式二:快捷键

  • Alt+A:打开属性编辑面板

📝 方式三:在笔记内容中定义

你也可以在笔记的开头用特殊语法定义属性:

#book #year=2024 #rating=5
~author=@张三

# 书名:XXX

正文内容...

二、标签(Labels)详解

2.1 标签的基本用法

标签是最常用的属性类型,用于给笔记添加分类、标记或元数据。

📌 无值标签

用于简单的分类或标记:

#book          → 标记为"书籍"
#important     → 标记为"重要"
#todo          → 标记为"待办"
#archived      → 标记为"已归档"

📊 有值标签

用于存储具体的元数据:

#year=2024              → 年份
#author=王小波           → 作者
#rating=5               → 评分
#status=reading         → 状态:阅读中
#priority=high          → 优先级:高
#tags=Python,Web,后端    → 多个标签(逗号分隔)

2.2 实用标签示例

📚 读书笔记标签体系

📝 《沉默的大多数》

属性:
#book                    → 类型:书籍
#author=王小波            → 作者
#year=1997               → 出版年份
#genre=杂文              → 类型
#rating=5                → 我的评分
#status=finished         → 阅读状态
#finishedDate=2025-01-15 → 读完日期

💼 项目管理标签体系

📝 Trilium 课程开发

属性:
#project                 → 类型:项目
#status=active           → 状态:进行中
#priority=high           → 优先级:高
#deadline=2025-03-01     → 截止日期
#client=个人项目          → 客户/归属
#progress=60             → 进度百分比

👤 人物档案标签体系

📝 张三

属性:
#person                  → 类型:人物
#company=ABC公司          → 公司
#role=技术总监            → 职位
#city=北京               → 城市
#firstMet=2024-06-15     → 初次见面
#tags=技术,创业,投资      → 标签

2.3 标签命名规范

良好的命名规范能让你的属性系统更加一致和可维护:

规范示例说明
小驼峰命名#firstName, #publishYear多词组合时的标准命名
全小写#book, #important简单标签使用小写
避免空格#projectStatus#project status标签名不能有空格
语义清晰#publishYear#py避免过度缩写

2.4 系统内置标签

Trilium 有一些内置的系统标签,用于控制笔记的特殊行为:

标签作用示例用途
#archived标记为已归档归档旧笔记
#excludeFromExport导出时排除不导出敏感笔记
#run标记为可执行脚本脚本笔记
#iconClass设置自定义图标#iconClass=bx bx-book
#cssClass添加 CSS 类自定义样式
#hidePromotedAttributes隐藏提升属性简化显示
#readOnly设为只读保护重要笔记
#calendarRoot日记根节点设置日记位置
#template标记为模板模板笔记

🎨 自定义图标示例

Trilium 使用 Boxicons 图标库。你可以用 #iconClass 标签自定义笔记图标:

#iconClass=bx bx-book           → 📖 书籍图标
#iconClass=bx bx-code-alt       → 💻 代码图标
#iconClass=bx bx-user           → 👤 用户图标
#iconClass=bx bx-folder         → 📁 文件夹图标
#iconClass=bx bx-star           → ⭐ 星星图标
#iconClass=bx bxs-heart         → ❤️ 心形图标(实心)

三、关系(Relations)详解

3.1 什么是关系?

关系(Relation) 是一种特殊的属性,它的值不是文本,而是指向另一个笔记的引用

┌─────────────────────────────────────────────────────────────┐
│                    标签 vs 关系                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  标签(Label):                                             │
│  #author=王小波           → 值是文本"王小波"                  │
│  📝 笔记 ──#author──→ "王小波"(字符串)                     │
│                                                             │
│  关系(Relation):                                          │
│  ~author=@王小波的笔记     → 值是指向另一笔记的引用            │
│  📝 笔记 ──~author──→ 📝 王小波(笔记)                      │
│                                                             │
│  区别:                                                      │
│  - 标签的值是静态文本                                        │
│  - 关系的值是动态链接,可以跳转、可以反向查询                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3.2 关系的应用场景

📚 场景一:作者与作品

📝 《黄金时代》
~author = 📝 王小波

📝 《沉默的大多数》
~author = 📝 王小波

📝 王小波
(这个笔记会自动显示所有指向它的关系)

好处

  • 点击 ~author 可以直接跳转到作者页面
  • 在作者页面可以看到他的所有作品(反向关系)

👥 场景二:人物关系网络

📝 张三
~worksAt = 📝 ABC公司
~knows = 📝 李四
~knows = 📝 王五

📝 李四
~worksAt = 📝 XYZ公司
~knows = 📝 张三

📝 ABC公司
~locatedIn = 📝 北京

📖 场景三:知识点关联

📝 HTTP 协议
~prerequisite = 📝 TCP/IP 基础
~relatedTo = 📝 HTTPS
~relatedTo = 📝 RESTful API

📝 TCP/IP 基础
~prerequisite = 📝 计算机网络概述

3.3 系统内置关系

Trilium 有一些内置的系统关系,用于实现特殊功能:

关系作用说明
~template指定模板用于将模板应用到笔记
~renderNote指定渲染笔记HTML 渲染类型笔记使用
~runOnNoteCreation笔记创建时执行脚本自动化
~runOnNoteTitleChange标题变化时执行脚本自动化
~runOnAttributeChange属性变化时执行脚本自动化

3.4 创建关系的操作方法

🖱️ 方法一:属性面板

  1. 选中笔记,打开右侧边栏
  2. 在 "Owned Attributes" 点击 "+"
  3. 选择 "Add new relation"
  4. 输入关系名(如 author
  5. 搜索并选择目标笔记

⌨️ 方法二:在笔记内容中

~author=@王小波

# 《黄金时代》读书笔记

正文...

💡 提示@ 符号后面跟笔记名称,Trilium 会自动匹配。


四、属性继承

4.1 什么是属性继承?

属性继承(Attribute Inheritance) 是 Trilium 的一个强大功能:当一个属性被标记为"可继承(inheritable)"时,该属性会自动应用到所有子笔记。

┌─────────────────────────────────────────────────────────────┐
│                     属性继承示意图                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  📁 读书笔记                                                 │
│  │  #sortOrder=alphabetical  (可继承)                       │
│  │  #iconClass=bx bx-book    (可继承)                       │
│  │                                                          │
│  ├── 📝 《沉默的大多数》                                     │
│  │   ↑ 自动继承了 #sortOrder 和 #iconClass                  │
│  │                                                          │
│  ├── 📝 《黄金时代》                                         │
│  │   ↑ 自动继承了 #sortOrder 和 #iconClass                  │
│  │                                                          │
│  └── 📁 2024年读书                                          │
│      │  ↑ 自动继承了 #sortOrder 和 #iconClass               │
│      │                                                      │
│      └── 📝 《人类简史》                                     │
│          ↑ 也继承了!(继承是递归的)                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4.2 设置可继承属性

  1. 选中父笔记
  2. 添加属性
  3. 勾选 "Inheritable" 选项

或者在属性语法中使用 #! 前缀表示可继承:

#!iconClass=bx bx-book        → 可继承的标签
~!template=@读书笔记模板       → 可继承的关系

4.3 继承的实用场景

📁 场景一:统一文件夹图标

📁 项目文档
#!iconClass=bx bx-folder-open  (可继承)
├── 📁 项目A    → 自动显示文件夹图标
├── 📁 项目B    → 自动显示文件夹图标
└── 📁 项目C    → 自动显示文件夹图标

📚 场景二:读书笔记自动分类

📁 读书笔记
#!category=reading             (可继承)
├── 📝 书1    → 搜索 #category=reading 时会找到
├── 📝 书2    → 搜索 #category=reading 时会找到
└── 📝 书3    → 搜索 #category=reading 时会找到

🔧 场景三:子笔记自动应用模板

📁 日记
~!template=@日记模板            (可继承)
├── 📁 2025年
│   └── 📁 01月
│       ├── 📝 01日  → 自动使用日记模板
│       ├── 📝 02日  → 自动使用日记模板
│       └── ...

4.4 查看继承的属性

在笔记的属性面板中,你会看到两个部分:

部分说明
Owned Attributes直接定义在该笔记上的属性
Inherited Attributes从父笔记继承的属性

继承的属性通常会以浅色或斜体显示,以区别于自有属性。


五、模板(Templates)系统

5.1 什么是模板?

模板(Template) 是一种预定义的笔记结构,当你创建新笔记并应用模板时,会发生以下事情:

  1. 属性继承:模板的所有属性会被实例笔记继承
  2. 内容复制:模板的内容会被复制到新笔记(如果新笔记为空)
  3. 子笔记复制:模板的所有子笔记会被深度复制到新笔记
┌─────────────────────────────────────────────────────────────┐
│                     模板工作原理                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  📋 读书笔记模板                     📝 《沉默的大多数》      │
│  #template                          ~template=读书笔记模板   │
│  #book                     ───→     #book (继承)            │
│  #iconClass=bx bx-book              #iconClass=... (继承)   │
│                                                             │
│  内容:                              内容:                   │
│  ## 基本信息                         ## 基本信息              │
│  - 作者:                            - 作者:王小波           │
│  - 出版年:                          - 出版年:1997           │
│  ## 摘要                             ## 摘要                  │
│  ## 读后感                           ## 读后感                │
│                                      (用户填写)             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5.2 创建模板

📝 步骤一:创建模板笔记

  1. 🔧 Templates 目录下创建新笔记
  2. 命名为"读书笔记模板"(或其他名称)
  3. 添加标签 #template(这会让 Trilium 知道这是一个模板)

📝 步骤二:设计模板内容

## 📖 基本信息

| 项目 | 内容 |
|------|------|
| 📝 书名 |  |
| ✍️ 作者 |  |
| 📅 出版年 |  |
| 🏷️ 类型 |  |
| ⭐ 评分 | /5 |
| 📊 状态 | 🔄 阅读中 / ✅ 已读完 |

---

## 📝 内容摘要



---

## 💡 关键洞见

1.
2.
3.

---

## 🤔 读后感



---

## 📌 行动项

- [ ]
- [ ]

---

## 🔗 相关链接

📝 步骤三:添加模板属性

为模板添加你希望所有实例都继承的属性:

#template                    → 标记为模板
#book                        → 类型:书籍
#iconClass=bx bx-book        → 图标
#status=reading              → 默认状态

5.3 使用模板

🖱️ 方法一:创建时选择模板

  1. 右键点击父笔记 → Create child note
  2. 在弹出的对话框中,选择模板
  3. 新笔记会自动应用模板

🖱️ 方法二:为现有笔记添加模板

  1. 选中笔记
  2. 添加关系:~template=@读书笔记模板
  3. 如果笔记内容为空,会自动填充模板内容

🖱️ 方法三:通过父笔记自动应用

在父笔记上设置可继承的模板关系:

📁 读书笔记
~!child:template=@读书笔记模板  (可继承)

# 现在,在"读书笔记"下创建的任何子笔记
# 都会自动应用"读书笔记模板"

5.4 实用模板示例

📅 日记模板

## 📅 {{date}}

### 🌅 晨间计划

今日最重要的三件事:
1.
2.
3.

### ✅ 完成事项

- [ ]
- [ ]
- [ ]

### 💭 今日思考



### 📝 备注



### 🌙 晚间回顾

- 今天做得好的:
- 明天可以改进的:
- 感恩的事:

🎯 项目模板

## 🎯 项目概述

**项目名称**:
**开始日期**:
**目标截止**:
**项目状态**:🔄 进行中

---

## 📋 项目目标

1.
2.
3.

---

## 📊 里程碑

| 里程碑 | 截止日期 | 状态 |
|--------|---------|------|
|  |  | ⏳ |
|  |  | ⏳ |

---

## 📝 任务清单

### 待办
- [ ]

### 进行中
- [ ]

### 已完成
- [x]

---

## 📎 相关资料

-

---

## 📝 会议记录

### {{date}} - 会议主题

**参与人**:
**讨论内容**:
**决议**:
**下一步**:

👤 人物档案模板

## 👤 基本信息

| 项目 | 内容 |
|------|------|
| 🏢 公司/组织 |  |
| 💼 职位 |  |
| 📍 城市 |  |
| 📧 邮箱 |  |
| 📱 电话 |  |
| 🔗 社交媒体 |  |

---

## 🤝 关系背景

**如何认识**:
**初次见面**:
**介绍人**:

---

## 📝 交流记录

### {{date}}
- 交流内容:
- 后续事项:

---

## 💡 备注

5.5 高级模板技巧

🔄 模板的子笔记

模板不仅可以有内容,还可以有子笔记。当应用模板时,子笔记也会被复制:

📋 项目模板
├── 📝 项目概述
├── 📁 文档
│   ├── 📝 需求文档
│   └── 📝 技术方案
├── 📁 会议记录
└── 📁 参考资料

↓ 应用模板后 ↓

📝 新项目
├── 📝 项目概述(复制自模板)
├── 📁 文档
│   ├── 📝 需求文档
│   └── 📝 技术方案
├── 📁 会议记录
└── 📁 参考资料

📊 提升属性(Promoted Attributes)

你可以让某些属性在笔记顶部以表单形式显示,方便快速编辑:

#template
#label:author=promoted,single,text      → 作者(文本输入框)
#label:year=promoted,single,number      → 年份(数字输入框)
#label:rating=promoted,single,number    → 评分(数字输入框)
#label:status=promoted,single,text      → 状态(文本输入框)

这样,每个使用此模板的笔记顶部都会显示一个表单,包含作者、年份、评分、状态等字段。


六、关系图(Relation Map)

6.1 什么是关系图?

关系图(Relation Map) 是 Trilium 中一种特殊的笔记类型,它可以可视化地展示笔记之间的关系

这对于以下场景特别有用:

  • 🧠 知识图谱:展示概念之间的关联
  • 👥 人物关系:展示人物之间的社交网络
  • 📊 项目架构:展示模块之间的依赖关系
  • 📖 故事创作:展示角色关系和剧情线

6.2 创建关系图

  1. 创建新笔记
  2. 修改笔记类型:在右侧边栏选择 Type → Relation Map
  3. 添加笔记到关系图
    • 在关系图画布上双击,创建新笔记
    • 或拖拽现有笔记到画布
  4. 创建关系
    • 从一个节点拖拽到另一个节点
    • 输入关系名称(如 knowsworksAt

6.3 关系图示例

👥 人物关系图

        ┌─────────┐
        │  张三   │
        └────┬────┘
             │ knows
    ┌────────┼────────┐
    │        │        │
    ▼        ▼        ▼
┌──────┐ ┌──────┐ ┌──────┐
│ 李四  │ │ 王五  │ │ 赵六  │
└──┬───┘ └──────┘ └──┬───┘
   │                  │
   │    worksAt       │ worksAt
   │                  │
   ▼                  ▼
┌──────┐          ┌──────┐
│ABC公司│          │XYZ公司│
└──────┘          └──────┘

📚 知识概念图

       ┌───────────────┐
       │  计算机网络    │
       └───────┬───────┘
               │ contains
    ┌──────────┼──────────┐
    │          │          │
    ▼          ▼          ▼
┌──────┐  ┌──────┐  ┌──────┐
│应用层 │  │传输层 │  │网络层 │
└──┬───┘  └──┬───┘  └──────┘
   │         │
   │         │ includes
   │         │
   ▼         ▼
┌──────┐  ┌──────┐
│ HTTP │  │ TCP  │
└──────┘  └──────┘

6.4 关系图的操作技巧

操作方法
添加节点双击画布空白处
创建关系从一个节点拖拽到另一个节点
编辑关系点击关系线上的文字
删除关系选中关系线,按 Delete
移动节点拖拽节点
跳转到笔记双击节点
缩放滚轮或 Ctrl+滚轮
平移拖拽画布空白处

七、搜索与属性

7.1 按属性搜索

属性的一大价值是支持精确搜索。在 Trilium 的搜索框中,你可以使用属性进行筛选:

搜索语法含义
#book搜索所有带 #book 标签的笔记
#year=2024搜索 #year 为 2024 的笔记
#rating>=4搜索评分 ≥ 4 的笔记
#status=reading搜索状态为"阅读中"的笔记
~author.title=王小波搜索 ~author 关系指向的笔记标题为"王小波"的笔记

7.2 组合搜索

可以组合多个条件:

#book #year>=2020 #rating>=4
→ 搜索2020年及以后出版、评分≥4的书籍笔记

#project #status=active #priority=high
→ 搜索进行中的高优先级项目

#person #company=ABC公司
→ 搜索ABC公司的所有人员

7.3 保存搜索

你可以将常用的搜索保存为搜索笔记(Search Note)

  1. 创建新笔记,类型选择 Search
  2. 在笔记内容中输入搜索条件,如 #book #status=reading
  3. 这个笔记会动态显示所有符合条件的笔记列表

示例保存搜索

📁 智能视图
├── 🔍 正在阅读的书(#book #status=reading)
├── 🔍 高优先级任务(#todo #priority=high)
├── 🔍 本月创建的笔记(note.dateCreated >= 2025-01-01)
└── 🔍 最近修改的笔记(orderBy:dateModified desc limit:20)

八、本节小结

📝 核心要点回顾

  1. 属性系统是 Trilium 的核心功能之一:
    • 标签(Labels)#key=value 格式,用于元数据
    • 关系(Relations)~key=@笔记 格式,用于建立笔记间联系
  2. 属性继承让管理更高效:
    • 父笔记的可继承属性会自动应用到所有子笔记
    • #!~! 前缀标记可继承属性
  3. 模板系统实现自动化:
    • 模板可以包含内容、属性和子笔记
    • 应用模板时会继承属性、复制内容和子笔记
    • 通过 ~!child:template 可以让子笔记自动应用模板
  4. 关系图可视化知识网络:
    • 适合展示人物关系、概念图、项目架构等
    • 支持交互式编辑和导航
  5. 按属性搜索让信息检索更精确:
    • 支持标签搜索、关系搜索、组合搜索
    • 可以保存为搜索笔记,动态更新

🎯 实践检查清单

完成本节学习后,请确认你已经:

📚 参考资源

官方文档

中文教程

回复