Skip to content

让 Tana 和 Heptabase 协同作战

Published: at 04:09

作为 Heptabase 的忠实拥趸,我一直深信它是当下最好的笔记工具之一。今年三月,我还撰写了一篇题为《重新理解 Heptabase》的长文,详细阐述了为什么我会对它青睐有加,它如何让我能以中观视角(Mesoscopic Perspective)进行知识管理,巧妙架构笔记,有效掌控信息。

Heptabase 几乎成为了我所有笔记的归宿,从日常灵光乍现的想法,到阅读后的深度思考,再到关注的热点话题和兴趣领域的新洞见,无所不包。起初,一切都井然有序,运转顺畅。然而,当我的卡片数量突破 5000 大关时(算上 Journal 中的临时笔记、暂存笔记则更多),一个意料之外的「敌人」悄然而至——混乱。

这种混乱,恰如米缸中不慎掺入沙粒,想要筛出却无从下手。面对这一挑战,我开始了曲折、复杂的探索,希望能够找到一个相对合适的解决方案。这段探索的也意外的让我重新审视了自己的笔记习惯和流程,促使我思考如何更好地利用现有工具来提升知识管理的效率和质量。

Table of contents

Open Table of contents

「敌人」来了

随着笔记数量的增长,Heptabase 的一些局限性逐渐显现,犹如蛰伏已久的司马懿终于发动了高平陵之变。这些问题源于我的使用习惯,归于 Heptabase 目前功能上的不足。两者互相纠缠,最终让「混乱」兵临城下。

1. 功能缺失导致的效率瓶颈

比起直接使用白板,我更喜欢在 Journal 中做笔记(原因见《我如何使用 Heptabase 做笔记》)。但是,Heptabase 现在依然不支持 inline tag,这是一个从 2022 年就开始被用户反复请求的功能。作为一种变通,我不得不创建「#+标题」的卡片作为替代。这种权宜之计虽然可行,但与 Tana 的 SuperTag 或 Roam Research 的 inline tag 相比,仍有不小差距,效率和灵活性都大打折扣。Tana 的 SuperTag 以数据库形式呈现,与 Heptabase 的 Tag 系统颇为相似;而 Roam Research 的 inline tag 虽然外观上与 Heptabase 的「#+标题」卡片相仿,却额外提供了筛选功能。

2. 搜索功能的局限性

Heptabase 的搜索功能只能说是聊胜于无,也是让我感觉到混乱的关键因素。无论是我在 Journal 中进行表层思考还是需要在白板中进行深入思考,都不可避免的需要查找、复用、修改相关的既有笔记。可是在 Journal 和卡片页面,Right Sidebar 的检索功能十分简陋;白板页面的 Right Sidebar 功能稍齐,却依然无法通过 tag property 等方式进行高级检索;未添加标签的卡片更是难觅踪影。甚至,笔记工具最关键的功能 —— 全局搜索 —— 也同样不好用。这种局限性严重影响了笔记的检索效率和知识的关联。

3. 系统设计的割裂感

Heptabase 的 Map 和 Tag 两大系统在设计理念上存在割裂。例如,从 Right Sidebar 的卡片库选项中向白板添加卡片时,无法通过 tag property 进行筛选。同样,在 Tag 页面的 table view 中,我无法直观地看出哪些卡片已被归入特定白板,也无法通过 property 筛选白板。白板的 info 中也缺乏该白板包含标签数量的信息。

我理解 Heptabase 在设计这两个系统时考虑了不同的笔记匹配不同的管理方式,正如我在《重新理解 Heptabase》中所写的,「相得益彰的 Map 和 Tag 给了数据组织的多种可能」。但在使用中不可避免的需要同时让白板和标签之间产生紧密联系和相互支持的特性。

4. 操作流程的顿挫感

某些看似简单的操作,如 block reference,block embed 或查看 backlinks,在 Heptabase 中却显得繁琐。因为不能直接在编辑器中引用 block,所以需要先进行全局搜索,定位到想要引用的 block,然后复制该 block 的 link 到需要的地方进行粘贴。由于不能 embed,所以直接粘贴过来 block link 就只会显示成一条 URL。被引用过的 block 也不会有任何标记。

