Skip to content

Repository files navigation

Mindmark

记得住你写作目的的本地 Markdown 编辑器

Mindmark 是一个本地优先、AI 深度集成的 Markdown 编辑器。它的差异化在于始终保留一份"文档思想档案"——目的、读者、风格、大纲意图——作为所有 AI 操作的根,让 AI 续写、改写、体检都受这份契约约束,而不是点状辅助。

它能做什么

  • 打开 / 编辑 / 保存 本地 .md 文件,frontmatter 完整 round-trip
  • Tab AI 续写:流式生成段落(紫色 ai-pending → ✓ 接受 / ✗ 拒绝)
  • 选中重写:浮起气泡菜单 → 更简洁 / 更详细 / 自定义指令 → diff 预览 → 应用
  • Ghost 续写:暂停打字 ~1.5 秒,灰色补全自动出现,Tab 接受
  • 元信息面板:动态字段 + AI 提议 + 防膨胀(cap 10 + 排除列表)
  • 大纲面板:每节带意图 + 字数估算;标题 / 意图 / 要点 / 字数全部可点击编辑;AI 整体优化 + AI 单节优化;一键导入 H2 标题到编辑器
  • Onboarding:5 类模板(博客 / PRD / 笔记 / 公众号 / 空白)+ 主题与读者 → AI 生成大纲
  • 全文体检:风格漂移 / 论点冲突 / 偏离大纲 / 违反元信息 四类问题诊断
  • 联网搜索:Anthropic Claude 用 web_search_20250305 工具,由模型自主决定何时查;非 Anthropic 用 OpenRouter :online 后缀
  • 参考资料:拖入 .md / .txt 自动注入到 prompt 上下文
  • Settings:API key 入 localStorage;3 档模型独立选;Ghost 触发延迟可调;联网搜索可关

快速开始

git clone https://github.com/<your-username>/Mindmark.git
cd Mindmark
pnpm install

# 配置 OpenRouter key
cp .env.local.example .env.local
# 编辑 .env.local 填入 sk-or-... key

pnpm --filter @mindmark/editor-ui dev
# → 浏览器打开 http://localhost:5173/

第一次进入应用:

  1. 新建 → 选模板 → 填主题与读者 → AI 生成大纲
  2. 输入文字,按 Tab 触发 AI 续写
  3. 选中文字 → 浮起气泡菜单选择重写预设
  4. Cmd+S 保存到磁盘(Chrome / Edge 走 File System Access API;其他浏览器降级为下载)

架构

三层严格解耦的 monorepo:

packages/
├── protocol/          # 纯 TS 类型 + fixtures,零运行时依赖
├── agent-core/        # 6 个 subagent + OpenRouter SSE 客户端 + 序列化
└── editor-ui/         # React 18 + Tiptap 3 + Zustand 5 + Tailwind 4
apps/
└── desktop/src-tauri/ # Tauri 2 桌面壳(P6 待接入)

Subagents(agent-core/src/subagents/):

名称 任务 tier
writer continue(段落续写) medium
rewriter rewrite(更简洁/更详细/自定义) medium
ghoster ghostWrite(行内补全) small
outliner initOutline / refineOutline / refineSection medium
meta proposeMetaFields medium
coherence coherenceCheck large

每个 subagent 是一个 async generator 函数,通过共享的 streamChat 客户端与 OpenRouter 通讯。

测试栈

  • Vitest(单元 + 集成)
  • MSW(mock OpenRouter SSE)
  • Playwright(E2E,scripts in package.json)
  • cargo test(Tauri Rust 命令)
  • TypeScript strict + project references
pnpm test           # vitest 47 通过
pnpm typecheck      # tsc -b 5 包全绿
cargo test          # Rust 单元测试

文档

状态

V1.0 MVP — 浏览器内可用,每个 PRD §4 模块已实现并端到端验证。

已知未做(按架构 v0.2 显式延后)

  • Tauri 桌面打包(Rust 端骨架已就位)— 路径替换:localStorage → keyring,FSA → 原生对话框
  • 行为感知 LLM 兜底(架构 v1.1)
  • .skill.md 用户目录扫描 — 当前 5 类 builtin 模板硬编码在 OnboardingModal
  • section ↔ block 双向锚定(点击大纲跳到对应段落)
  • Tiptap 视觉装饰(slash menu / mermaid 节点)

隐私

  • 文档存本地 .md 文件
  • API Key 本地 localStorage(Tauri 集成后迁移到系统 keyring)
  • 行为信号仅 session 级,关闭即清除
  • LLM 调用是 OpenRouter 唯一对外网络,可通过 Settings 全局关闭联网搜索

许可

MIT

About

本地优先的 AI Markdown 编辑器:始终保留文档思想档案(meta + 大纲意图),AI 续写/重写/体检/搜索全部受这份契约约束

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages