✨ 试试我们的 AI 小说写作平台 → StoryAlter.com
#MD SoloMD

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:

  • 大纲折叠 + 侧边栏左右切换#35,@ZHTodd223):大纲面板支持折叠子标题;设置 →「大纲位置」选左 / 右。
  • 外部文件变更监听#24,@beihai23):在 SoloMD 之外改文件,编辑器立刻发现 —— 预览模式自动 reload,编辑模式弹「重载 / 保留」。已与 v3.0 GitHub 同步打通:拉取期间这个对话框会被静默(覆盖整个重写窗口)。

我们选的同步形态 vs. 我们没选的

SoloMD v3.0(GitHub)Obsidian Sync仅 iCloud
数据存哪你的 GitHub 账号Obsidian 服务器Apple 服务器
价格免费(或者你已有的 GitHub 套餐)$96 / 年5 GB 内免费
端到端加密✅ 可选✅ 可选❌(密钥在 Apple 手里)
冲突解决逐文件 UI逐文件 UI"重命名保留两份"
版本历史每文件完整 git log1 年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

评论 & 反馈

评论数据托管在 GitHub Discussions —— 用 GitHub 账号一次登录即可。

评论从 GitHub Discussions 加载。如果一直看到这条提示,说明维护者还没完成 giscus.app 一次性配置 —— 详见 web/COMMUNITY-SETUP.md。

前往 GitHub Discussions →