☰
让知识库自己的运转:ZenNotes 可视化工作流管道与事件触发器完全指南
2026/10/3 7:32:31 网站建设 项目流程

让知识库自己的运转:ZenNotes 可视化工作流管道与事件触发器完全指南

【免费下载链接】zennotesKeyboard-first local Markdown notes with Vim motions, diagrams, and MCP integration.项目地址: https://gitcode.com/gh_mirrors/zenn/zennotes

ZenNotes 是一款键盘优先的本地 Markdown 笔记应用,而它的**工作流(Workflows)**功能可以让你用可视化画布或纯文本方式,把"查找笔记 → 筛选 → 批量修改 → 写入报告"这类重复劳动变成一条可复用的自动化管道;从 2.55 版本起,事件触发器还能让管道在你保存、新建或移动笔记时自动运行。本文带你快速理解这套"让知识库自己运转"的完整机制。

工作流是什么:一个 Markdown 文件 = 一条自动流水线

每条工作流都是存放在.zennotes/workflows/下的一个普通.md文件:头部是 frontmatter(名称、触发方式、快捷键),正文是"一行一条管道"。它的设计哲学只有一条:线(wire)上流动的是笔记集合——每一段管道把一组笔记变换成另一组笔记,所以:

  • 🧩调试免费:画布上每条线都实时显示当前有多少条笔记流过,点一下就能查看清单;
  • ⚡️Dry-run 免费:筛选与读取不会改动文件,只有"改写/输出"节点才写盘,因此任何管道都能先预览完整 diff 再执行;
  • ✍️画布与文本无损互转:布局由引擎自动计算,文件里没有坐标,键盘编辑器和可视化画布是同一份内容的两种视图,还能随 Vault 一起同步、diff。

一条典型管道长这样(=命名一条线,|把步骤串起来):

books = tag #book good = books | where rating >= 4 | sort finished desc good | render table title, rating, finished | write-section "inbox/Reading Log.md" "Finished"

没有分支语法:两条语句引用同一条线,就自然形成分叉。完整的设计推演见 docs/ideas/workflows.md。

8 个内置模板:从"阅读日志"开始上手

ZenNotes 内置了 8 个开箱即用的模板(在 Workflows 视图点New workflow即可复制到你的 Vault),覆盖"回顾 / 清理 / 捕获 / 报告"四类场景:

模板作用快捷键
Reading log把 #book 笔记按评分生成阅读日志表格<leader>wr
Inbox triage给一周未动的收件箱笔记打上 #triage<leader>wi
Weekly review列出近 7 天改动,写入回顾笔记<leader>ww
Open loops汇总所有仍写着 TODO 的笔记<leader>wo
Archive finished projects把 status: done 的项目归档<leader>wa
Unfiled notes找出没被主标签认领的笔记<leader>wu
Tag cleanup把一个标签整体合并进另一个标签<leader>wc
Meeting index维护一份按时间排序的会议索引<leader>wm

模板本身也是普通工作流文件,打开就能读、就能改——"运行 → 偷看 → 调一个筛选 → 自己写"就是官方推荐的学习路径。模板定义在 packages/shared-domain/src/workflows/presets.ts,每个模板开头都有一段人话注释解释整条管道在做什么。

节点词汇表:八类步骤覆盖"找、筛、排、变、写"

全部约 30 个节点按 8 类组织,注册表定义在 packages/shared-domain/src/workflows/nodes.ts:

类别代表节点一句话说明
数据源 Sourceall、folder inbox、tag #book、search、current、selection打开一条管道,给出一条笔记集合
筛选 Filterwhere rating >= 4、tagged/not-tagged、contains TODO、since 7d只留符合条件的笔记
排序 Ordersort updated desc、limit 25、dedupe控制顺序与数量
塑形 Shapeunion、subtract合并或相减两条命名线
修改 Mutateset status done、add-tag、move、rename、archive批量改写线上的每条笔记(必过 dry-run 确认)
渲染 Renderrender table、render list、render links、count把集合变成一段可写入的文本
输出 Sinkwrite-section、write-note、clipboard把结果落到笔记、区段或剪贴板
编排 Compose调用另一条工作流子调用图必须是 DAG,保存时检测环路