Heptabase 不支持 alias,例如我在研究佛经时,佛陀、世尊往往代指释迦牟尼,在笔记中如果要让「佛陀」这个词可以直接跳转到「释迦牟尼」这张卡片,就需要先选中「佛陀」,再选择 add link,搜索「释迦牟尼」,完成关联。还有一种方式是将「释迦牟尼」这张卡牌的标题写成「释迦牟尼 | 佛陀 | 世尊」,mention 后再删除掉,但实际操作时要删除其中不需要的,只能从后往前删,无法直接将光标定位到准确的位置。

这种操作上的顿挫感常常打断思考的连贯性,就像正在游戏中全神贯注、一顿操作猛如虎地冲击水晶塔,却突然被一通电话打断,瞬间失去了所有的节奏和激情。

5. 笔记关联的困难

在 Heptabase 中,未添加标签或未纳入白板的笔记很容易被忽视,Journal 中记录的笔记更是难以被利用。例如,某次阅读启发我思考「对传统的态度」,我在白板中写下了一张探讨「为什么中国人常说人心不古」的卡片,其中提到了这是一种认知偏差。事实上,我曾在 Journal 中记录了一条关于「衰落主义」的笔记可以与之呼应,但当时并未建立联系,因为这条笔记不是卡片,更遑论标签和白板了。笔记增多后,信息熵也指数级增长,由于缺乏有效的关联机制,许多本应可以在表层思考时就相互关联的笔记都未能及时建立联系。只能在进行深度思考时通过一系列手段将它们关联起来,这无疑增加了深度思考时操作的复杂性。

这一系列问题累积起来,造成了巨大的混乱。让我在使用 Heptabase 进行日常记录和表层思考时越发感到力不从心,也影响了我在白板中进行深度思考。做笔记时,我开始过度关注如何组织和标记,而非专注于思考本身。也渐渐混淆了表层思考和深度思考之间的界限。这种感觉让我回想起早年使用 Evernote 的经历 —— 表面上井井有条,实则一团乱麻。也越来越理解为什么笔记是一场无限游戏

作为一款以可视化见长的笔记工具,Heptabase 理应成为深度思考的利器,构建视觉化网状知识体系的绝佳平台。然而,目前的 Heptabase 在减少使用时的顿挫感、消除设计上的割裂方面还有很长的路要走。它尚未实现所有系统和功能的无缝协作,未能产生预期的 1+1>2 的协同效应。

因此,我意识到需要一个新的方案来突破这些限制。

寻找解决方案

面对混乱 —— 这个棘手的「敌人」—— 我开始寻求应对之策。

优化使用习惯

首先,我尝试优化在 Heptabase 中的使用习惯。一方面,我将所有适合的卡片纳入白板系统,为每个白板添加索引卡,也为未归入白板的卡片创建索引。这些索引卡被汇总到一个名为 MOC(Map of Content)的白板中,并固定在 Left Sidebar 以便快速访问。另一方面,我并没有依据卡片盒笔记法专门设计临时笔记的白板或标签,而是将临时笔记写在 Journal 中,然后 mention 标题为「#fleeting」的卡片,或者标记「$$ 可产生关联的卡片标题」。这些临时笔记和在 Journal 中暂存的笔记也加入到索引卡中。

然而,这种方法很快显露出其局限性。随着每天新增的笔记和卡片,我需要频繁更新索引卡,这个过程既耗时又繁琐。更重要的是,笔记的生命周期并不止于创建。它们需要持续的维护和更新:有些笔记可以合并以减少冗余,有些需要更新内容以保持相关性,还有一些可能已经过时,可以直接删除。于是我将使用频率较低的卡片导出到 DEVONthink 进行存档;合并相似主题的笔记,删除过时或冗余的内容。通过这些措施,我成功将卡片总数控制在了约 3000 张左右,Journal 中的临时笔记和暂存笔记也都建立了索引。

接下来,我开始着手合并索引卡,以进一步简化结构。然而,这个过程中又浮现出新的问题:随着索引卡内容的不断丰富,即便通过小标题进行了初步分类,其长度和复杂性也不可避免的增加,这无疑会加大快速查找和阅读的难度。

