文件夹同名=自动搬家?Auto Note Mover 把我文件整不会了

⚠️ 剧透预警

根因一句话:「复盘」文件夹在根目录和「网站展示/」下重名了。Auto Note Mover 只看文件夹名,不看路径——排除项还不递归保护子目录。结果就是你在网站展示版精修的文件,一编辑就被插件搬到根目录的复盘/去了,跟原始版本挤在一起。解决方案:把网站展示版重命名为「复盘日志」,命名不同,永不冲突。


不是 Bug,是 Feature 的副作用

Auto Note Mover 是 Obsidian 里一个挺好用的插件:给文件加个 #复盘 标签,它就自动把文件搬到 复盘/ 文件夹里,不用手动拖来拖去。

然而——

我在根目录有一个 复盘/ 文件夹(放知识库日常复盘),在 网站展示/ 下面也有一个 复盘/ 文件夹(放要发布到数字花园的精修版复盘日志)。两个文件夹同名,但用途不同,内容也不同。

Auto Note Mover 的逻辑很简单:

检测到文件有 #复盘 标签 → 移动到 复盘/ 文件夹

它根本不关心你是 复盘/ 还是 网站展示/复盘/。插件规则里写的是文件夹名称,不是文件夹路径

排除列表为什么不保护我?

我最初试了排除项:

{
  "folder": "网站展示"
}

心想:把 网站展示/ 排除掉,它下边的东西就不会被动了。

然而 Auto Note Mover 的排除逻辑不递归到子目录。 排除的是 网站展示/ 这个物理路径,但 网站展示/复盘/ 作为一个独立文件夹,在插件眼里是两回事。

排除项不递归,规则项只认名称——双重暴击。

案发现场

这是一个典型的「积累型 Bug」——不是一下子坏掉的,而是慢慢恶化的。

  1. 第 1 天:在 网站展示/复盘/ 里写完一篇文章,tag 是 #复盘
  2. 回头一看:文件跑到 复盘/ 里去了
  3. 手动拖回来:哦,可能是我操作失误吧
  4. 第 2 天:编辑了一下,又跑了
  5. 第 N 次:算了,它跑过去就在那边改吧
  6. 直到今天:打开 复盘/ 发现 10 个文件,打开 网站展示/复盘/ 只剩 3 个——大部分网站精修版已经被慢慢吞光了

差一点就「温水煮青蛙」式地吞完所有网站展示内容。

修复方案

方案出奇地简单——你的直觉也是对的:

既然同名冲突,那就改个不同的名字。

操作做了什么
① 文件夹重命名网站展示/复盘网站展示/复盘日志
② 排除项加固Auto Note Mover 排除列表新增 网站展示/复盘日志(双重保险)
③ 文件归位把已被吞的 4 个网站版文件移回原处

重命名后,Auto Note Mover 的规则匹配规则是 tag:#复盘 → 文件夹"复盘",而你的文件在 复盘日志/ 里——名字不同,永不相干。

排除项加上,哪怕插件更新了什么递归逻辑也盯不住你。

复盘里的复盘

  1. 同名字段/文件夹永远是坑。 不管是编程里的变量名冲突,还是文件系统里的同名文件夹——只要系统有「按名称匹配」的逻辑,重名就是地雷。
  2. 排除项的递归保护别默认相信。 很多插件的排除逻辑只保精确路径,不保子目录。安全做法:显式排除每一个相关层级。
  3. 「积累型 Bug」很难第一时间发现。 它不像「页面崩了」那样立刻尖叫,而是「嗯?文件位置好像不太对」——然后就忘了。以后遇到类似「丢文件但好像又没丢」的情况,及早根因排查。
  4. 最终方案比想象中简单。 人容易倾向于在现有框架里修修补补(「能不能让排除列表递归?」),但换个名字成本更低、更彻底、零副作用。简胜于繁。

后记:写完这篇文章保存的时候,如果它自己又跑到 复盘/ 里去了……说明我们还有 Bug 没修。但应该不会了。