Thino 页面触发 Linter 自动插入 Frontmatter 的排查与解决

Issue 编号:79
创建:2026-07-24T10:23:29Z
更新:2026-10-12T03:23:37Z
状态:open
标签:["blog:publish", "obsidian", "linter", "thino", "AI 写作为主"]
原始发布日期:2026-06-29T00:00:00.000Z

正文

现象

在 Obsidian 的 Thino 页面中,进入页面或按下 Cmd+S 后,输入框中会自动加上如下 frontmatter:
最开始看起来像是 Thino 写入日记时触发了格式化,因为 Thino 的内容确实存放在日记里。

第一层原因

直接原因来自 Obsidian Linter:
  • lintOnSave 开启。
  • lintOnFileChange 开启。
  • insert-yaml-attributes 规则开启,会插入 date/tags/category/slug/published/description/title。
  • yaml-timestamp 规则开启,会补 date_created。
因此,只要 Linter 认为当前文件应该被 lint,就会把这套博客 frontmatter 补进去。

为什么忽略日记目录没用

一开始尝试把 02-日记 加到 Linter 的 foldersToIgnore。这个配置本身是正确的,Linter 的匹配逻辑是:
也就是说,02-日记/2026/06/2026-06-29.md 会被正确忽略。
但这个方案没有解决问题,因为 Thino 页面在 Linter 眼里不是日记文件。

真正根因

临时调试插件记录到的关键运行时状态是:
也就是说:
  • 当前视图确实是 Thino 的 thino_view。
  • 但 Obsidian/Linter 暴露出来的 active file 是根目录 index.md。
  • Linter 看到的是 index.md,不是日记文件。
  • 所以忽略 02-日记 拦不住。
这解释了两个现象:
  • 按 Cmd+S 时,Linter 会 lint index.md。
  • 进入 Thino 页面时,active-leaf-change / editor-change 也可能触发 Linter 处理 index.md。

最终方案

新增一个极小的本地 Obsidian 插件:
插件已发布到 GitHub:
插件入口:
核心思路:
  1. 当 Obsidian 当前处在 Thino 页面时(active view 是 thino_view),把这次 Linter 判断视为“应跳过”,避免它处理 Thino 暴露出来的虚拟 index.md。
  1. 当 Obsidian 当前处在 Thino 页面时,且执行 editor:save-file 时,临时关闭 Linter,保存结束后恢复。
这样可以同时覆盖:
  • 进入 Thino 页面时触发的 Linter 链路。
  • 在 Thino 页面按 Cmd+S 时触发的保存链路。
普通 Markdown 文件不受影响,仍然会正常走 Linter。

当前插件代码要点

启用方式

确保 .obsidian/community-plugins.json 中包含:
修改插件后,需要重载 Thino Linter Guard 插件或重启 Obsidian。
<!-- issues-blog:source=d1:738af6c0-1aea-4d9c-b772-d2f8ecf20586 --> <!-- issues-blog:published-at=2026-06-29T00:00:00.000Z -->
原始 Markdown(保真归档)
上一篇
Obsidian 全屏日历
下一篇
衬线、字重与可变字体