v2.2 — MCP 服务、AutoGit 版本历史、14 家 AI 提供商
三件原本"超出 Markdown 编辑器范畴"的事这一版变成了内建:MCP 服务让任何 LLM 客户端都能读写你的笔记仓; AutoGit 版本历史让每次保存都成为可回滚的快照; 14 家 BYOK AI 提供商挂在 ⌘J 后面 —— 全部本地, 全部 opt-in,全部离线友好。
🔌 MCP 服务
默认随包附带的 Model Context Protocol 服务(solomd-mcp)——
把它指向你的笔记文件夹,Claude Desktop / Cursor / Codex CLI 等任何 MCP
客户端开箱就有 8 个工具:
list_notes·read_note·searchget_backlinks·list_tags·get_outlinewrite_note·append_to_note—— 默认禁用,需要--allow-write显式开启
路径穿越校验、工作区根目录强制约束、不开网络端口(只用 stdio)。 单独 1.5 MB 二进制。Claude Desktop 配置一次:
{
"mcpServers": {
"solomd": {
"command": "/path/to/solomd-mcp",
"args": ["--workspace", "/path/to/notes"]
}
}
} 📜 AutoGit 版本历史
在"设置 → 版本历史"勾上一个开关,从那一刻起:
- 每次 ⌘S 在工作区里的本地
.git创建一份快照。 - 右侧 历史版本面板 列出所有改过当前文件的 commit,最新在最上。
- 点任意一行 → 内联展开 diff。
- 点 恢复到此版本 → 工作副本和编辑器内容**同时**回滚(没有"看似回滚但下一次保存覆盖回去"这种坑)。
- 仓库归你 —— 想推到 GitHub 就推,不想推就完全本地。
基于 libgit2(已 vendored,系统不需要装 git)。git 操作走
blocking 线程池,UI 线程永不阻塞 —— 即使工作区有几千篇笔记,你保存的瞬间
也不会卡。
🤖 AI 改写 —— 14 家厂商,BYOK
选中文字按 ⌘J。挑一个动作:改写 / 精简 / 扩写 / 翻译(中英)/ 解释 / 自定义 prompt。流式生成,接受或拒绝:
- 美区:OpenAI、Anthropic Claude、Google Gemini、xAI Grok、Mistral、Groq
- 国内:DeepSeek、通义千问、智谱 GLM、Moonshot Kimi、火山豆包、硅基流动
- 聚合:OpenRouter(一个 key 接 400+ 模型)
- 本地:Ollama(完全不需要 key)
Key 存在系统钥匙串里(
macOS Keychain / Windows 凭据管理器 / Linux libsecret)
—— 绝不写入 localStorage,绝不在任何我们写的配置文件里。
BYOK 设计上就是这样:SoloMD 不托管任何模型,每个请求都从你的机器直接发去你
选的厂商。
🔐 新增 /security 页
把所有可能涉及用户数据的地方都讲清楚: solomd.app/zh/security。八条编号清单覆盖 笔记只在磁盘、Key 存钥匙串、AI 直连厂商、MCP 路径穿越防护、AutoGit 本地不 push、遥测无内容可关、Tauri 沙箱 + 签名构建、MIT 开源可审计,每条都给了 GitHub 源码定位链接。
🛠 工程笔记(给关心实现的同学)
- keyring v3 平台 feature 钉死 ——
apple-native、windows-native、sync-secret-service。v3 跟 v2 默认值变了,不带这几个 feature 的话 keyring 会默默掉到一个进程内的 mock store(我们 v2.2 第一次发布因此 翻车,详见 release notes)。 - 识别 symlink 的路径解析 —— macOS 上
/var/和/tmp/经过/private/...,以前 AutoGit 在这种 路径下每次 commit 都报"file outside workspace"。 - git2 走 async ——
通过
tauri::async_runtime::spawn_blocking调度,UI 线程永不 阻塞,保存的瞬间就能继续输入。 - solomd-dev-mcp —— 一个**仅供内部**的 MCP 服务,把 SoloMD 的领域逻辑暴露出来用于端到端自测。源码随仓库走,从不打包进用户版本。 我们自己用它在打 tag 之前验证每个特性是不是真能跑通。
下一步(v2.3+)
本地 RAG / 语义搜索(目前整个领域最大的空白 —— Obsidian 没有,Tolaria 也没有,如果想成为"按意思搜笔记"的首选,我们必须有),以及给 Tauri 加一个 WebDriver 桥让 dev MCP 也能驱动 Vue 组件。同步(CRDT)依然是 v3 的主轴。