📑 模板说明
🗂️ 模板对应
| 模板 | type | 什么时候用 |
|---|---|---|
| note | note | 📝 随手记、想法、一般笔记 |
| concept | concept | 💡 想弄懂的概念、原理、判断标准 |
| practice | practice | 🧪 实验、评测、项目、踩坑 |
| config | prompt | skill | mcp | agent | model | ⚙️ 可复用 AI 配置:提示词、skill、mcp、agent、模型接入 |
| ref | tool | site | article | 📚 工具、网站、文章 |
| daily | 无 | 📅 每日笔记,由核心插件自动生成 |
新建笔记时选好模板,把 type 填成合适的值。分类系统只有 type 一个字段,没有 kind、ref_kind 这些子字段,也没有分类 tags。
🏷️ type 词表
- 📝
note随手记、想法 - 💡
concept概念、原理、判断标准 - 🧪
practice实验、评测、项目、踩坑 - 💬
prompt提示词 - 🧩
skillagent skill - 🔌
mcpMCP server 配置 - 🤖
agentagent 配置 - 🧠
model模型接入配置方法 - 🧰
tool工具、应用 - 🌐
site网站、文档站 - 📄
article文章、教程
type 是列表,一篇笔记一个或多个值,可以组合,例如 [tool, agent]。带多个 type 的笔记会同时进首页所有相关的表——它同时满足多个查询条件。
🧾 其他字段
status:draft→active→archived;broken表示链接失效待重验url:资源本体链接source:内容来源(文章、教程)icon:文件树和标签页里显示的 emoji,内容专属、不跟type绑定tags:不用作分类,只在有跨类标记需要时才加(例如#ai标记 AI 相关、#topic/music标记非 AI 主题)
三个日期字段
格式统一 YYYY-MM-DD HH:mm:ss:
created:笔记首次创建时间。自动,Obsidian Linter 在新建时写入一次,之后不变modified:最后一次保存修改的时间。自动,每次保存内容变更时更新verified:上次亲自确认文中外部链接仍可打开的时刻。人工,链接类笔记必填,复核后手动更新
verified 必须独立于前两个:它是「我确认过链接能打开」这个动作的记录,只有你亲手点开才该更新。合并进 modified 会让复核操作污染真实的修改时间,也会让首页「链接超半年未验证」的告警失去输入。
模板不预置 created / modified:新笔记从模板创建后由 Linter 从零写入,逻辑更简单,也避免 Linter 把预置的空值当成「字段已存在」而跳过写入。verified 则按需手填。
🔗 链接与附件约定
- 外链用 markdown 语法
[描述](https://…),不裸贴 URL - 本地笔记互链用 wikilink
[[笔记名]],不加路径 - 图片 PDF 拖进
附件/,Obsidian 自动管理路径 - 需要长期维护的链接放
verified字段,别只写在正文
⚠️ 已验证的坑
Dataview(插件已移除,仅存档):
⚠️ Dataview 插件已于 2026-09-29 移除,首页 11 个块全部改用原生 Bases。以下 6 条对当前 vault 已全部失效,保留仅供判断——迁移过程、失败路径与 Bases 侧的对应写法见 Dataview 迁移到 Bases 实践。
- 配置改完必须重载 Obsidian(文件 → Reload app)。Dataview 只在启动时读一次配置,热重载不生效
- DQL 没有
datetime(),只有date()/dur() - dataviewjs 里
now不是 Luxon DateTime、没有diff。算天数用原生Date.now()/Date.parse() TABLE WITHOUT ID会丢掉第一列的 wiki 链接列。要可点击链接就保留默认 ID 列- 链接必须给完整 URL,缺协议头的相对路径不会被识别为字段
type是列表后,DQL 必须用contains(type, "x")。type = "x"打不上列表,会静默返回空而不是报错——表看起来就是空的,容易误以为没笔记- dataviewjs 里列表字段是数组,判空要归一化:
Array.isArray(p.type) ? p.type.length : (p.type ? 1 : 0)。单判!p.type只挡住 undefined,空列表[]挡不住,会漏报
代码块:
- 代码围栏不能包在 HTML 块(如
<details>)里,Obsidian 不解析,Linter 会当正文格式化 - 代码围栏前后各留一个空行
Iconize(obsidian-icon-folder):
- 图标配在 frontmatter 的
icon:字段(一个 emoji),这是唯一要维护的地方。插件把它同步进data.json渲染,所以iconInFrontmatterEnabled必须是true - 单个文件改完立即生效,不用重载:保存笔记会触发
metadataCache.on('resolve'),插件在线同步(实测验证)。但启动 / 重载不会批量同步——那批resolve事件在插件注册前就触发了,启动时全漏。所以批量改过一批文件后(比如一次性给 17 篇补icon:),得跑一次设置里的 Refresh icons from frontmatter 才补齐 - ⚠️ Refresh 按钮会删图标:凡 frontmatter 没有
icon:的 md 就removeFolderIcon,不管图标原来怎么设的。所以每个 md 都得有icon:。新建笔记从模板出来时模板里已带icon:,不会漏 - ⚠️ 别在开关开着时删
icon:字段:live handler 会当成「图标被移除」调removeSingleIcon,把data.json里那条删掉。要撤 frontmatter 模式,先关开关,再删字段 data.json顶层是插件的渲染缓存,键是 vault 相对路径:文件夹写纯字符串"模板": "📑",文件写对象"笔记/x.md": {"iconName": "🧠"},两种形状都认。别手动改它——Obsidian 一保存设置就用内存副本覆盖整个文件,正在手改时会全被冲掉- 别把图标写进
settings.rules——那套是自定义规则,字段名是rule(按正则匹配),还要for(folders/files)和order;字段名写错不报错,只是永远匹配不上 - Obsidian 这版文件树本身不渲染默认图标(文件只显文件名,图片/PDF 等多一个类型角标,文件夹只有一个折叠箭头),所以 emoji 是那一行里唯一的图标,不用写 CSS 隐藏默认图标。
.nav-file-icon在本版是死 CSS,JS 里从不创建;设置里的「默认笔记图标」在本版也不存在 - 正文
:emoji:行内语法不支持 emoji:shortcode 只匹配\w{1,64},且走 icon pack SVG 查找,emoji 不走那条路。想在正文显示 emoji 直接敲就行