Obsidian

Obsidian 无 id 纯净同步:消息不写 id / 笔记属性不写 id(3.2.0 起支持)

笔记同步助手 · ·Obsidian 教程
Obsidian设置合并消息笔记属性frontmatter教程

Obsidian 无 id 纯净同步:消息不写 id / 笔记属性不写 id

本文两个设置从插件 3.2.0 版本起支持。如果你的设置页里找不到它们,先把插件升级到 3.2.0 或更高版本。

默认情况下,笔记同步助手会在同步下来的笔记里写入两类「机器痕迹」,用来防止同一条内容被重复写入:

  1. 合并消息文件末尾的隐藏注释符(形如 <!--nh:…-->,内含消息 id)——阅读视图看不见,但源码模式下存在;
  2. 笔记属性(frontmatter)里的 id 字段(合并模式下还有 syncedIds)——打开任何一篇同步的文章都能在属性面板里看到。

它们对功能很重要,但确实有不少同学希望笔记「零机器痕迹」:属性面板只留作者、来源、链接这些有意义的字段,源码里也干干净净。3.2.0 起,插件提供了两个开关来做到这一点——去重改为完全依靠最新同步游标(按时间判断)

一、两个开关在哪里

设置入口:Obsidian → 设置 → 第三方插件 → 笔记同步助手

1. 消息不写 id(消息处理区)

展开「消息处理」分组(只有消息合并模式不是「不合并」时才会显示这一项):

消息处理区的「消息不写 id」开关

打开开关会弹出确认框,请务必读完再点确认(尤其是网盘警告,见下文第四节):

「确认消息不写 id?」二次确认弹窗,含网盘方案警告

开启后,合并消息文件不再写入隐藏注释符,是否重复完全按时间判断。

2. 笔记属性不写 id(文章设置区)

展开「文章设置」分组,在「笔记属性模板」下方:

文章设置区的「笔记属性不写 id」开关

同样有二次确认弹窗,列出了开启的代价与限制:

「确认笔记属性不写 id?」二次确认弹窗

开启后,新同步的笔记属性不再写入 id(合并模式下也不再写 syncedIds),你在「笔记属性模板」里自定义的作者、来源、链接等业务字段不受影响、照常写入。

二、开启后的效果

两个开关都打开后,同步下来的合并消息在阅读视图里和之前一样:

合并消息阅读视图,与开启前无差别

切到源码模式,可以看到每条消息末尾不再有 <!--nh:…--> 注释符,文件顶部也没有任何机器字段:

源码模式:消息末尾没有隐藏注释符

文章类笔记的属性面板里没有 id,只保留你模板里配置的字段:

文章属性面板:无 id 行,只有作者/来源/链接等业务字段

三、原理:去重改为「最新同步游标」

没有 id 之后,插件靠什么防止重复?答案是时间

插件会记录每台设备「最后同步到了什么时间」(也就是同步游标)。开启无 id 模式后,一条内容如果早于所有设备里最新的那个游标,就认为它已经在某台设备上同步过了,不再重复写入。

这套机制成立的前提是:同步游标要能及时跟着你的笔记库在设备之间流动。这正是下一节警告的由来。

四、⚠️ 开启前必读的限制

1. 跨设备同步不能用网盘方案

开启任一开关后,如果你在多台设备之间同步笔记库,不能使用坚果云、iCloud、OneDrive 等「网盘直接同步库文件夹」的方案——网盘同步延迟大,而且通常不同步插件数据(.obsidian 目录),游标传不过去,会造成消息重复写入或丢失

可以正常使用的方案:

  • Obsidian Sync(官方同步)
  • 手机电脑同步插件(同步整个库、包含插件数据)

只在单台设备上用 Obsidian 的话没有这个顾虑。

2. 与「阅后即焚」互斥

开启「阅后即焚」时这两个设置不生效——阅后即焚必须依赖 id 精确识别每一篇笔记,否则有误删风险。

3. 手动回拨「最后同步」时间会重复写入

无 id 模式下判断重复全靠时间,把「最后同步」改回过去的时间点,就等于告诉插件「这段时间的内容我都没同步过」,已有内容会被再写一遍。

4. 「笔记属性不写 id」的额外代价

没有 id 后,插件无法再精确识别既有笔记:

  • 改名或移动过的笔记,重新同步时可能重复建文件;
  • 标题相同的不同文章会被当成同一篇。

对多数人这不是问题,但如果你经常整理、重命名同步下来的笔记,建议只开「消息不写 id」、保留文章的 id。

5. 已有笔记不会被批量改动

开启前已同步的笔记维持原样(其中的 id、syncedIds、历史注释符都保留,并且仍参与去重);只有开启之后新写入的内容才是无 id 的。同理,某篇老笔记之后有内容更新时,更新落盘的新属性也不再含 id。

五、常见问题

Q:开了之后后悔了怎么办? 随时可以关掉,关闭不需要确认。关闭后新同步的内容恢复写入 id / 注释符;无 id 期间写入的内容靠游标继续去重,不受影响。

Q:我在设置里找不到这两个开关? 「消息不写 id」只在消息合并模式开启(仅合并消息 / 合并所有)时显示;另外请确认插件版本 ≥ 3.2.0。

Q:开启后我自定义的笔记属性模板还生效吗? 生效。去掉的只有插件强制写入的 id / syncedIds 机器字段,你在「笔记属性模板」里写的字段一律照常渲染。