这么多年了,Org-mode 的 Tag 一直不进化,让人用不下去。而且,用 Agenda 来过滤标签,很快就陷进性能瓶颈。
这两天看了 Tana 的介绍视频,以及详细地了解了 Tana 的 SuperTag 机制。
觉得可以基于 Org-mode 基础特性,实现类似 Tana 的 SuperTag 机制。
该包暂时命名为 org-supertag。我会在这里记录关于该包的思考。
这么多年了,Org-mode 的 Tag 一直不进化,让人用不下去。而且,用 Agenda 来过滤标签,很快就陷进性能瓶颈。
这两天看了 Tana 的介绍视频,以及详细地了解了 Tana 的 SuperTag 机制。
觉得可以基于 Org-mode 基础特性,实现类似 Tana 的 SuperTag 机制。
该包暂时命名为 org-supertag。我会在这里记录关于该包的思考。
SuperTag 的机制:
Node。是 Tana 的基本信息单位,基本上一个圆点+一段字符,就是一个 Node。每个 Node 都可以单独展开为独立的页面。
SuperTag。Node 因 SuperTag 而变得不同。没有了 SuperTag 的 Node 就是一个圆点+一个字符。
Field。是 SuperTag 机制的核心,扮演 3 个角色:记录属性,命令触发器,AI 启动器。
纵览以上,可以发现,Org-mode 已经实现大部分 Tana 的基础特性:
目前,我已经简单的实现了 Field 的 “记录属性” 的特性:
AI 命令 是啥?
一个触发机制,一个 Node 和一个记录了 AI Prompt 的 SuperTag 组合。
此时,可以将 SuperTag 当作按钮,点击后,AI 会自动将 Node 当作输入,然后自动输出内容。
跟你在聊天窗口里的效果差不多。
换言之,此时的 Node 变成了一个可执行的对象。
org-supertag 的第一个应用场景,就是阅读 org-mode 的更新说明。
每一次读起来都非常头痛,完全不结构化。
同一个 org-store-link 的更新说明,散落在不同的地方…
非常需要用 org-supertag 标记好,然后再汇总输出
org-supertag 的数据结构
有点头痛,到底是 哈希表 只用于储存映射关系,还是用 哈希表 储存所有相关的数据?
最终决定,使用 中间表 + 分表 的方式。以适应 org-supertag 多数据实体(file、tag、field、node),多种关系(一对多,多对一),以及未来可能针对新的功能,所预留的拓展性。