我也尝试了通过 Tag 系统来优化,为所有卡片添加至少一个标签,并通过 relation property 建立关联。然而,就在我沾沾自喜地以为找到了方法时,Alex 很快就给我泼了一盆冷水:

新增笔记是 O(1)。「更改元数据的定义」或者「添加新的元数据」都是 O(N) 啊。

更改元数据的定义:如果不修改之前的条目,那这列数据会逐渐熵增到不可用。

添加新的元数据:如果不修改之前条目,那么你的元数据就是稀疏信息了。

(推论:所以只要是 O(N) 对人类来说就是不能接受的。)

为之奈何?

寻找新工具

既然优化 Heptabase 的使用习惯这条路走起来磕磕绊绊,那么秉承着「世上无难事,只要肯放弃」和「只要思想不滑坡,办法总比困难多」的精神,我开始寻找其他的笔记工具,试图替代 Heptabase。

第一个被我想到的当然是 Obsidian。自从有了 Canvas 功能后,再加上琳琅满目的插件,它几乎可以完全替代 Heptabase。但当我将笔记导入后就发现了问题 —— Obsidian 是基于文件夹系统的。虽然在 Heptabase 中白板也相当于文件夹,但与真正的文件夹系统相比还是有不少区别。这让我盯着 Obsidian 半天不知如何下手,最终果断放弃了这个选择。

我的目光随后转向了六月份刚升级了 diagram 功能的 Roam Research。经过大约两三周的使用,我感觉它确实有潜力替代 Heptabase。其优势主要体现在七个方面:

  1. 搜索功能完全碾压 Heptabase。目前 Heptabase 的搜索功能只能说是聊胜于无。而在 Roam Research 上,搜索可以设置各种 field,还可以使用 query。

  2. 更优秀的 block reference 功能,以及 Heptabase 所没有的 block embed 功能。在 Heptabase 上,block reference 只能通过手动找到后使用 copy link to block 来引用,而且在被引用的 block 旁边也没有提示。对于我这种把 Journal 当作草稿纸的用户来说就很苦恼。

  3. inline tag 功能,尽管在 Heptabase 中可以通过创建以 # 开头的卡片来变通解决。

  4. 在 Roam Research 中,每一个 block 都是一个卡片(或页面),这在输入长笔记时更容易保持聚焦。修改时,可以只选中特定 block 打开,大大提高了便利性。我在 Heptabase 中写 blog 和 newsletter 时深有体会,如果不用小标题去分隔,修改起来会非常痛苦。

  5. 在 Heptabase 中,将 Journal 中的笔记转化为卡片需要慎重考虑。而在 Roam Research 中则无需有这种顾虑。

  6. 支持笔记库的加密,而 Heptabase 目前还没有这个功能。

  7. 提供 API,可以直接在 Raycast 上进行输入,也可以利用 API 进行其他操作(例如引入 AI 检索笔记库)。

突破

尽管 Roam Research 有这么多优势,我最终还是没有选择用它来替代 Heptabase。原因是在使用过程中我意识到:我并不需要一个完美的笔记工具,更不需要一个 all in one 的笔记工具,混乱的源头在于混淆了日常记录与知识管理的关系,以及表层思考和深度思考的关系。那么,我完全可以同时使用两个笔记工具,让它们协同作战。因此,集合 Roam Research 和 Notion 的优点于一身的 Tana 反而成为了最佳选择。

协同作战

确立了两个笔记工具协同应对「敌人」的思路后,我着手更新我的笔记工作流。关键在于明确 Tana 和 Heptabase 各自的职责分工。

回顾今年第二十一期电子报中分享的笔记工具选择思路,当时我还将 Tana 视为 Heptabase 的完全替代品。然而,如果我转变思路,将 Tana 用于日常记录,而保留 Heptabase 作为深度思考和知识管理的平台,这就开辟了一条全新的协作路径。

在《LifeOS 2.0》一文中,我介绍了「CETDE 框架」,这个框架描述了从信息接收到知识输出的完整过程:

基于这个框架,Tana 和 Heptabase 的分工变得清晰:

