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

v4.0 · 让 Agent 住进编辑器

Agent in SoloMD

SoloMD v4.0 把工作区从"按需调用 AI"变成"Agent 持续在场工作" 的地方。五大支柱,全部跑在你早就拥有的纯 Markdown 文件上。 每一次自动写入都先进 AutoGit 分支沙箱,你 Accept 或 Reject 后才会落到 main。

1. 内置 Agent 面板

右侧一等公民面板,与 Outline / Backlinks 平级。流式输出地与整个 vault 对话,通过进程内 MCP 工具走 14-provider AI 栈。引用以 [[wikilink]] 芯片形式呈现,点击在新标签页打开被引用笔记。 tool-call 卡片 (Cursor 风格) 把每次读 / 写都展开在面板里 —— 展开卡片可看完整入参和返回。

运行历史以纯 markdown 持久化在 <workspace>/.solomd/agent-runs/<ts>.md。 可 grep,可 git。这是黑盒的反面。

  • ⌘⇧A 或右栏开关呼出
  • 当前笔记开关把当前文档注入系统提示 —— 选项性, 默认关
  • 允许写入开关按会话控制 write_noteappend_to_note
  • 10 个进程内 agent 工具 —— 与内置 MCP server 同样的能力面

2. 定时 Recipe

一个 Recipe 就是一个 YAML 文件,放在 <workspace>/.solomd/agents/*.yml。无构建步骤, 无插件清单。改、保存、跑。五种触发模式:

触发器触发条件
schedulecron 表达式匹配当前 UTC 分钟
on-save匹配 match: 的 markdown 文件保存时 (800ms 防抖)
on-commitAutoGit 提交落地且涉及 match:
on-tag-add笔记新加入与 tag: 匹配的 #tag
manual设置 → Recipes 里点 立即运行

示例 Recipe:

name: 周回顾
trigger: schedule
schedule: "0 18 * * SUN"        # cron, UTC
match: "daily/**/*.md"
prompt: |
  阅读本周 daily/ 下的笔记。
  写到 weekly/{{date:YYYY-WW}}.md:主题 / 决定 / 未决问题。
allow-write: true
write-cap: 5
provider: claude

触发器与下面的安全模型组合 —— 每次运行都先开自己的 AutoGit 分支 agent/<recipe>/<run-id>,写入是可审的,不是"魔法"。

3. Trace 视图 + 重放

每次运行 (Panel 对话或 Recipe) 都吐 <workspace>/.solomd/agent-runs/<run-id>/trace.jsonl —— 行分隔的 JSON Lines,长任务可以边跑边 tail -f。 schema:每步一个 JSON 对象,kind 包括 run_started · prompt · model_call · tool_call · tool_result · git_commit · run_ended。字段含时间戳、 工具入参、截断后的返回 (≤ 2048 字符)、token 数、成本估算。

UI 把这些渲染成可折叠步骤卡片:

  • Panel 对话结束后 inline 展示
  • 设置 → Recipes → 历史 (每次运行一条)
  • 点开看完整 result body 的步骤详情抽屉
  • 从第 N 步重放会复用 trace 前缀(到第 N 步为止), 重新跑 model。模型在第 7 步走偏想换提示重试时很有用。
  • 新的 read_agent_trace(run_id) MCP 工具 —— agent 现在能读自己的 trace,自我纠错的 Recipe 成为可能。

4. 多 vault Federation

内置的 solomd-mcp 在 v4 长出了多工作区模式。 通过任意多个 --workspace 标志在一个 MCP 会话里桥接多个 vault:

solomd-mcp \
  --workspace ~/Vaults/personal \
  --workspace ~/Vaults/work \
  --workspace ~/Vaults/research

工具签名加了可选的 workspace 参数。默认 = 第一个传入 (向后兼容)。 AutoGit 分支按工作区隔离。设置 → 集成里加了具名的 MCP profile —— 可一键复制对应的 Claude Desktop 配置块。

现在用户得开多个 Claude Code 会话才能跨两个 vault 工作。v4 一会话就够了。

5. Ollama 一等公民

我们内置本地 LLM 运行时。Ollama 已经在 14-provider 列表里 且做得很好 —— 重写一遍违反原则 #7 (写更少的我们要长期维护的代码)。 v4 改为打磨集成:

  • 自动检测 localhost:11434 上的 Ollama,设置 → AI 里有绿色状态指示。
  • 没装就出现安装 Ollama按钮 (跳 ollama.com,我们不代理下载)。
  • /api/tags 内联列出已装模型;空列表时给拉取推荐 (qwen2.5:1.5b, ~1 GB)按钮。
  • 3 个内置预设:rewrite (qwen2.5:7b) · quick (qwen2.5:1.5b) · CJK 友好 (qwen2.5:14b)。
  • Recipe 可以指定 provider: local 作为默认,跑廉价的本机自动循环。

11 个起步 Recipe

打开 设置 → Recipes → 浏览菜谱就能装下面任何一个。 YAML 会复制到 .solomd/agents/ 并打开编辑。 可重复装 (自动加后缀)。

  • 01-weekly-review.yml —— 周日 18:00 UTC,把 daily/*.md 总结到 weekly/YYYY-WW.md
  • 02-todo-extract.yml —— on-save 扫 - [ ],累积到 todo.md
  • 03-translate-zh-to-en.yml —— 手动;当前笔记中英互译
  • 04-cjk-proofread.yml —— on-save 用 Ollama (provider: local) 跑中日韩语法检查
  • 05-citation-cleanup.yml —— on-commit 规范化 @citekey 格式
  • 06-meeting-notes-summary.yml —— on-tag-add #meeting 抽决定 + 行动项
  • 07-link-suggester.yml —— 只读,在 trace 视图里给 [[wikilink]] 建议 (不改文件)
  • 08-daily-summary.yml —— 每晚 22:00,把 TL;DR 写到当天的 daily 笔记
  • 09-orphan-notes.yml —— 每周扫零反向链接的笔记,列在 orphans.md
  • 10-on-commit-changelog.yml —— on-commit 给 CHANGELOG.md 追加一行总结
  • 11-tag-classifier.yml —— on-save 根据笔记内容建议 #tag (只读)

安全模型 —— AutoGit 沙箱

每次 Recipe 运行都先做这三步:

  1. 从当前 HEAD 开一条新的 AutoGit 分支 agent/<recipe-slug>/<run-id>
  2. 跑 prompt + tool 循环。所有 write_note / append_to_note 调用都落在这个分支上。
  3. 成功后进入待审核,三个按钮:查看 diffAccept(快进合到 main)、Reject(整条分支删除)。

被 Reject 的运行在 git 历史里完全消失。被 Accept 的运行在 git log 里像普通提交一样出现。

write-cap 在 dispatch 之前就检查 —— 如果模型在 cap=5 的情况下要写 100 个文件,从第 6 个起就被拒, 不会出现"半成品"状态。默认 5,硬上限 50。

写自己的

完整 schema、所有变量 ({{path}}{{date:YYYY-MM-DD}}{{files}}...)、 agent 能调用的所有工具、生产环境真正能跑的模式 —— 全在仓库的 docs/agents.md 里:

阅读 docs/agents.md →

Schema 的源头是 app/src-tauri/src/recipes.rs —— Rust 类型,不是纸面规范。

English · /security · 首页