Midian

unlisted

by wuyifan-code

A lightweight mobile-first AI chat workspace. Streams Claude and OpenAI-compatible models over HTTP; sessions stay in your vault.

1 starsUpdated 1mo agoMIT
View on GitHub

Midian

CI

轻量、移动端优先的 Obsidian AI 工作空间插件。灵感来自 Claudian Plus,但为手机而生:无子进程、直连 HTTP API、流式输出,对话、记忆与工具全部留在 Vault 本地。

A lightweight, mobile-first AI workspace for Obsidian, inspired by Claudian Plus but built for phones: no subprocesses, direct HTTP APIs, streaming output; conversations, memory, and tools all live in your vault.

特性

  • 双 Provider:Claude(Anthropic 原生协议)+ OpenAI 兼容端点(Kimi / DeepSeek / MiniMax / GLM / Qwen…)
  • 流式输出:SSE 流式渲染;CORS 受限或流式静默超时(120s)时自动降级为 requestUrl 非流式(移动端可用,永不悬挂)
  • 数据安全:会话写入按会话串行化(FIFO 队列),后台任务(自动标题)原子合并,编辑/回退永不丢失
  • Vault 工具read_note / write_note / append_note / search_notes / list_folder / get_properties / update_properties / ask_user
    • 双协议 tool-call(Anthropic tool_use + OpenAI function calling)
    • 写入类操作需要逐次批准,可「本次会话始终允许」;拒绝与失败都有明确反馈
    • ask_user:AI 在任务中途向你提问(含预设选项与自由输入),在聊天内直接作答
  • 笔记上下文@笔记 提及(搜索选择器)、当前笔记 / 选中文本自动附带、上下文预算截断
  • 图片输入:从 Vault 选择图片随消息发送(Anthropic 原生 image 块 / OpenAI 兼容 image_url,支持 png/jpg/webp/gif)
  • 斜杠命令:输入 / 呼出命令菜单(总结 / 改写 / 翻译 / 解释 / 继续 / 头脑风暴),上下键选择、Enter 确认
  • 记忆引擎:对话结束后后台蒸馏要点存入 .midian/memory/,积累后合并为长期画像,注入后续对话(可关闭、可指定便宜模型)
  • 会话管理:历史搜索(标题/模型/消息内容全文)、复制(fork)、回退上一轮(rewind)、删除、自动命名、点击标题重命名、导出对话为笔记(含图片嵌入与思考过程)
  • 消息编辑:点铅笔图标把最后一条用户消息取回输入框,改完重发
  • 自动标题:首轮对话结束后用模型生成简短标题(可回退为手动)
  • 模型切换器:聊天头部一键切换模型与 Provider,或输入自定义模型名
  • 代码块一键复制:AI 输出的代码块悬停/常显复制按钮
  • 欢迎页:未配置 API Key 时引导打开设置;显示最近对话快捷入口
  • 快捷命令:命令面板「总结/改写/翻译当前笔记」一键带模板打开
  • 系统集成:文件右键菜单「在 Midian 中讨论此笔记」、编辑器菜单「发送选中文本到 Midian」
  • 长对话保护:历史消息上限自动裁剪上下文,超出窗口也不崩
  • 连接测试:设置页一键测试 API Key 与端点(移动端排障友好)
  • 思考块折叠:支持 Anthropic thinking 与 reasoning_content(DeepSeek / Kimi 风格)
  • Persona:自定义系统提示词
  • i18n:简体中文 / English(跟随系统或手动切换)
  • 移动端适配:全屏视图、大触控目标、安全区适配、Enter 直接发送(IME 安全)

为什么是它

Obsidian 桌面端的 AI 插件几乎都依赖本地 CLI(Codex、Claude Code、Kimi CLI),这些在手机 WebView 里全部无法运行。Midian 把 Claude / OpenAI 兼容 API 直接搬进手机:不需要电脑在后台,不需要终端,AI 可以直接读、搜、写你的 Vault(写入需批准),并记得你们聊过什么。

安装(手动 / 开发)

通过 BRAT 安装(推荐尝鲜)

  1. 安装 BRAT 插件
  2. 命令面板运行 BRAT: Add a beta plugin for testing
  3. 输入 https://github.com/wuyifan-code/midian 并确认
  4. 新版本发布后,运行 BRAT: Check for updates

手动 / 开发

  1. 构建插件:

    npm ci
    npm run build
    

    设置 OBSIDIAN_VAULT 环境变量可自动拷贝到 Vault 插件目录。

  2. main.jsmanifest.jsonstyles.cssversions.json 放入 <vault>/.obsidian/plugins/midian/

  3. 移动端:通过 Obsidian Sync 同步插件文件夹,或直接把四个文件复制到手机 Vault 的对应目录。详细步骤(Android/iOS 手把手)见 docs/SIDELOADING.md

  4. Obsidian「设置 → 第三方插件」启用 Midian。

配置

设置 → Midian:

分组说明
ProviderClaude 或 OpenAI 兼容;API Key、Base URL、模型、Max Tokens
Persona自定义系统提示词,留空用默认
笔记上下文默认附带当前笔记、选区优先、上下文预算
Vault 工具开关工具调用
记忆开关记忆引擎、记忆模型

OpenAI 兼容端点示例:https://api.moonshot.cn/v1(Kimi)、https://api.deepseek.com(DeepSeek)。

关于流式与 CORS

Midian 优先使用 fetch 流式输出(逐字渲染);当端点不允许浏览器跨域(CORS)时,自动降级为 requestUrl 非流式请求——功能不变,只是回复一次到位。Anthropic 官方端点支持浏览器直连(已带 anthropic-dangerous-direct-browser-access 头);部分 OpenAI 兼容服务(如 DeepSeek)不开放浏览器 CORS,会走降级路径。可在设置页「测试连接」快速验证端点。

开发

npm run dev         # watch 构建(配合 OBSIDIAN_VAULT 自动拷贝)
npm run typecheck
npm test            # node:test 单测 + 集成 + 冒烟 + 对话流(109 个测试)
npm run build       # 生产构建(minify,~78KB)

移动端验证清单

完整的真机测试步骤见 docs/MOBILE_TESTING.md(基础 / 流式 / 工具 / 图片 / 上下文 / 会话 / 记忆 / 稳定性 / 输入法 / 代码块)。Android 与 iOS 各建议跑一遍。

许可

MIT。全新代码实现,仅借鉴 Claudian Plus 的会话存储与交互概念,不含其源码。

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.