这种分工充分利用了两个工具的优势:Tana 的 SuperTag 具有足够的灵活性,移动端的 app 能够收集包括声音、文字、图像等多种类型的内容,非常适合日常记录和初步整理,而 Heptabase 的 Whiteboard 系统则更适合深度分析和知识体系构建。通过这种协同作战的方式,可以最大限度减少摩擦,实现从信息收集到知识创造的无缝过渡。

新的工作流程如图所示:

当我在 Tana 中记录的笔记需要转入 Heptabase 进行深度思考时,就进行以下步骤:

  1. 标记任务:在 Tana 中为目标笔记添加 “T&H” 标签,明确标识需要进行深度思考的内容。

  2. 生成 Tana 笔记链接:复制该笔记在 Tana 中的 node link,为后续跨平台引用做准备。

  3. 准备深度思考的环境:在 Heptabase 中创建新白板或打开相关的既有白板,为深度思考搭建基础。

  4. 记录转移过程

    1. 在 Heptabase 的 Right Sidebar 中打开当天的 Journal。

    2. 粘贴之前复制的 Tana node link。

    3. 使用 mention 功能关联当前工作的白板,建立上下文联系。

  5. 生成 Heptabase 记录链接:复制刚才在 Heptabase Journal 中创建的 block link。

  6. 完成双向关联:将 Heptabase 的 block link 粘贴回 Tana 中的原始笔记,实现双向引用。

这种方法的优势在于充分利用了 Tana 和 Heptabase 都能在 Web 端完整运行的特性。通过建立这种双向链接,我可以在两个平台之间自如跳转,无缝衔接表层思考和深度分析过程,确保了思考的连贯性和知识的整合性。

更重要的是,这个工作流还实现了一个「简 → 繁 → 简」的循环过程:

这个循环不仅完成了知识处理的完整过程,还践行了费曼技巧的核心理念,帮助我更好地理解、简化复杂概念,并识别知识盲点。

通过这种协同作战的方式,我不仅克服了单一工具的局限性,还创造了一个更加灵活、高效的知识管理生态系统。这个新的工作流程为我应对「混乱」这个敌人提供了强有力的武器,让我能够在保持思考深度的同时,不被繁琐的组织工作所困扰。

至于工作流中所涉及到的其他软件,如 Readwise,DEVONthink 等,它们并不具备全局性意义,只是负责其所在流程的职责而已。例如,Readwise 仅承担信息收集和阅读的功能,DEVONthink 只承担备份的功能。

克敌制胜

Tana 与 Heptabase 协同作战工作流是否能让我彻底摆脱「混乱」这个顽固、狡猾的敌人?坦诚地说,我无法给出百分百的肯定答复。毕竟,知识管理和思维组织是一个持续演进的过程,不存在一劳永逸的解决方案。

然而,这个创新的工作流无疑为我开启了一扇新的大门,展现了一条充满希望的道路。虽然我不能断言这个工作流会彻底消除所有的混乱,但它确实提供了一个强大的框架,使我能更有效地管理和利用笔记。

这个工作流的真正价值并不在于能否立即消除所有混乱,而在于它针对性地规避了使用 Heptabase 时遇到的诸多挑战:

通过这种创新的协同方法,我不仅跳脱出单一笔记工具的局限性,还创造了一个更加灵活、高效的知识管理生态。新的流程为我应对「混乱」提供了一个明确可行的解决方案,让我能够在保持思考深度的同时,不被繁琐的组织工作所困扰。

总结

这一次曲折、复杂的探索过程,不仅让我对工作流进行了优化,也对知识管理的本质有了更深的思考。通过一系列的尝试、失败和突破,我得到了这些启示:

最后,我想强调的是,对 Heptabase 的吐槽,并非有多少不满,反而是「爱之深,责之切」。如果它不好,我何必要用它,又何必要继续在工作流中保留它呢?实际上,这一轮的优化和调整中,我又尝试了一些笔记工具,有从来没有用过的,也有之前用过但放弃了的。可以毫不讳言,在进行深度理解方面,Heptabase 依然是最佳选择。只不过,好钢还需用在刀刃上。