edit | blame | history | raw

documentId 可以理解为一份 Mindraw 文档的“永久身份证”。它不是文件名,也不是磁盘路径,而是写在 .mindraw 文档包内部 manifest.json 里的唯一标识。

例如:

{
  "documentId": "mdoc_fxt_minimal_empty_7P2J9K4M8R1T6V3X"
}

为什么需要 documentId

文件路径并不稳定。比如:

/Users/ar/Desktop/实验-ob-tag-page/26.0828-01.mindraw

之后可能被:

  • 改名;
  • 移到另一个文件夹;
  • 移进 Obsidian 仓库;
  • 从其他电脑同步回来。

如果链接直接保存绝对路径,移动文件后链接就会失效。因此 Mindraw 用 documentId 表示“这是哪一份文档”,用 elementId 表示“要定位到文档里的哪个对象”。

完整链接类似:

mindraw://localhost
?documentId=mdoc_ABC123
&elementId=sS0GXWYigG9i42EMEC7yW

其中:

  • mindraw://:要求 macOS 调起 Mindraw。
  • documentId:找到具体的 .mindraw 文档。
  • elementId:在文档中找到具体 Frame、图形或文字元素。

它和文件路径有什么区别

标识 表示什么 是否容易改变
文件名 文档当前叫什么 会改变
文件路径 文档当前放在哪里 会改变
documentId 这究竟是哪一份文档 原则上不变
elementId 文档里的哪一个对象 对象未删除时通常不变

可以类比为:

  • 路径是住址;
  • documentId 是身份证号;
  • elementId 是房间号。

住址可以变化,但身份证不应随之变化。

Mindraw 如何使用它

Mindraw正常打开一个 .mindraw 包时,会:

  1. 读取包内的 manifest.json
  2. 获得 documentId
  3. 将这个 ID 与当前磁盘路径关联;
  4. 复制对象链接时,把 documentIdelementId 写进链接;
  5. 以后打开该链接时,根据 documentId 找回文档,再定位到对应元素。

如果文档移动过,Mindraw 本机记录的旧路径可能失效。这时合理行为应当是让用户重新选择对应的 .mindraw 包,验证其 documentId 后重新建立关联。

它是不是隐私或密钥

不是。documentId

  • 不是密码;
  • 不是授权令牌;
  • 不能让别人远程读取你的文件;
  • 一般只是随机生成的文档标识。

别人只有这个链接,但电脑上没有相应 .mindraw 文件,仍然打不开文档内容。

复制文档时应该怎么办

这里需要区分两种语义:

  • 只是移动、改名或同步同一份文档:应该保留原 documentId,旧链接才能继续指向它。
  • 创建一份真正独立的新文档:原则上应生成新的 documentId,避免两份文件都声称自己是同一文档。

如果直接在 Finder 里复制整个 .mindraw 包,两份包可能暂时拥有相同 documentId。这会造成链接目标歧义,需要 Mindraw在“另存为副本”场景中明确处理。

这次错误说明了什么

你的 Frame 本身有正常的元素 ID:

sS0GXWYigG9i42EMEC7yW

但复制时,Mindraw前端没有拿到当前文档的 documentId,于是错误地退回了:

tauri://localhost?element=...

所以问题不在 Frame,也不是你操作错了;问题是 Mindraw 在当前运行状态中没有正确携带文档身份,并且错误地把内部兜底地址暴露给了你。