KnowFlow 是一个 Obsidian 插件,把 AI 文章整理、摘要、知识图谱和测验直接接进笔记环境。它要解决的是一件事。学习流程不应该依赖在工具之间来回跑。

几个月前,我写过一篇《从 Notion 迁移到 Obsidian 后,我如何用 Codex Skills 重构知识管理》

当时我拆了四个 skill:

  • clipping-update:清洗网页剪藏
  • daily-learning:挑选当天值得读的文章
  • study-outline:生成知识图谱
  • study-quiz:根据文章出题

这套流程能跑,但我觉得还远远不够。不是 skill 不好用,而是每处理一篇文章,我都要离开 Obsidian,打开 Codex,告诉它文章的名字,等处理完成后再切回来。画知识图谱要重复一次,生成测验又要重复一次。

文章明明就在眼前,我却要去另一个工具里重新描述它。

这几次切换看起来不算什么,但它让学习变成了一串需要记住的命令。只要哪天不想折腾,流程就停在剪藏这一步。

所以八月初,我把它做成了一个 Obsidian 插件,叫 KnowFlow。目前版本是 0.1.0,等更新到1.0.0后开源出来。

打开 KnowFlow 侧边栏,默认看到的是文章与学习状态总览。待读文章、当前学习进度、剪藏统计和文章分类都集中在这里。

1. 同一个侧边栏,会跟着当前笔记切换

KnowFlow 不是把所有功能堆在一个固定面板里。侧边栏会根据 Obsidian 当前的文件和目录切换上下文。

选中 Articles 目录时,显示的是 Task Overview。这里汇总文章总数、已学习和待读数量,也会显示本周进度、待整理剪藏以及各分类的学习情况。0.1.0 先把分散在笔记里的状态集中起来,今日任务调度和薄弱知识点会在后续版本继续完善。

打开 Clipping 目录中的文章时,侧边栏切换到 Clipping Assistant。这个页面负责生成摘要和阅读建议、运行格式整理流水线,并把处理完成的文章移动到对应分类。

打开 Articles 中已经归档的文章时,侧边栏变成 Article Assistant。摘要、阅读价值和学习状态会继续显示,但主要动作变成生成知识地图、生成试题和开始测试。

进入测试后,侧边栏直接显示 Quiz 页面。每道题提交后立即显示正确答案和解析,完成整组测验后,结果写回对应的 Markdown 文件。

Clipping 和 Article 页面底部还有一个带当前文章上下文的对话框。它默认知道正在阅读哪篇笔记,对话可以查看历史,也可以保存回 Note,不需要再次手工传递文件名。

1
2
3
4
选中文章目录 → Task Overview
打开剪藏文章 → Clipping Assistant
打开归档文章 → Article Assistant
开始测试 → Quiz

原型图如下:
KnowFlow原型图

这套上下文切换对我很重要。原来的 skills 也能完成整理、图谱和测验,但每一步都要先告诉 Codex 当前处理的是谁。现在文件本身就是上下文,打开文章也就同时进入了下一步工作。

2. Clipping Assistant:把新文章变成可学习状态

Clipping 是一篇文章进入 KnowFlow 的起点。打开刚剪藏的文章后,侧边栏会先生成摘要、阅读价值和精读、略读或跳过的建议,再提供格式整理和分类移动。

这个页面也是开发中返工最多的地方。第一版能跑,但很快暴露了三个问题:模型处理的原文范围太大,难以确认它有没有改动内容;摘要和测验都堆在 data.json,容易和笔记失去同步;多个操作同时写同一篇文章时,后完成的操作可能覆盖前一个。

现在的实现先由程序识别代码和标题候选,再让 AI 返回 keepwrap-codeheadingset-code-language 这类结构化决定。确定性的格式修复由规则完成,AI 只处理需要上下文判断的部分。

1
规则清理 → AI 判断候选 → 局部替换 → 补全 frontmatter → 校验后写入

代码重排是受限制的例外。AI 可以修复被剪藏挤坏的换行和缩进,但重排前后的非空白字符必须完全一致,否则结果会被丢弃。英文翻译则是用户主动开启的独立步骤,不属于默认格式修复。

写入时还有三层保护:同一篇笔记的操作排队执行;处理期间文件被用户改过就放弃写入;代码围栏或数学块没有闭合时拒绝落盘。

