新闻详情

新闻详情

首页 / 资讯中心 / 详情

ReadAny同步系统源码解析:WebDAV/S3/局域网统一接口,冲突如何智能合并

发布时间:2026/10/1 14:07:49来源:尧图网络
ReadAny同步系统源码解析:WebDAV/S3/局域网统一接口,冲突如何智能合并
ReadAny同步系统源码解析WebDAV/S3/局域网统一接口冲突如何智能合并【免费下载链接】ReadAnyAI-powered cross-platform e-book reader with semantic search, RAG chat, local vector store, notes, TTS, and WebDAV sync.项目地址: https://gitcode.com/gh_mirrors/re/ReadAnyReadAny 是一款 AI 驱动的跨平台电子书阅读器支持语义搜索、RAG 对话、笔记、TTS 等能力。它的同步系统用一个统一接口屏蔽了 WebDAV、S3 兼容存储阿里云 OSS、腾讯云 COS、Cloudflare R2、MinIO和局域网点对点传输三种后端并在最后写入优先 删除墓碑策略下智能合并多设备冲突。本文将带你从源码角度快速看懂这套设计无需背景知识也能跟上。整体架构一个接口统一三种同步后端同步模块全部位于 packages/core/src/sync/ 目录核心思想是上层同步逻辑只认接口不认协议。ISyncBackend每个后端要实现什么统一接口定义在 sync-backend.ts它把云存储抽象为 12 个通用操作能力分组方法作用连通性testConnection、getDisplayName配置页一键测连接读写put/get、putJSON/getJSON、exists/delete/move传输二进制与 JSON目录ensureDirectories、listDir保证readany/目录结构存在平台优化putFile/getFileToPath可选大文件直传避免内存缓冲后端类型用一个联合类型表达SyncBackendType webdav | s3 | lansync-backend.ts。后端工厂一个 switch 选对实现sync-backend-factory.ts 中的createSyncBackend()根据配置类型返回对应实现密钥则从系统密钥链单独取出不落普通配置存储WebDAVwebdav-backend.ts基于WebDavClient封装。贴心细节——针对群晖、威联通等 NAS 在目录不存在时 PUT 返回 403/404/409 的问题会自动补建父目录并重试一次S3 兼容s3-backend.ts基于 AWS SDK桌面端通过自定义PlatformFetchHttpHandler走平台 HTTP 通道绕开 WebView 的 CORS 限制兼容 AWS S3、Cloudflare R2、阿里云 OSS、腾讯云 COS、MinIO局域网lan-backend.ts设备 A 起 HTTP 服务并显示二维码内含 IP、端口、6 位配对码格式见 lan-backend.ts设备 B 扫码连接走局域网高速通道迁移数据全程无需任何云服务。三者的取舍可以这样记☁️WebDAV/S3→ 多设备长期自动同步局域网→ 同一 WiFi 下的快速搬家一次用完即走。一次同步的完整流程按设备增量快照核心引擎是 simple-sync.ts它的设计非常巧妙每台设备只写自己名下的文件/readany/sync/device-{设备ID}.json从根源上避免两台设备写同一文件时的冲突。runSimpleSync()simple-sync.ts按 5 步执行建目录— 调用ensureDirectories()确保远端目录就绪拉取— 列出远端所有device-*.json快照逐台下载并应用跳过自己的那份推送—collectChanges()收集本机上次同步以来的变更记录生成完整快照上传同步文件— 书籍正文与封面按每本书一个文件夹的布局传输sync-files.ts上传并发 3、下载并发 5刻意保守以避开消费级 WebDAV 服务的限流落时间戳— 更新last_sync_at为下次增量同步做准备。参与同步的表由SYNC_TABLES声明simple-sync.ts书籍、分组、高亮、笔记、书签、AI 对话线程与消息、技能、标签、阅读会话——正好覆盖一个读者的全部数据。冲突如何智能合并这是整套系统最有含金量的部分答案藏在三个机制里1. 最后写入优先Last-Write-WinsshouldApplyRemoteRecord()simple-sync.ts为每条记录比对本地与远端的updated_at消息表用created_at远端新则覆盖本地新则跳过。没有复杂的三方合并也没有让用户手动选版本的弹窗——多数用户的修改天然不打架。2. 删除墓碑Tombstone删除同样参与时间戳竞争远端发来删除指令时若本地记录更新则拒绝删除已应用的删除会写入sync_tombstones表simple-sync.ts防止已删记录被旧快照复活。时间戳相同时用删除标记的时间打破平局确保各设备不会分裂成一台有书、一台没书。3. 工程细节兜底本地自定义封面保护同步远端书籍元数据时若本地换过自定义封面会被保留不被覆盖simple-sync.ts数据库锁重试应用变更遇到database is locked会指数退避重试最多 6 次simple-sync.ts孤儿记录跳过外键约束失败的记录只跳过不崩溃保证同步永不半途而废跨平台抽象sync-adapter.ts 把文件读写、哈希、数据库快照等平台差异封装成统一接口桌面端Tauri与移动端Expo共用同一套同步逻辑。如何选择同步方式场景推荐理由手机 电脑日常同步WebDAV群晖/坚果云等即可配置简单自建私有云S3 兼容MinIO/R2成本低、有 CDN 加速换新手机/换电脑局域网扫码即用局域网速度零云端想深入细节推荐阅读 docs/sync-design.md 中的多后端同步方案设计以及 packages/core/src/sync/ 下的完整实现与 packages/core/src/sync/tests/ 测试用例。一句话总结ReadAny 的同步系统用接口统一 每设备独立快照 时间戳仲裁三板斧把多端数据合并这件事变得既简单又可靠——这正是它值得你点进源码一看的原因。【免费下载链接】ReadAnyAI-powered cross-platform e-book reader with semantic search, RAG chat, local vector store, notes, TTS, and WebDAV sync.项目地址: https://gitcode.com/gh_mirrors/re/ReadAny创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