刻意缺席的能力:没有代码节点、没有 Shell、没有网络请求——这意味着一条你没写过的工作流也是安全可读、可运行的。

事件触发器:保存笔记的瞬间,知识库自动整理

从 2.55 版本起,给工作流设置事件触发即可让它"自己跑",支持四种事件:

  • trigger: on note-saved—— 笔记保存后(连续自动保存会防抖合并成一次运行,约 1.5 秒后触发)
  • trigger: on note-created—— 新建笔记时
  • trigger: on note-moved—— 移动、重命名、归档、移入/移出回收站时(按新路径触发)
  • trigger: on tag-added—— 某次保存为笔记新增了标签时

事件触发有几个对新手很关键的安全语义(详见 packages/app-core/src/lib/workflow-trigger.ts 与 packages/app-core/src/lib/help.ts):

  1. 每次运行只看被改动的那条笔记:all、folder、tag等数据源都会收缩到这条笔记上,所以all | contains type: topic | move Topics的意思是"这条笔记如果声明自己是 topic 就归入 Topics",而不是每次保存都全库扫描;
  2. 后台运行永不弹窗:正在编辑且有未保存改动的笔记会被跳过并给出轻提示,而不是打断你的输入;
  3. 每设备总开关:在 Settings → 工作流相关设置里可以一键静默本设备的所有事件触发器(对应 packages/app-core/src/components/SettingsModal.tsx 中的选项);工作流自身则用trigger: manual或status: draft单独静音。

安全设计:先预览、再执行、可整次撤销

这是"让软件批量改我的笔记"这件事能不能被信任的关键,ZenNotes 给出的答案是:

  • ✅默认 Dry-run:含修改节点的工作流执行时先展示完整 diff,确认后才落盘;
  • ↩️整次运行一键撤销:每次运行都会记录所有文件的运行前字节,一个u撤销整次运行,而不是逐节点回退;
  • 📒运行台账在磁盘上:写入记录在.zennotes/workflows/.runs/下(路径、内容哈希、工作流、时间戳),既防止"写入→触发事件→再写入"的无限循环,也保证跨同步循环可控;
  • 🛡️部分失败自动回滚:管道中途出错时,默认连同已成功的步骤一起回滚——"半吊子应用"比"完全没应用"更难推理;
  • 🔕永不静默:任何改动了文件的运行都会留下可见、可撤销、可关闭的记录。

键盘操作速查(Vim 键位第一天就有)

画布布局是计算出来的,所以全程无需拖拽,纯键盘即可完成编辑:

按键动作
j/k沿管道链移动上/下一个节点
h/l横移到兄弟分支
o/O在下方/上方插入节点并自动接线
dd删除节点并自动修复连线
/按名称跳转到节点或线
gp预览当前线上流过的笔记
<leader>wdDry-run 查看 diff
<leader>wr运行工作流
u撤销整次运行

新增键位需在 packages/shared-domain/src/keymaps-catalog.ts 注册,并支持从config.toml覆盖。

三步上手清单 🚀

  1. 跑一条模板:打开 Workflows 视图 → New workflow → 选 "Inbox triage" → 运行,先看 dry-run diff 再确认;
  2. 改一个筛选:把#project换成你自己的归档标签,体验"读得懂 → 改得动";
  3. 加一个触发器:给一条纯整理类工作流写上trigger: on note-saved,从此保存即归档。

小贴士:status: draft的工作流不会被触发器唤醒;想停掉某条管道,把触发方式改回trigger: manual即可。手动运行则永远可用(命令面板、快捷键或右键多选)。

引擎与解析器源码分别在 packages/shared-domain/src/workflows/engine.ts 和 packages/shared-domain/src/workflows/parse.ts,主进程侧的应用逻辑在 apps/desktop/src/main/workflow-apply.ts。没有代码节点、没有网络节点,是这条"信任阶梯"从第一天就立下的边界——也是你敢于让自动化真正接管知识库的底气。

【免费下载链接】zennotesKeyboard-first local Markdown notes with Vim motions, diagrams, and MCP integration.项目地址: https://gitcode.com/gh_mirrors/zenn/zennotes

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询