我做了一个 Obsidian 插件 AnyAI:让 AI 真正进入笔记工作流,但每次改动都必须先经过我同意
在 IDEA 里用久了 Copilot 之后,我越来越习惯一种体验:AI 不是单独开个聊天框,而是直接嵌进工作流里,理解上下文、参与当前任务、在恰当的时候给出补全和建议。
后来我想把这种体验搬到 Obsidian 里。
结果找了一圈,发现现有方案大多走向两个极端:要么是“直接补全型”,要么是“纯问答型”。都能用,但都没完全打到我真正想要的点。
于是,我自己动手做了一个 Obsidian 插件:AnyAI。
它想解决的问题其实很明确:
让 AI 像 Copilot 一样真正参与笔记工作流,但又不能绕过用户直接改内容。
为什么我觉得现有 Obsidian AI 插件还差一点意思?
1. 直接补全型:效率高,但不够安心
第一类插件主打“直接往文档里写”。
这类方式最大的优点当然是顺滑,AI 生成完内容就进文档,交互成本很低。但问题也很明显:
- AI 到底改了什么,不够直观
- 删除了哪些句子、补了哪些表达,很难第一时间看清
- 对代码也许还能接受,但对长期积累的笔记内容,这种“不透明修改”其实挺危险
尤其是 Obsidian 这种工具,很多人放进去的不是临时文本,而是自己的知识库、思考过程和长期沉淀。 如果 AI 直接下手改,而你只能凭感觉判断“好像哪里不一样了”,这会让我很不踏实。
2. 纯问答型:安全,但没有真正进入工作流
另一类插件则更像是把一个 AI 聊天窗口塞进 Obsidian。
这种方式也没问题,适合问答、总结、解释概念。但它的局限也很明显:
- 需要自己复制上下文给 AI
- 需要自己组织问题
- 需要自己把结果贴回笔记
- 最后修改还是得手动完成
它本质上还是“在 Obsidian 里聊天”,而不是“让 AI 参与 Obsidian 的编辑过程”。
我真正想要的,其实是中间态
我想要的体验,大概是这样:
- AI 能读取当前笔记,理解上下文
- 能帮我续写、改写、整理、总结
- 能在必要时主动调用工具,而不是只会嘴上回答
- 但绝不能悄悄直接改文件
- 真正写入之前,我必须明确看到它改了什么
- 最终是否接受,决定权必须在我手里
也就是说,它要像 Copilot 一样“进入工作流”,如果修改必须经过人为确认。
AnyAI 就是在这个思路下做出来的。
AnyAI 现在能做什么?
1. 两种模式:Ask 和 Agent
目前插件提供了两种核心模式:Ask 和 Agent。
Ask 模式:适合常规问答和轻量处理
如果你只是想做一些普通 AI 交互,比如:
- 帮我总结这段笔记
- 把这段话改得更口语化一点
- 解释一下这个概念
- 帮我润色一下标题
那直接用 Ask 模式就够了。
它更像一个上下文感知的聊天助手,但工作场景是围绕当前笔记展开的,不需要你频繁跳出编辑流程。
Agent 模式:让 AI 真正“下场干活”
如果说 Ask 模式是在“回答你”,那 Agent 模式更像是在“帮你做事”。
在 Agent 模式下,AI 不只是输出一段文字,它可以调用工具来完成一系列动作,比如:
- 读取当前笔记
- 搜索整个知识库
- 列出文件
- 基于上下文生成准备写入的内容
这意味着它不再只是一个聊天框,而是开始真正参与笔记整理和知识管理流程。
对我来说,这才是 Obsidian 里 AI 插件应该有的方向。
2. 改文件前必须先看 Diff
这是我最在意、也最想优先做好的功能。
AnyAI 在需要修改文件时,不会直接覆盖原文。
它会先弹出一个 Diff 预览,把改动完整展示出来:
- 左边是删除了什么
- 右边是新增了什么
- 每一处变化都清清楚楚
你不需要再猜它是不是偷偷动了某一句,也不需要切回历史记录慢慢比对。 所有改动都在提交前被明确展示。
更重要的是,交互上也做了细粒度控制:
- 可以逐块
Accept - 可以逐块
Discard - 可以一键全部接受
- 也可以一键全部丢弃
这套机制的核心目标只有一个:
让 AI 具备执行能力,但不拥有最终决定权。
我觉得这对于笔记类场景非常重要。 因为在知识库里,“可控”很多时候比“自动”更重要。
3. Tab 补全 + 灰色预览,尽量还原 Copilot 的手感
后来我又继续往“工作流内体验”这条路上补了一步:加了 Tab 补全。
现在的交互大概是这样:
- 在编辑器里触发补全后,先出现一段灰色的 ghost text
- 按一次
Tab,接受建议 - 按
Esc,取消建议
同时也支持自动预览:
- 当你停笔一小会儿,AI 会自动给出建议
- 你觉得合适,就按
Tab收下 - 不合适,直接忽略就行
这个体验非常适合:
- 写长文档
- 整理读书笔记
- 补充会议纪要
- 扩写思路草稿
- 优化表达
相比“问一句、等一段、复制一下、再贴回去”的方式,这种交互更自然,也更接近我在 IDE 里已经习惯的节奏。
4. 模型接入尽量开放,不绑死单一平台
另一个我不想妥协的点,是模型接入方式。
现在很多 AI 工具的问题不是功能不够,而是“绑定太死”: 只能接某一家模型、某一种 API、某一个服务商。
AnyAI 在这块尽量做开放兼容。
目前支持的接入方式包括:
- OpenAI 兼容接口
- Responses API
- Anthropic
- Gemini
- Ollama
- LM Studio
- 各类中转服务
也就是说,不管你想怎么用都可以:
- 接官方 API
- 接本地模型
- 接第三方平台
- 接兼容 OpenAI 协议的服务
这个设计背后的思路也很简单:
插件应该服务你的工作流,而不是反过来强迫你适应某个模型供应商。
我做 AnyAI 时,最想守住的一个原则
如果让我用一句话概括 AnyAI 的设计原则,那就是:
AI 要足够主动,但边界必须清晰。
它应该能帮你读、帮你想、帮你写、帮你整理。 但它不应该绕过你,直接替你决定知识库里最终保留什么内容。
尤其是在笔记场景里,AI 的角色更适合是“协作者”,而不是“接管者”。
很多工具强调的是“自动化程度”,而我更在意的是另一件事:
高频使用时,你敢不敢放心把它留在自己的工作流里。
如果一个插件每次都让我担心“它到底动了什么”,那它再聪明,我也很难长期依赖。 而如果它足够透明、足够可控,那我才会愿意真的把它变成日常写作和整理的一部分。
安装方式
目前项目已经开源,直接访问下面这个仓库即可:
https://github.com/DevKPro/AnyAI
安装方式也比较简单:
- 下载项目
- 放到 Obsidian 的
plugins目录 - 在 Obsidian 里启用插件
- 配置你自己的模型接口
- 开始使用
最后
AnyAI 还在持续迭代中,但它已经基本实现了我一开始最想要的那个方向:
- AI 不只是聊天
- AI 真正进入笔记工作流
- 但每一次写入都必须透明、可见、可确认
如果你也希望在 Obsidian 里获得更接近 Copilot 的体验,同时又不想让 AI 悄悄改你的笔记,可以试试看:
https://github.com/DevKPro/AnyAI
如果你觉得这个思路有点意思,也欢迎顺手点个 Star,也欢迎共同参与插件的维护~