原来的 skill 也被保留下来。用户可以在 skills/clipping-repair.md 中补充允许和禁止的规则,但不能删除插件内置的核心约束。skill 负责告诉模型什么可以做,程序和 validator 决定它实际上能改什么。

同时,我把摘要、阅读价值和学习状态搬进 frontmatter,把测验保存成独立的 Markdown 文件,在源文章中保留链接。data.json 只记录必要的运行状态。这样即使以后不用 KnowFlow,这些学习产物仍然留在笔记库里。

模型可以使用本地qwen3.5-9b模型。

3. Articles Overview:先决定下一篇读什么

当我没有打开具体文章,或者选中 Articles 目录时,KnowFlow 显示的是整个文章库的概况。

页面会统计文章总数、已学习和待读数量,也会把剪藏区里待整理、已摘要和高价值的文章汇总出来。分类统计则让我看到每个主题还有多少文章没有处理。

Overview 还会根据设置中的每日新文章和复习数量,给出当天的任务规模。当前 0.1.0 主要完成了状态聚合,完整的任务编排、薄弱点推荐和正确率统计还会继续完善。

这个页面解决的不是”怎么读”,而是文章越来越多以后,先从哪里开始。

4. Article Assistant:围绕当前文章继续学习

文章从 Clipping 移到 Articles 后,侧边栏会自动从整理页面切换为 Article Assistant。

这里不再展示清理流水线,而是读取笔记中的摘要、阅读价值和学习状态,并提供两个后续动作。

一个是 Knowledge Map。AI 根据文章结构选择合适的 Mermaid 形式,生成后直接插入原文的 ## Knowledge Map 区块。以后重新打开文章时,可以先从图恢复结构,再决定是否重读正文。

另一个是 Quiz。页面会显示已有题目数、正确率和错题数,也可以重新生成试题或直接开始测试。摘要、图谱和测验没有被留在一个独立的 AI 界面里,它们最终都回到当前文章及其关联的 Markdown 文件。

5. Quiz 和上下文对话:在文章旁边完成验证

Quiz 不是弹出一个外部网页,而是直接接管侧边栏。每次显示一道题,提交后立即标出正确答案并给出解析,再进入下一题。题目按文章章节分批生成,测验文件保存在 Archives,结果和学习状态可以从源文章继续追踪。

Article Assistant 和 Clipping Assistant 底部都保留了上下文对话框。当前笔记会自动作为对话上下文,适合追问某个概念、要求解释代码或比较文章里的两个观点。对话支持历史记录,也可以保存成 Markdown 笔记。

这个对话框并不替代摘要、图谱和测验。前者处理临时问题,后者把可重复的学习动作固定成按钮,两种方式共享同一篇文章的上下文。

6. 现在还不够完善的地方

KnowFlow 目前只是 0.1.0,还有一些边界没有解决:

  • Markdown 校验只覆盖代码围栏和数学块,不是完整的语法解析器;
  • AI 判断仍然可能出错,只是修改范围受到限制;
  • 不同网站剪藏出来的格式差异很大,目前的规则主要来自我自己的文章库;
  • 插件依赖兼容 OpenAI API 的模型服务,配置成本还没有消失;
  • 还没有在大型笔记库和更多 Obsidian 版本上做充分验证。

因此我暂时不会把它描述成一个”自动整理一切”的工具。它更像是把我原来的学习流程接进 Obsidian,再给最危险的文件修改加上几道护栏。

7. 现在和以前,差别在哪

以前跑完一篇文章的整理,流程是这样的。

打开 Codex,告诉它文章名字,等它处理完,切回 Obsidian 看结果。画知识图谱,再切到 Codex,再等,再切回来。生成测验,再重复一遍。

现在打开文章,侧边栏里点一下整理,格式当场变干净。看完摘要和阅读价值,决定要不要精读。读完点一下知识地图,图直接插进正文。最后生成测验,做完标记通过。全程不离开 Obsidian,不需要在任何一个工具里重新描述当前文章。差别不在功能本身,整理、图谱、测验,skill 时代也能做。差在那些来回不见了。

KnowFlow 目前是 0.1.0,主要验证一件事:AI 工作流能不能和 Obsidian 自然地长在一起,而不是作为一个需要手动启动的外部步骤。如果你也有类似场景,有几个方向我很想听反馈。哪些整理规则适合加入默认规则,哪些 AI 工作流值得集成,在大 Vault 上跑起来有没有问题。