v3.0
同步,按你的节奏。
v3.0 补上 SoloMD 一直避开的那块拼图:同步。 我们之所以一直避开,是因为同步最显然的形态 —— 我们自己跑 CRDT 服务 —— 会把 SoloMD 变成一个 SaaS。 我们最后选的形态是:把笔记仓库 → 推到你自己的 GitHub 私库。 端到端加密可选。iCloud / Dropbox / OneDrive 联动可选。 公开只读分享可选。不跑 SoloMD 服务器,不收订阅,不要账号。
☁️ GitHub 同步
打开「设置 → GitHub 同步」。粘个 Personal Access Token(保存到系统钥匙串 —— macOS 钥匙串 / Windows Credential Manager / Linux Secret Service)。 选一个已有仓库,或者让 SoloMD 直接给你新建一个私库。从这一刻起:
- 自动推送:每次保存后 5 秒(去抖)。无可提交内容则跳过。
- 自动拉取:可配置间隔(5 / 15 / 30 / 60 分钟)。本地有未提交修改时自动跳过 —— 不会把你的改动覆盖掉。
- 冲突解决面板在历史侧边栏:每个文件三个按钮 —— 用我的 / 用 GitHub 的 / 都保留。「都保留」会把远端版本另存为
note.remote-2026-04-26.md不丢任何一份。 - libgit2 内嵌,跟 v2.2 AutoGit 同一引擎,不依赖系统 git。
SoloMD 永远不存你的数据,连你建了什么仓库都不知道。 数据在 1GB 以内 GitHub 免费版就够;要无限私库就 GitHub Pro($4/月)。 这笔订阅是你跟 GitHub 的事,不经我们手。
🔒 端到端加密(可选)
绑定时勾「推送前加密」并设一个口令。从此远端只看到密文:每个 .md 变成 .md.enc,
头 4 字节是 SLMD magic,随后 24 字节 XChaCha20 nonce + 16 字节 Poly1305 校验。
我们刻意做的几个权衡:
- Argon2id 派生密钥,用 RFC9106 默认参数(~19MB / 2 轮)。盐 + KDF 参数提交到加密仓库,所以另一台设备只要输同样口令就能派生同一把钥匙。
- XChaCha20-Poly1305 做 AEAD,带认证;任何篡改会被发现。
- 确定性 nonce:SHA-256(key ‖ aad ‖ plaintext)[..24]。等价于 convergent encryption —— 重新加密同一份明文得到同一份密文,git 不会有伪 diff。代价:远端读权限的攻击者能看出同库内哪些文件内容相同。单用户库这个代价我们接受。
- 路径作为 AAD:把
secret-2026.md.enc的密文挪到boring.md.enc解密会失败 —— 攻击者搬不动密文块。 - 明文留本地。搜索 / RAG / AI 改写 / 演示模式 ——— 全部继续工作,因为本地读 .md 这条路径上没有任何加密层。加密影子放在
<workspace>/.solomd-encrypted/里,只有它会被推到远端。
这套不是用来防本机恶意进程或被入侵设备的(那不是威胁模型)。 它能防住的是:PAT 泄漏、误把仓库设成 public、被人 clone 到、GitHub 内部合规扫描。
🗂️ iCloud / Dropbox / OneDrive(不用配置)
如果你工作区本来就在 ~/Library/Mobile Documents/com~apple~CloudDocs/Notes
或 ~/Dropbox/Notes 里,那其实根本不需要 GitHub 同步 —— 苹果 / Dropbox / 微软已经在做文件级同步了。
v3.0 自动识别这种情况,在设置里弹个横幅告诉你。
我们在此之上加一层跨设备会话恢复:每台设备会写一份
.solomd/session.<deviceId>.json,记录当前打开的标签页。
在另一台机器打开同一个工作区,看到对方的 session 比自己新时,会弹一个一键
「从 Mac mini 恢复标签页」 —— 接着写,无缝。我们不碰你的数据。
🌐 公开只读分享
打开命令面板,运行 GitHub Sync: Copy Share Link for This Note。
得到的链接形如
solomd.app/share/?repo=you/notes&path=2026-roadmap.md。
任何拿到链接的人在浏览器里就能阅读这篇笔记 —— 直接从
raw.githubusercontent.com 拉,浏览器侧 marked + DOMPurify 渲染,
中间没有 SoloMD 服务器,也没人知道谁读了它。
私有仓库不能这样分享(raw 链接需要鉴权)。页面会清晰提示「可能是私有仓库」而不是默默 404。 要分享的话,先把笔记推到一个公开仓库。
🔧 多平台支持
GitHub 是默认,享有完整体验(自动建仓 + 仓库选择器走 GitHub REST API)。 GitLab / Gitea / 自建 Git 服务,下拉选你的平台、粘贴 clone 链接, 推 / 拉一样工作 —— 底层 libgit2 + PAT 凭证流程对平台无感。
🧰 来自社区的 QoL
v3.0 同时合入两个社区 PR:
我们选的同步形态 vs. 我们没选的
| SoloMD v3.0(GitHub) | Obsidian Sync | 仅 iCloud | |
|---|---|---|---|
| 数据存哪 | 你的 GitHub 账号 | Obsidian 服务器 | Apple 服务器 |
| 价格 | 免费(或者你已有的 GitHub 套餐) | $96 / 年 | 5 GB 内免费 |
| 端到端加密 | ✅ 可选 | ✅ 可选 | ❌(密钥在 Apple 手里) |
| 冲突解决 | 逐文件 UI | 逐文件 UI | "重命名保留两份" |
| 版本历史 | 每文件完整 git log | 1 年 | 30 天 |
| 多平台 | GitHub / GitLab / Gitea / 自定义 | 仅 Obsidian | 仅 Apple |
| 需要订阅 | 否 | 是 | 5GB 之后 |
没变的部分
除此之外 SoloMD 跟 v2.5 一致:本地优先纯 .md,~15 MB 安装包,
14 个 AI 服务自带钥匙,MCP 服务自带,AutoGit 文件级历史,
语义搜索,WYSIWYG 实时编辑,斜杠命令,主题市场,中文校对。
v3.0 把同步加在最上面 —— 不开它,SoloMD 就是你之前用的那个 SoloMD。
感谢 @beihai23、@ZHTodd223, 以及所有在 GitHub Discussions 里参与 v3.0 讨论的朋友。 Bug 与建议 → issues。