云Dify连本地MCP服务报错failed to get endpoint URL:config.toml骨架与连通性验证 2026/10/1 15:00:21

云Dify连本地MCP服务报错failed to get endpoint URL:config.toml骨架与连通性验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
CMake 3.28.6 Windows x86_64 发行包:离线手册与构建实践指南 2026/10/1 15:00:21

CMake 3.28.6 Windows x86_64 发行包:离线手册与构建实践指南

简介:CMake 3.28.6 的 Windows x86_64 文档资源包,面向需要在 Windows 平台配置构建流程、编写 CMakeLists 或调试构建脚本的开发者与运维人员。资源以官方 3.28.6 版本文档为蓝本,压缩包共 2000 个文件,包含 1171 个 txt 文本与 …

阅读更多 →
Playwright MCP 浏览器自动化框架全面解析:从零搭建可复现的端到端测试链路 2026/10/1 15:00:21

Playwright MCP 浏览器自动化框架全面解析:从零搭建可复现的端到端测试链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
在线字典学习代码实战:从稀疏表示到流式更新 2026/10/1 15:00:21

在线字典学习代码实战:从稀疏表示到流式更新

简介:这份资源面向具备一定MATLAB基础、希望入门在线字典学习与在线机器学习的学习者与研究者,核心解决序列数据建模中字典更新与损失评估的实现问题。压缩包共5个文件,以4个.m脚本和1个.mat数据文件为主,整体约1.11MB&#xff0c…

阅读更多 →
从0到1手写ReAct Agent:面试辅导项目实践与踩坑记录 2026/10/1 15:00:21

从0到1手写ReAct Agent:面试辅导项目实践与踩坑记录

做Agent开发也有一年多了,一直停留在看文档、跑Demo的阶段。这次决定拿一个真实场景练手,选了"码上面试"这个题目——做一个能模拟技术面试官、帮程序员练习面试的 Agent 项目。一方面是面试辅导这个场景天然适合 Agent:有明确的目…

阅读更多 →
海光1000系列发布:国产CPU选型逻辑与x86兼容性深度解析 2026/10/1 15:00:15

海光1000系列发布:国产CPU选型逻辑与x86兼容性深度解析

1. 海光1000系列发布,为什么说国产CPU的选型逻辑真变了做服务器采购和基础架构这行当的人,应该都有同感:前几年提到国产CPU,很多人的第一反应是“能跑,但也就那样”,性能、生态、兼容性,随便哪一…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