Sync Engine
Sync Engine 是下一代 Obsidian 插件,可将你的仓库与自有基础设施同步。它是首个允许通过自定义模块扩展核心功能的 Obsidian 插件。
Sync Engine 是下一代 Obsidian 插件,可将你的仓库与自有基础设施同步。它是首个允许通过自定义模块扩展核心功能的 Obsidian 插件。
Sync Engine 是一种革命性的仓库同步方案。它不仅是同步插件,更是一个任何人都可以构建于其上的模块化平台。
核心部分提供基础设施,所有后端(WebDAV、S3、GDrive)和功能(国际化、优化、同步策略)都来自可组合模块。你和你的 AI 代理可以通过便捷的 SDK 构建自己的模块,扩展插件并参与社区贡献,无需修改源代码。
你可以在 sync.consensia.cc 查看 Sync Engine 文档,其中包含使用指南、现有模块、权限声明、基准测试,以及模块开发文档。
作为一名在多设备间工作的 Obsidian 用户,我亲身经历过同步困境:寻找一个既可靠、灵活,又不损害数据完整性的解决方案。在尝试了社区中几乎所有的同步插件后,我发现它们各自都存在令我日常工作流程受挫的权衡:
于是我开发了 Sync Engine:你可以自由选择存储方式;由于不会捆绑未使用的功能,插件能够保持小巧;同时,它还提供不逊于自托管服务器的高度优化同步体验。
将 Obsidian 仓库同步到 WebDAV 服务器是一个典型的分布式协调问题,其中每个客户端都拥有自己的仓库副本和更改记录,且中间没有集中的解析器。目标是在客户端之间同步仓库,以实现最大的数据完整性。
为解决这一问题,本插件保留了本地和远程文件上次已知同步状态的记录。在同步期间,它会评估每个文件路径的三种状态(当前本地、当前远程、上次同步时记录的本地和远程),并据此决定同步操作:
✅ = 存在,❌ = 不存在,✏️ = 相较于记录已更改
| 情况 | 本地文件 | 远程文件 | 同步记录 | 操作 |
|---|---|---|---|---|
| 1 | ✅ | ✅ | ✅ | ⏭️ 跳过(已同步) |
| 2 | ✏️ | ✏️ | ✅ | ⚠️ 解决冲突(应用策略) |
| 3 | ✅ | ✏️ | ✅ | ⬇️ 拉取(下载远程版本) |
| 4 | ✏️ | ✅ | ✅ | ⬆️ 推送(上传本地版本) |
| 5 | ✅ | ❌ | ✅ | 🗑️ 删除本地(清理) |
| 6 | ❌ | ✅ | ✅ | 🗑️ 删除远程(清理) |
| 7 | ❌ | ✏️ | ✅ | ⬇️ 拉取(从远程恢复) |
| 8 | ✏️ | ❌ | ✅ | ⬆️ 推送(恢复到远程) |
| 9 | ✅ | ✅(与本地比较) | ❌ | 📝 记录(捕获未记录的文件) |
| 10 | ✅ | ✏️(与本地比较) | ❌ | ⚠️ 解决冲突(首次同步) |
| 11 | ❌ | ✅ | ❌ | ⬇️ 拉取(新远程文件) |
| 12 | ✅ | ❌ | ❌ | ⬆️ 推送(新本地文件) |
| 13 | ❌ | ❌ | ✅ | 🧹 清理记录(数据库清理) |
Sync Engine。Sync Engine 欢迎所有希望开发和贡献模块的人。详细的模块开发文档请参阅 Sync Engine 网站。
Sync Engine 采用 MIT 许可证。