

本文超过两万字,系统梳理了笔记系统的冗余设计、优点及实施思考。建议收藏后按需分章节阅读。
在数字笔记时代,我们有很多种方式来组织和管理我们的知识。然而,即使拥有最先进的工具,我们仍然面临着找不到重要信息或遗忘关键笔记的挑战。本文将探讨如何通过构建一个冗余系统来提高我们的第二大脑的可靠性和灵活性,让信息真正为我们所用。
冗余的本质:不是目的,而是手段
首先,我想强调的是,冗余从来都不是目的;冗余带来的可靠性和系统的灵活性,才是根本的目的。
想一想 SpaceX 的飞船设计:它们配备了多个发动机,确保即使其中一个发生故障,飞船仍然能够安全点火和发射。这不是浪费资源,而是一种安全机制。同样地,在我们的日常生活和工作中,我们常常准备备份计划,这本质上也是冗余的体现。
无论是航天飞机还是个人笔记系统,冗余的核心价值在于:当一个元素失效时,其他部分可以起到补充作用,保证整个系统的顺利运行。这就是我们今天要探讨的核心:如何在笔记系统中实现冗余,从而提高整个系统的可靠性。
打造冗余笔记系统的方法
这一节我会从文件夹、标签、链接、笔记命名、时间戳等角度来介绍如何打造一个冗余的笔记系统。其中,关于文件夹、标签、链接方面,我在之前的一篇文章中有详细的介绍,这里就不过多展开。感兴趣的读者可以到那篇文章中去了解。
文件夹:基础的组织结构
文件夹是最基本也是最直观的组织方式。在设计文件夹结构时,可以考虑以下几点:
- 不同类型的文件夹:可以根据工作和生活重心、项目、状态等创建不同类型的文件夹
- 大致分类:文件夹应该起到大致分类的作用,不必过于精细
- 适度嵌套:不建议使用过多的嵌套层级,因为这会显著增加系统的复杂性
文件夹的作用是提供一个基础的结构框架,让我们能够在视觉上快速定位笔记的大致位置。
其实,文件夹结构的设计其关键不在于文件夹数量的多少或者层级结构的深浅。更加本质的问题在于:无论你采用什么样的文件夹结构设计,都能够在需要的时候通过文件夹找到对应的笔记;而这或许这比形式上的文件夹数量或者层级结构更加重要。因此,在设计文件夹结构时,我们应该牢记目的,而不应该本末倒置。
具体来说,我们可以采用大致的文件夹分类结构,并使用必要的子文件夹来细分主题。实际上,在命名文件夹时,我也采用与命名笔记时类似的策略。例如,假如某个文件夹包含归属于某个项目的笔记,该文件夹的命名就可以包含“Project”前缀以及表示该项目名称的关键词。这样,在文件夹列表中按照字母排序时,可以非常方便地看出哪些文件夹是关于项目的,以及这些项目包含哪些内容。
然而,仅仅依靠文件夹是不够的,我们需要更多的冗余机制。
标签:灵活的分类系统
标签提供了比文件夹更灵活的分类方式,可以跨越文件夹的限制,从多个维度对笔记进行分类:
- 不同类型的标签:可以创建表示主题、状态、优先级、项目等不同类型的标签
- 按需创建:根据实际需要谨慎创建标签,避免标签过多导致系统混乱
- 标签组织:使用相同前缀、嵌套标签等方式来减少混乱
在我的系统中,标签的创建相比于链接要更加随意一些。虽然我不鼓励滥用标签,但相比链接,我对标签的使用要宽松一些。实际上,我使用标签主要是用来划分主题或标识任务;而且我会根据实际情况谨慎创建标签,因为添加过多标签可能会对未来重新利用标签和发现笔记带来困难,标签本身的管理也会变得比较混乱。
链接:建立明确的关联
链接是建立笔记之间明确关系的方式,应当谨慎使用:
- 明确关系:只在需要建立一对一、明确关联的情况下使用链接
- 不同类型链接:可以链接到项目页面、入口笔记、相关笔记等
- 避免过度链接:不要为每个关键词都创建链接,这会导致系统过于复杂
我对链接的使用比标签更严格。什么情况下需要采用链接呢?比如将一个笔记和另一个笔记链接起来;或将一个笔记链接到某个任务中;或者将某个任务链接到某个笔记中。只有在这种必须要使用一对一、建立严格联系的情况下,我才会创建链接。这种严格的标准确保了我的链接系统不会过于复杂。
笔记命名:提高可发现性
笔记的命名是一个经常被忽视但非常重要的冗余层面。一个设计良好的笔记名称可以大大提高其可发现性:
- 关键词:使用能体现笔记核心内容的关键词
- 前缀:对于特定类型的笔记(如会议笔记),使用统一的前缀(如”Meeting")
- 人名:如果笔记与特定人物相关,比如,和某人讨论了一些事情,则可以在名称中包含该人的名字
- 后缀:对于特定类型的笔记(如文献笔记),可以添加后缀(如”Note")
- 日期:适当加入相关日期,尤其是会议笔记或事件记录
以会议笔记为例,我的命名通常包含:”Meeting"前缀 + 会议主题关键词 + 会议日期 + 创建时间戳。这样做的原因是,将来若想快速定位会议笔记,只需在日历中找到会议日期,然后通过搜索对应日期就能方便地找到相关笔记。
如果是与某个人的讨论,我会在笔记名称中添加那个人的名字,这样将来搜索人名时就能快速定位。
对于文献笔记,我会添加”Note"后缀,一眼就能辨识出这是一个文献笔记。当然,我也会在笔记内部添加表明"Literature Note"的标签,这样提供了另一层冗余保障。
如果笔记名称中包含特定关键词,我们可以在笔记的编辑窗口中输入关键词,就能够找到对应的笔记,方便地将笔记链接插入到当前笔记中。我们还可以直接调用命令输入关键词,找到对应的笔记,然后将链接插入过来。此外,我们可以定制查询笔记的代码,无论是使用 Obsidian Query 还是 Dataview 等第三方插件,我们都可以查询笔记名称中包含特定关键词的笔记,这样可以方便地进行批量处理。
通过这些命名策略,我可以非常方便地通过搜索关键词、日期、人名和前缀等直接定位到对应的笔记;很多时候不需要进入对应的文件夹,也无需查看链接便能找到它。实际上,通过关键词搜索并定位到对应的笔记,是我系统中非常常用的方式,而标签、链接和文件夹在此情况下可以作为备份方案。
时间戳:增加时间维度
时间戳是另一个重要的冗余层面,它提供了时间上的参考点:
- 笔记名称中的时间戳:表明笔记创建时间,增加查找的维度
- 会议日期:对于会议笔记,包含会议日期便于日后查找
为什么在数字笔记时代仍需在笔记名称中包含时间戳?这源于我的亲身经历:
刚开始使用 Obsidian 时,我尝试用网盘来同步笔记,结果发现笔记的创建日期或修改日期在同步到另一设备后被意外修改。这让我非常苦恼,因为如果想根据创建日期排序笔记,或者使用 Dataview 等工具进行时间维度的分析,数据就完全错乱了。我无法追溯笔记的实际创建时间,这使得笔记中的信息失去一个重要维度。
在传统的卡片盒笔记法中,时间戳作为笔记名称可能是因为当时没有数字笔记工具,只有纸质笔记。为了区分笔记创建时间并方便将来查找和链接,人们使用时间戳作为卡片名称。在数字时代,虽然有人认为可以完全依赖文件系统记录的创建时间,但我的经验表明这种信息并不可靠,特别是在跨设备同步时。
虽然我们可以通过链接了解想法的演变,但如果不知道笔记的创建时间,就无法理解这些想法是如何随时间演进的。因此,在笔记名称中添加时间戳,即使文件元数据中的日期被意外修改,我们仍能从名称中获取时间信息。
除了在笔记名称中添加时间戳,我还会在笔记的 Frontmatter 中自动插入创建时间,这样时间信息就有了双重保障。如果笔记名称被意外修改,Frontmatter 中的时间戳仍然存在。这种多层次的时间信息记录大大提高了系统的可靠性。
为了简化添加时间戳的过程,我开发了 Copy Metadata 插件。它可以一键为笔记名称添加创建时间信息。它的工作原理是这样的:我们刚开始创建一个笔记时,笔记的元数据中包含了创建时间这个信息。我们在创建它的初期,就利用这个插件给笔记附加创建时间戳。这样的话,将来在将笔记同步到其他位置或用其他工具处理时,笔记的创建时间这一信息不会因为意外而丢失。
组合应用:实际的考量
前面我们提到了多种方式能够帮助我们打造一个冗余的笔记系统。那么,具体到一个笔记的处理,我们可能采取如下方式:
- 链接到相关笔记(比如,近期相关笔记、项目页面、入口笔记、看板、任务、提醒、日历等)
- 添加两个标签(如主题标签和任务标签)
- 移动到合适文件夹
- 重命名笔记以便体现其主题
- 为笔记名称添加日期、创建时间等时间戳
当然,取决于笔记内容、主题、长度、重要性、紧急性、复杂度等,对其处理程度、处理方式、花费时间等都不同。比如,对于不太重要的笔记,可以选择当下能想到的一两种方式来处理;有时你甚至会意识到,这个笔记可能根本就没有必要记录下来。有了这样的思考,可能反而会减少你记录笔记的数量,减少你在不重要内容上的时间和精力消耗;从而也能从根本上让你有余力关注更加重要的内容,而不是将过多时间和精力分散在不重要的内容上。另外一方面,对于一个重要的、紧急的笔记,多花点时间和精力处理不也是理所应当的吗?
当然,不管是重要的还是不重要的笔记,有时由于主观和客观条件的限制,你可能无法采用多种方式来处理,这也完全正常。比如,在路上你只有手机,这种情况下捕捉想法是比较容易的,但链接、添加标签、命名等其他处理方式却不是很方便。在这种情况下,你能做的就是采取一两种最能促使你再次发现该笔记的方式来处理即可,比如添加一个提醒。
在电脑端记录一些想法、整理一些笔记时,如果你当下有更重要的事情要处理,那么可能也没有足够的时间来处理当下的笔记。你可能采取的方式是将其链接到提醒中、看板中或对应的任务中。这种处理方式的核心原则是:你并不是为了整理笔记而整理笔记,而是因为你整理的笔记服务于你的任务、项目和目标。因此,一旦将一个笔记链接到对应的任务、提醒中,就意味着这个笔记在一定程度上已经处理得足够了;因为在你执行那些任务时,你将再次看到这个笔记,到那个时候,再对这个笔记进行更深层次的处理也是完全可以的。
冗余笔记系统的挑战和解决方案
文件夹归类难题
使用文件夹归类笔记时,常常遇到的问题是:有些笔记不知道应该放到哪个文件夹更合适,尤其是当笔记内容涉及多个主题时。
有人可能会说,如果不知道把笔记放到哪个文件夹合适,可能是因为笔记过于庞大,主题太分散,建议将其分解为原子笔记。但这又会带来另一个问题:如果我将我现有的 10000 个笔记都分解为原子笔记,笔记总数量可能会达到 10-100 万个。这样庞大数量的笔记对于我来说几乎不可管理。更不要说我当前的笔记库还是在过去 5 年中积累的。10 年后、15 年后、20 年后,这个笔记系统会变成什么样子呢?其数量和复杂程度更加难以想象。
另一个常见建议是重新设计文件夹结构,但这忽略了一个事实:我们的笔记系统不是一个图书馆,我们也不是图书馆员,无法提前规划和预知所有可能的主题和发展方向。另外一方面,假如我们的想法和笔记只能按照预设框架发展,那不是很无聊吗?正是因为我们的想法和笔记主题存在一定的不确定性和不可预测性,才使得管理它增加了一定的乐趣,不是吗?
解决方案
面对上述问题,我的建议是:
- 遵循第一感觉:看到笔记的名称、主题和内容后,按照第一感觉将其放入某个文件夹
- 随时调整:随着项目和想法的变化,把笔记移到当时感觉更合适的文件夹
- 持续练习:随着练习的增多和时间的推移,你会越来越快地找到合适的归类位置
此外,为了提高文件夹导航定位效率,我还开发了 Folder Navigator 插件。主要原因在于,传统文件夹导航方法需要手动展开和折叠文件夹树,这在有数百个文件夹的系统中非常耗时。我开发 Folder Navigator 插件正是为了解决这个问题——它允许你用关键词搜索文件夹,就像搜索笔记一样;然后可以直接跳转到目标文件夹,而不必手动浏览整个文件夹结构。
标签混乱
随着笔记数量的增加,标签系统可能变得混乱。现在我的笔记库中有 10000 个笔记,假设每个笔记有 1-5 个标签,那么整个系统中可能有 1-5 万个标签。即使去重后,标签数量也可能在 1 万这个数量级,这显然会带来管理挑战。
解决方案
面对这个问题,可以采取如下策略:
- 使用标签前缀:为相似类型的标签使用统一的前缀
- 嵌套标签:利用嵌套标签结构组织相关标签
- 利用自动补全:创建标签时使用编辑器的补全功能选择已有标签
- 适时重命名:使用 Tag Wrangler 插件批量重命名相关标签(但要注意,这种操作无法撤销)
尽管采取这些措施,一定程度的标签混乱似乎仍然难以完全避免,因为笔记库中的标签实在太多了。看着标签面板中,不知道什么时候能滑到头的标签就让我感到头大。虽然我们可以按照标签的使用次数、名称等进行排序,但有时仍然难以找到重要的标签,单纯因为标签数量多而且比较繁杂。
我们可能还会通过外部工具,比如 Readwise, Hypothesis, 微信阅读等,同步一些阅读高亮和笔记到我们的笔记库,而那里面有时会带来一些命名杂乱的标签。我曾经尝试过对 Readwise 的标签命名规则进行统一和规范,但后来放弃了,因为实在太复杂了。而且这还只是一个高亮同步工具,其他外部工具也会同步标签过来。不同的工具之间,它们的标签命名规则也不一样,因此你无法对它们进行统一。虽然尝试从源头解决标签命名的问题看起来是一个比较根本的解决方案,但出于现实原因,我们这里却无法从源头解决它。那么,我们只能尝试从其他角度去解决这个问题。
当我们换一个角度去看待标签管理这个问题时,会发现:问题的关键不是管理所有标签,而是能够在需要时找到重要的标签。这是所谓二八法则的一个比较好的应用示例,也是 PTKM 方法所强调的一个点:突出重点内容、抓住主要矛盾。
为了突出重点标签,我会为重要项目创建项目页面笔记。在项目页面中,我会将非常重要的标签放在那里,然后在标签下方中添加一个链接,这个链接可以定位到我最初注意到该标签的位置。这样,将来当我们想找到对应的标签时,只需去查看项目页面就可以了。这种方法对于管理少量项目非常有效,但随着项目数量增加到几百个,管理重要标签也会变得比较复杂甚至困难。这就需要更系统化的解决方案,这也是 Tag Index 插件诞生的原因。
通过 Tag Index 插件,可以方便地将关注的重要标签集中在一起,这样将来就能快速知道系统中哪些标签是重要的。除了放置重要标签之外,你还可以将其视为临时放置标签的地方,就像在管理笔记时,将特定笔记放到某个文件夹收集箱或者任务列表收集箱那样。当你发现一个可能重要的标签时,可以先将其添加到Tag Index中,之后再决定是否将其纳入长期管理的标签体系。
链接滥用
有些方法提倡为每个关键词创建链接,甚至主张完全不使用文件夹和标签,仅依靠链接。但这种方式在实践中可能导致严重问题。
想象一下,如果你的笔记库中有 10-100 万个原子笔记,并且每次提到重要关键词都创建笔记链接,图谱的复杂度将达到难以想象的程度。这不仅影响系统性能,也无助于实际使用。
我曾经尝试过查看笔记库中的图谱(Graph View),结果发现即使我的 M 芯片 MacBook 配有充足内存,打开这个复杂图谱时仍然会卡顿。更重要的是,这样的图谱除了看起来复杂外,实际用处有限。我可能一年只会看几次,然后感叹”哇,我的笔记库图谱多么复杂!”,满足一下我的虚荣心,仅此而已。
因此,我坚持谨慎创建链接,只在确实需要建立明确关联的情况下使用。
笔记命名复杂
如前所述,一个完整的笔记名称可能包含前缀、关键词、日期、时间戳等多个元素,看起来确实比较复杂。但这种复杂性带来的是未来检索的便利。
解决方案
为了笔记简化命名过程,我通常采用渐进式方法:
- 创建笔记时先用简单名称(如在手机上快速记录灵感时)
- 同步到电脑后再完善命名
- 使用文本扩展工具(如 Espanso)快速插入日期、时间戳等
例如,前段时间我要为一个项目会议做准备,需要思考讨论什么、演示什么。于是,我在回家的路上想到明天要开会,需要讨论几个要点内容,就在手机上创建了一个简单笔记,列出大纲。之后在电脑上,我为笔记名称添加了 Meeting 前缀、会议主题关键词、日期和时间戳,而这些可以利用文本扩展工具 Espanso 一键完成,整个过程非常快捷。
基于这个笔记的主要内容,我们可以非常方便地根据会议的内容、要准备的演示资料的类型和复杂程度等,选择不同的方式和工具来准备会议演示 PPT。比如,PowerPoint、Markdown、Obsidian Advanced Slides、Marp、LaTeX Beamer、Reveal.js、Jupyter Notebook RISE 等等。
File Title Updater 插件:为了高效地统一和更新笔记不同位置的标题,我开发了这个插件。在实际使用中,我经常遇到这样的情况:修改了文件名但忘记更新笔记内的标题,或者在 Frontmatter 中的标题与实际标题不一致。这种不一致不仅影响美观,更重要的是可能导致搜索和引用混乱。
File Title Updater 能够一键更新文件名称、Frontmatter 和笔记一级标题中的名称,确保它们保持一致;这在笔记命名本身也体现了一定的冗余,从而提高了其可靠性。
AI 用于笔记管理的反思
考虑到 AI 技术的发展和应用,我想简单讨论一下利用 AI 帮助我们找到所需笔记这个问题。
当前 Obsidian 中有不少 AI 笔记问答插件,外部工具也有 Notebook LM、Reor、ima.copilot 等,而且 AI IDE 工具如 WindSurf、Cursor、Trae 其实也可以用于笔记问答的用途。这些工具利用 RAG 或其他相关技术基于我们的问题查找笔记系统中相关的文本片段,然后由 LLM 综合后给出回答。这个应用场景看起来很美好,但就我个人的使用体验来说,它存在着一些问题和不足。
隐私考量
首先是隐私方面的问题:假如笔记内容比较私密或者敏感,我对把这类内容发送给一个可能使用私人数据来训练他们模型的行为持谨慎和怀疑的态度。虽然有些公司提供选项,让你选择不将自己的数据用于训练和改进他们的大语言模型;但是,一旦你使用他们的服务,你还是要把自己的数据提供给他们。作为用户,一旦你把数据交出去,就难以知晓他们会如何使用这些数据。此外,很多公司列出的隐私政策让普通用户真的很难判断他们将如何使用你的数据;而且,他们通常会声明保留随时更新隐私政策的权利。这使得普通用户在隐私保护方面处于更加弱势和被动的状态;一旦出现问题,用户的维权成本往往太高,即便用户意识到可以维权。所以,从更根本的角度来解决隐私问题,可能还是不把轻易敏感数据交出去。
当然,你可能会说,我们可以使用离线的大语言模型来进行笔记问答。比如,Ollama 和 LM Studio 就提供统一的 API 接口支持调用多种离线 LLM,包括 Llama 系列、DeepSeek 系列、Qwen 系列等。但是,其模型能力相较于 OpenAI 的 GPT 系列和 Anthropic 的 Claude 系列比如何就因人而异、仁者见仁智者见智了。当然不可否认的是,开源的离线大语言模型的能力也在逐渐提高,但 OpenAI 以及 Anthropic 的闭源、在线模型或许同样如此。
问答技术
其次是问答技术的问题:无论是在线还是离线的模型,目前使用 RAG 及类似的技术根据我们的提问检索相关的笔记,然后将找到的文本片段综合起来利用 LLM 给出回复;但这种方式也存在一些问题。它回答问题时所基于的文本片段真的是你手动查找笔记时想要使用的内容吗?也就是说,它找到的笔记真的能够密切相关地回答你的问题吗?
当然,你可能会说 RAG 只是当前的技术,将来它可能会进一步发展。但另一方面,即便 AI 技术发展到了一定程度,能够帮助我们根据密切相关的笔记来回答我们的问题,但是可能还存在其他的问题。我们的想法和笔记之间确实存在一定的关联性,但这种关联性不一定是依照时间的演变而线性发展的。比如,你在日期 A 产生了一个想法笔记 A,在日期 B 产生了一个想法笔记 B,在日期 C 产生了一个想法笔记 C;但是,笔记 A、B、C 之间的关联和时间的演变关系可能不是线性的。根据我个人的经验,想法随时间的演变以及它们之间的关联往往是非线性的;单纯因为人的大脑不是线性的,你接触的周遭环境和信息等都也是非线性的。那么,AI 如何去理解这种非线性的关系和大脑的运作呢?
理解和思考
最后是理解和思考的问题:即便将来 AI 的能力发展到能够克服我之前提到的一些障碍,但这也只代表 AI 的能力进步了,和人类无关。AI 能够根据你的笔记提供密切相关且符合你预期的问答,但这又意味着什么呢?这仍然只是 AI 给出的回复,并不代表你真正理解了;而且,可能会弱化你思考的过程,而这可能不利于理解你过往的笔记和想法。当我们想要与他人交流想法时,总不能让 AI 来替我们对话吧?在这种情况下,人会扮演怎样的角色呢?
当然,我并不是说我们不应该使用 AI 工具。实际上,我们可能很难避免这件事,我们也无法对科技的发展视而不见。事实上,我在语音转录、文本处理、编程等方面都使用 AI。只是我们需要以一种批判的态度来看待和使用 AI。终究,我们需要主动学习、主动思考,这样才能真正掌握知识。那些笔记才是为我们自己所用,而不是为 AI 所用。
AI 可以辅助我们完成工作,但不能替代我们完成工作。试想一下,如果我们今天所有的工作都能由 AI 来替代完成,AI 将来变得更加强大了,那我们还会有工作吗?所以,在使用 AI 时,我们要主动思考、保持批判性的态度;这样才可能避免将来的工作被 AI 取代,避免我们被 AI 取代。
冗余笔记系统的优势
前面我们介绍了可以用多种方式来打造一个冗余的系统,比如,文件夹、标签、链接、笔记命名、时间戳等,也提到了打造一个冗余的系统可能面临的问题和解决方案。那么具体来说,打造一个冗余的系统有什么优点呢?接下来我们将从几个方面来探讨这个问题。
提高系统的可靠性
冗余系统的一个明显优势是可以提高系统的可靠性。
日常解释
让我们先尝试用比较日常的语言来描述一下什么是可靠性,或者可靠性意味着什么。就像前面所说的那样,SpaceX 的飞船配置了多个发动机,这样即便一个发动机点火失败,仍然有备份的发动机能够确保飞船发射成功。
我们在工作和生活中会制定备份的计划,这也是提高可靠性的一个体现。当我们想要到达某个目的地时,需要制定交通出行方案。此时,地图工具会给出我们多个出行方案,比如,地铁、公交、打车、自己开车等。我们可以选择一个方案作为出行方式,而假如中途出现了变故,再切换到其他方案,最终能够确保顺利到达目的地。
我们想要乘坐飞机远途出行时,比如,对于国内航班,航空公司可能会建议提前两个小时到达机场;而如果是国际航班,通常会建议提前三个小时到达。这本质上反映了时间上的冗余,并且能够提高成功出行的可靠性。然而,时间上的冗余并不意味着在时间上的浪费。因为我们到达机场后,可以处理值机手续、完成安检等;之后仍然可以拿出电脑工作,或者用手机记录想法,亦或是进行娱乐、放松。我们总能找到一些方式来利用这段冗余的时间。
这些日常工作和生活中的例子表明,冗余能够提高可靠性,给我们带来安全感。这显然是冗余所带来的优点之一。
理论解释
前面我们用日常的例子讨论了什么是冗余,以及它所能带来的可靠性。现在,我们再尝试从概率叠加效应的角度来理解冗余和可靠性。
让我们做一个随意的假设:每采取一种措施处理笔记,就会增大 5% 的概率能够让我们将来发现它们。那么,采取 5 种措施的话,增加的总概率就是28%。如果每种措施使得笔记被重新发现的概率增加 10%,那么 5 种措施叠加后笔记被重新发现的总概率则达到61%。这种效应类似于投资中的复利,被巴菲特等人推崇。只不过我们这里把时间上的复利转移到了笔记的处理方式上而已,其本质和效果是一样的。
我们在处理笔记时付出一点额外努力,未来重新发现它们的概率将大幅提高,这是一种高回报的投入。需要注意的是,采取多种措施处理笔记并不意味着一定会花费很多时间和精力。妥善处理的话,一两分钟就能完成。如果时间过多,说明某些流程或方式可以优化。例如,在添加时间戳时,可以用 Copy Metadata, Task Marker, Espanso 等工具辅助添加;在想要将笔记移动到特定文件夹时,也可以利用 Hazel、笔记移动插件等自动化工具来实现。
处理措施
即便采用多种方式、从冗余的视角来处理笔记有多个好处,我们仍然不必对每个笔记都采取所有措施来处理,而是可以根据笔记的重要性、紧急性、复杂度等,选择适当的处理深度以及时间和精力花费。
一个显而易见的道理是,既然是重要的笔记,那么相对来说,将来肯定会非常希望重新发现它们。因此,花更多的时间和精力、采取多种方式对其进行处理,也就理所当然了。而对于那些不是特别重要的笔记,可以采取相对较少的措施来处理它们,毕竟,它们不是很重要。长此以往,我们甚至可能会意识到,有些笔记根本不需要处理,甚至不需要记录他们,既然它们一点都不重要的话。而这反过来又可以为我们处理重要的笔记腾出额外的时间。长此以往,就形成了正反馈。至于什么是反馈和正反馈,我们可以将来再去讨论。
最后,无论是重要的还是不重要的笔记,我们有时都没有办法采取多种措施对其进行处理,甚至没有办法利用一种方式对其完全进行处理。比如,将其链接到相关的笔记、添加相关的标签等。那么,我们可以在笔记的开头添加一个提醒,提醒未来的我们把该笔记链接到其他笔记或添加一些标签;我们将来看到这个提醒时,假如觉得这个笔记仍然重要、这里的提醒仍然有意义,就可以按照提醒创建链接、添加标签等。实际上,在笔记中添加链接和标签处理相关提醒本身就是一种冗余设计,这相当于在时间的尺度上为将来的自己留下线索。
方便找到需要的笔记
冗余系统的一个核心价值在于它能够帮助我们发现和找到以前记录的想法。
让我先回忆一下探索笔记系统之前的工作和生活状态是怎样的。大约在九年前,我搞科研的想法可能会散落在不同的地方。比如,它们可能存在于 Word 文件、有道云笔记、OneNote、纯文本文件、纸质笔记本、便签、文献管理工具中。也就是说,我的想法、会议笔记等分散在多个工具和不同形式的媒介中。
乍一看,你可能会说,你的想法分散在不同的工具中,这本身不也是冗余的体现吗?但这与前面介绍的冗余概念完全不同。不同之处在于,这些散落在不同位置的想法相互孤立、没有关联。我想要找到一个想法时,非常费力,可能需要挨个检索每个位置。而至于如何在每个位置找到对应的想法,这又变得额外复杂。比如,在纸质笔记本中,我应该去哪里寻找某个想法呢?如果我后来产生了额外的想法,我该如何跟进和发展呢?这些都是问题,也让当时的我感到焦头烂额,整天焦虑不安。
而至于我是怎么打造一个系统(PTKM)来管理所有的笔记、任务和项目,让我脱离当时那种焦虑的状态;这个问题就复杂得多了,我们将来可以展开介绍。这里我仍然想要从冗余的角度来讨论如何找到需要的笔记。
通过关键词找到笔记
说出来可能有些出乎意料,但关键词是我找到期望笔记最常用的一种方式。但是,这里的关键词指的是笔记名称中的关键词,而不是笔记内容中的关键词。
假如我们搜索笔记内容中的关键词,当你在笔记工具,如传统的 OneNote,中搜索某个关键词时,可能给出很多相关的笔记。比如,我的笔记系统中有超过 10000 条笔记,那么搜索某个关键词给出一百个相关的笔记应该不是一件不正常的事情。当然,这并不是说搜索笔记内容中的关键词毫无用处;实际上,它可以作为一种备份方案,并且可以与其他方法结合,以高效地查找笔记。这点会在后面进行介绍。
与之相对,由于我们在笔记命名时已经包含了关键词、前缀、人名、日期等信息,直接搜索这些元素就能快速定位到相关笔记。例如,搜索“meeting”可以找到所有会议笔记;搜索某人的名字可以找到与该人相关的讨论记录。
具体来说,在 Obsidian 这个笔记工具中,我们可以通过如下方式来搜索关键词,找到需要的笔记:
- 笔记编辑窗口:当我们在编辑一条笔记时,想要引用另一条笔记,可以直接在编辑窗口中输入关键词(通常是用双方括号
[[关键词]]
包围),笔记工具会自动显示包含该关键词的笔记列表,让我们可以快速选择并插入链接。这种方式特别适合在笔记整理过程中快速建立笔记间的关联。 - 命令面板搜索:在 Obsidian 中,我们可以使用命令面板(通常通过Cmd/Ctrl+P 调出)输入关键词,快速找到并打开相关笔记,然后将其链接插入当前笔记。
- 批量处理查询:使用 Dataview 等插件,我们可以编写查询代码,找出所有笔记名称中包含特定关键词的笔记,这对于批量处理特定类型的笔记非常有用。例如,我可以查询名称中包含”project”这个关键词的笔记,这样可以列出所有项目页面笔记。
- 笔记内容全文搜索:除了笔记名称,我们当然还可以搜索笔记内容中的关键词。这种方式虽然不高效,但可以作为关键词、链接、标签、文件夹等笔记检索方式的备选方案。
简而言之,使用关键词搜索定位笔记是我最常用的方法。由于我的命名规则包含了丰富的关键词信息,我通常可以通过简单的搜索就能找到需要的笔记,而不必依赖复杂的链接追踪或文件夹导航。这种方法的效率非常高,特别是当我记得笔记的大致主题、日期或相关人员时。
通过链接网络找到笔记
双链接可以建立两个笔记之间一对一的联系,形成明确的、可靠的连接。正是这种可靠的连接提供了查找笔记的明确方法,一种可靠的方法。具体来说,在 Obsidian 中可以通过多种方式借助笔记链接定位期望的笔记。
笔记窗口底部的链接提及:在查看一篇笔记时,窗口底部通常会显示哪些笔记链接到了当前笔记(Linked mentions)。这让我们可以了解其他笔记是如何引用和使用当前笔记的,从而发现潜在的关联。这些反向链接常常揭示出我之前没有意识到的联系。
入口笔记:我会为相似主题的笔记创建入口笔记(Entry note)。所谓入口笔记,我在创建时遵循前面提到的笔记命名原则:它的前缀通常包含“Entry”这个关键词,接着使用与入口笔记主题相关的关键词,最后添加时间戳。当我们想要查看某个主题的笔记时,可以到对应的入口笔记中定位。
需要强调的一点是,入口笔记的主题及其创建是无法预测的,我们只能随着笔记系统的发展和需要来创建入口笔记。我们可能会发现,一个入口笔记一开始只包含 2-3 条笔记,但随着相关主题的发展,它可能逐渐积累到 10 条、20 条、50 条,甚至更多的笔记。当我们意识到需要时,可以将入口笔记分割成更小的入口笔记。我这里所指的小,是指主题更加集中,且所包含的相关主题的笔记数量更少。关于入口笔记本身的创建、发展、演变等,将来可以展开介绍。
项目页面:我为每个重要项目创建专门的项目页面,其中包含与该项目相关的重要链接、标签、项目行动笔记以及其他重要信息。项目页面本质上可以视为一个特殊的入口笔记,只不过其上链接的不只是笔记,还包括任务、标签以及其他重要信息而已。项目页面的命名同样遵循前面提到的命名规则,它的名称包括“Project”这个前缀、体现该项目目的的关键词,以及该项目页面创建的时间戳。
比如,下半年我需要参加一个学术会议,因此需要为此开发算法、测试算法、分析结果、撰写文章以及预定行程等。所有这一切所涉及的笔记、任务等都可以链接到该项目页面上。至于如何打造项目页面,我们可以在将来进一步介绍。
当我们需要查找与特定项目相关的笔记时,我只需打开对应的项目页面,就能看到所有关键链接。这些集中的链接集合为项目工作提供了便捷的起点。
侧边栏的链接视图:Obsidian 的侧边栏视图显示当前笔记被链接到哪些笔记,以及哪些笔记链接了当前笔记。这种双向链接视图帮助我们理解笔记间的关系网络,快速导航到相关内容。
本质上,侧边栏的链接视图功能部分与笔记窗口底部的链接提及相似,只不过这里的链接视图需要打开侧边栏才能看到,而前者在笔记编辑器窗口的下方可以直接看到。两者的使用方法不同,但提供的功能本质上相似。
块链接引用关系:至于什么是块链接,简单来说就是我们可以通过它方便地链接到某个笔记的具体行,而不只是这个笔记整体。至于为什么使用块链接而不直接使用笔记链接,这又涉及到我们应该记录长笔记还是原子笔记。这一点在之前的文章中有所提及,就不再展开介绍,但将来可能再去讨论。
利用 Strange New Worlds 这个插件可以方便地查看块链接的引用关系信息。简而言之,有了这个插件,每个 Block ID (块链接的一种标识)处有一个上角标,可以看到当前的文本块在哪个笔记中被引用。当然,借助该插件我们还可以方便地定位到对应的笔记中;这种块链接的定位功能提供了比较小颗粒度的文本链接引用关系的查看视图,对于系统中使用很多长笔记的情况尤为重要。
为了方便创建 Block ID,我还开发了一个额外的插件,叫 Timestamp Link。简而言之,这个插件在创建 Block ID 时,可以用当下的时间戳作为 Block ID。开发这个插件的根本原因是 PTKM 方法中情境的概念,而时间信息是情境中一个重要的部分。关于这个插件以及情境、时间戳等方面的内容,可以将来再做介绍。
图谱:既然 Obsidian 是一个具有图谱(Graph View)功能的笔记工具,那么图谱这种查看笔记链接关系的方式自然也不应该遗漏。但可惜的是,就像我之前提到的那样,图谱,尤其是全局图谱,在我的 PTKM 系统中几乎没有实际意义,除了满足一下我的虚荣心而已。当然,局部图谱或许有一定的价值,只不过考虑到我前面提到的多种方式,局部图谱对于我来说实际意义也不是很大。
与图谱相关的一个第三方插件叫 ExcaliBrain,感兴趣的读者也可以去研究一下它,它可以方便地让你查看笔记之间的链接关系。
通过 CANVAS 找到笔记
Canvas 简介:它是 Obsidian 后来推出的一个功能。简单来说,它提供了一种可视化的二维视图,用来显示笔记、任务等之间的链接关系。Canvas 功能的必要性在于,虽然笔记内部可以插入笔记链接,但我们在入口笔记中查看相关笔记链接时,它列出的仅仅是用线性的方式呈现的一些相关笔记而已;而那种线性的呈现方式对于复杂的笔记和任务关系来说是不够的。所谓线性和非线性,我们将来也可以详细展开介绍。
非线性笔记和任务管理:具体来说,我们在 Canvas 上可以放置不同的笔记和任务;这些笔记内部可以包含其他的笔记链接,任务子条目中可以包含相关任务链接。同时,在 Canvas 上我们可以用箭头连接笔记和任务,或者仅仅是纵向和横向排列;这样可以组织笔记之间以及任务之间的链接关系。简而言之,就像画家在画布上作画那样,利用 Canvas 可以方便地实现非线性的笔记和任务管理。
其实一看到 Canvas 功能,我立刻想到的是悬疑片中警察办案时在白板上放置与该案件相关的各种线索,比如,照片、文字等,然后用连线的方式把相关的元素连接起来。因此,Canvas 用于笔记和任务管理也可以实现这样的功能。简而言之,它提供了一种可视化的非线性笔记和任务管理方式。
Canvas 所提供的二维的、非线性的笔记和任务管理方式对于展现复杂的笔记和任务之间的关联以及依赖关系非常重要。本质上,Canvas 文件可以视为一种特殊的入口笔记以及入口任务,因为你可以在上面列出一些重要的笔记和任务。然后,这些笔记和任务的内部又可以查看其他相关的笔记。因此,可以把它视为一种特殊的、二维的、非线性的入口笔记和入口任务组织方式。
Canvas 插件:实际上,正是因为我对 Canvas 功能的依赖,我才开发了 Canvas Format Brush 和 Send to Canvas 这两个插件。前者就像 Word 中的格式刷一样,可以复制粘贴 Canvas 卡片的大小和颜色;后者可以方便地将文本、笔记块和笔记链接发送到 Canvas 文件中,之后就可以方便地组织它们之间的关系。
通过 Canvas 找到笔记:知道了 Canvas 的作用之后,通过它发现所需笔记也就水到渠成了。可以方便地定位到目标 Canvas 文件,然后查看上面列出的重要笔记和任务。之后,可以把这些笔记和任务作为入口,根据需要去查看其他相关的笔记及任务。当然,还可以通过 Canvas 文件上的箭头指示,从另外一个角度查看 Canvas 卡片元素之间的链接关系。
关于 Canvas 文件的命名,也采取前面相同的命名策略。可以使用“Canvas”这个关键词作为前缀,然后使用体现 Canvas 文件主题的关键词作为主体名称以及时间戳作为后缀。同时,我们可以将 Canvas 文件链接到诸如项目页面等合适位置;还可以把它放到专门的文件夹中。这样,我们可以非常方便地通过名称关键词搜索、笔记链接、文件夹等方式定位到对应的 Canvas 文件,然后查看其上的笔记、任务等。
通过文件夹找到笔记
文件夹是一种直观的笔记组织方式,它提供了重要的导航路径。我们可以基于文件夹通过多种方式找到需要的笔记:
- 大致分类浏览:文件夹提供了笔记的大致分类,让我们可以按主题、项目等浏览笔记。这种视觉化的组织方式有助于获取笔记整体概览。
- 结合时间排序:在特定文件夹中,我们可以结合创建时间或修改时间排序,这样既有主题分类,又有时间顺序,便于追踪特定主题下的想法演变。
- Dataview 文件夹查询:使用 DataView 等工具,我们可以查询特定文件夹中的所有笔记,并按各种条件(如创建日期、标签、链接等)进行排序和筛选。
- Folder Navigator插件:文件夹导航的一个常见挑战是在复杂的笔记库中找到特定文件夹。传统方法是手动展开和折叠文件夹树,这在有数百个文件夹的系统中非常耗时。我开发 Folder Navigator 插件正是为了解决这个问题——它允许你用关键词搜索文件夹,就像搜索笔记一样;然后可以直接跳转到目标文件夹,而不必手动浏览整个文件夹结构。
当然,一个非常自然的事情是,在管理文件夹结构时,当我们试图利用文件夹找到所需笔记时,可能会发现这个文件夹的命名方式不太合适。例如,如果在一个文件夹中积累了 50 个笔记,很显然这会导致在将来通过该文件夹找到相关笔记时不太方便。因此,在这种情况下,我会对文件夹进行分割。比如,关于 Obsidian 插件的开发,一开始我用一个文件夹来管理,但后来发现有关插件开发的想法处于不同的阶段和状态。有的处于非常初级的想法阶段,有的正在开发中,而正在开发的插件又包含多个插件。例如,现在我开发了 12 个插件,因此显然有必要使用更细粒度的文件夹结构进行分类。
根据需要调整文件夹结构,可以大大提高我们定位特定文件夹以查看相关笔记的效率。不仅仅是这种手动定位文件夹的方式,我们当然也可以利用 Folder Navigator 插件搜索我们的插件名称,然后可以非常高效地定位到该文件夹、查看相关笔记。
实际上,即便在文件夹本身的设计和使用方面,也从来不是单一的方式,而是冗余的方式。通过层级结构的设计,我们可以知道每个文件夹大致包含的笔记类型;通过使用前缀及关键词作为文件夹的名称,我们也可以高效地定位到不同类别的文件夹;而通过直接搜索关键词,比如插件名称,我们可以方便地找到对应的文件夹、查看相关笔记。因此,文件夹结构本身的设计及演化本质上也是冗余和可靠性的体现。
通过标签系统找到笔记
标签提供了跨越文件夹界限的灵活分类。在搜索栏中输入标签(如 #Tag)可以找到所有使用该标签的笔记。这种方式特别适合查找特定主题或项目的所有相关笔记。我们可以通过多种方式触发标签搜索:
- 笔记窗口中的标签补全:在编辑笔记时,输入 # 符号会触发标签补全功能,显示现有标签列表。这让我们可以快速添加一致的标签,也能看到系统中已有哪些标签。
- 标签面板浏览:Obsidian 侧边栏具有标签面板,显示所有标签及其使用频率。通过点击特定标签,我们可以查看所有使用该标签的笔记。
- Tag Index插件:我开发的这个插件专门解决标签过多难以管理的问题,它提供了一个集中管理重要标签的地方。通过这个插件,我们可以快速访问那些对我们最重要的标签,而不必在成千上万的标签中搜索。
通过时间维度找到笔记
时间是组织和查找笔记的另一个重要维度。我们知道笔记的名称中可能包含日期和时间戳信息,笔记内部及 frontmatter 部分、笔记元数据等可能也包含时间信息。而我们在查找笔记的时候,可以结合这些时间信息来辅助我们定位需要的笔记。
- 笔记名称中的时间信息:如前所述,我在笔记名称中包含日期和时间戳信息。这使我可以直接搜索特定日期或以创建时间作为筛选标准,找到那天创建的所有笔记。例如,如果我记得在某次会议上讨论了一个重要想法,但忘记了具体内容,我可以通过搜索会议日期快速找到相关笔记。
- 按修改时间排序:在笔记浏览器中,我们可以按笔记的修改时间排序,这有助于找到最近处理过的笔记。这对于继续未完成的工作特别有用。
- 按创建时间排序:类似地,按创建时间排序可以帮助我们了解想法的时间线和演变过程。这对于追踪思想的发展历程非常有价值。
- Frontmatter中的日期:通过在frontmatter中存储日期信息,我们可以使用 Dataview 等插件按创建日期、修改日期或自定义日期字段查询和排序笔记。这为时间维度的分析提供了强大支持。
时间维度的搜索特别适合那些我记得"大约什么时候"讨论过某个话题,但不记得具体标题或内容的情况。例如,如果我记得上个月的项目会议中讨论了一个重要决策,我可以搜索那个日期加上“meeting” 关键词,快速找到相关记录。
最后想要补充的一点是,假如我对笔记内容做了一些添加,比如某个位置加了一行文字,我一般会在文字后添加一个时间戳(比如,增加文本 📝 2025-04-22T12:00
),这样后来能够方便地知道当前这个位置的文本是后来添加的。假如我想找到后来添加的文本,同样我也可以利用全文搜索的方式搜索具体的日期,这样也能够找到对应的文本。
至于为什么不创建一个新的笔记,原因和创建长笔记而不是原子笔记是一样的:创建一个新笔记会增加笔记库的复杂度和管理的困难。当然,假如新增的文本篇幅很长、内容很重要,我会创建一个新的笔记;这样做的原因和出发点非常简单:相较于这可能会给笔记系统带来一些复杂度而言,创建和管理重要的笔记本身更加重要;毕竟,我们的系统就是为了服务于我们的笔记,尤其是重要的笔记。但是,假如笔记篇幅很短或者内容不是特别重要,那我就会用前面所说的方式在原先笔记集中添加它。而至于为什么在时间戳前面添加一个 Emoji 符号的前缀,单纯是因为 Emoji 符号在笔记中比较显眼:当扫视整个笔记时,能够一眼看出哪个位置是后来新增的文本。
多种方式组合找到笔记
这里想说明一下如何结合上面提到的几种方式找到需要笔记的具体事例。
如下为我找到一个会议笔记的过程:
- 我依稀记得在某个会议笔记中记录了一些想法,因此,想要找到对应的会议笔记、回顾当时的想法。
- 因为召开重要会议时,比如科研项目会议,无论是线上还是线下,我们一般会把会议安排在日历中。因此,我通过搜索会议名称的关键词或查看会议的大致日期找到了那个会议。
- 因为我的会议笔记名称中一般包含当天的会议日期,就像之前提到的笔记命名规则那样,所以我直接搜索了笔记名称中的会议日期,想查看当天的会议笔记。然而,我怎么都找不到对应日期的会议笔记。
- 后来我意识到,我当初在创建会议笔记时使用的日期是创建笔记当天的日期,而不是会议当天的日期。自然,我也就无法找到那天的会议笔记,因为创建笔记那天并没有开会。
- 之后,我想到我的会议笔记名称中还包含“meeting”前缀,并包含会议的主题关键词。于是,我结合这两种方式再次尝试搜索,这样我就找到了几个笔记名称中包含前缀和关键词的会议笔记。
- 然后,我大致按照日期进行排序,例如,按照创建日期倒序排列找到的笔记。这样,我可以非常方便地查看某个日期范围内创建的所有会议笔记。此时我才意识到,原来我在创建会议笔记时,笔记名称中附加的日期实际上是会议日期的前一个星期。不过,通过这种方式,我最终找到了对应的会议笔记。
从上述经历可以看出来,尽管在会议笔记的名称中会议日期出现了错误,但通过前面提到的笔记系统冗余设计,我仍然能够找到对应的笔记。显然,这体现了冗余系统的容错能力以及可靠性。
有时,我想查看某个主题的笔记,尝试了笔记名称关键词搜索,但怎么也搜索不到。后来我意识到,我以为当时使用了某个关键词作为笔记名称的一部分,但实际上我使用的却是当下想到的关键词的同义词;而这是非常正常的现象,因为我们的大脑、语言和概念体系就是这样运作的。当时我尝试了好几个同义词、中英文词汇都没有找到那个笔记,那么应该怎么办呢?幸运的是,当时记录那篇笔记时,我觉得它非常重要,因此我把它链接到了多个位置。后来我在看板和项目页面上找了一下,果然找到了它。
可以看出来,即便我们对当时使用的关键词出现了记忆偏差,但冗余系统设计使得我们仍然能够找到对应的笔记。找到这个笔记后,如果我觉得这个笔记的名称或其中的关键词可能不利于我将来再次发现它——毕竟这次经历了不少波折——我可能会重命名这个笔记,使其包含更符合我当下语言习惯的关键词。当然,重命名时可以使用我开发的 File Title Updater 插件,这样可以一键更新多个位置的笔记标题,而不至于花费过多的手动工作量。
在日常工作和生活中,通过上述冗余方式找到对应笔记的例子数不胜数。通过多样化的查找路径,冗余系统确保了我们能够从不同角度和维度找到需要的笔记。即使某一种查找方式失效(例如,忘记了笔记的确切名称),我们仍然可以通过其他路径(如链接、标签或文件夹)找到它。这种多重保障大大提高了系统的可靠性,让我们能够更加自信地将想法存入系统,因为我们知道将来能够找到它们。
利于发现意外的联系
期待将来能够有意外的发现、建立意外的联系,这不正是卡片盒笔记法的精髓吗?实际上,这也是最初吸引我探索卡片盒笔记法的原因之一,因为想想就觉得很奇妙。笔记系统的冗余设计正是实现这一目的的有效工具。从我五年来在 Obsidian 中打造 PTKM 系统的实践经验看,这种设计确实有效,我经常能够发现意外的想法并建立新的联系。
当我在一个笔记中想要创建与另一个笔记的链接时,我会用关键词的方式搜索相关的笔记。我可以在笔记编辑窗口中直接搜索相关的关键词,然后在找到对应的笔记后建立链接;或者单独用搜索界面的方式搜索笔记名称中的关键词,定位到对应的笔记,再将该笔记的链接插入。在这个过程中,我经常会发现一些意外的笔记:在搜索一个关键词时,可能会出现好几个甚至一二十个笔记;而这些意外的发现和联系,是我在建立这里的笔记链接之前所没有想到的,也是无法预测的。这些意外的发现和联系对于当下的思考来说经常有很大的价值。
当我们查看项目页面、入口笔记、笔记编辑窗口下方的笔记链接时,我们也常常能够找到意料之外的笔记:即便我们最初想找的只是一个笔记,但我们往往不可避免地会看到其他的笔记,而那些额外的笔记是我们所没有预料到的。之后,我们就可以随手把相关的笔记也链接起来。
通过标签的方式也是一样的:当我们在笔记编辑窗口中想要搜索一个标签的时候,我们会发现 Obsidian 会推荐我们相关的标签。主要原因在于,Obsidian 推荐标签的方式很多样和灵活,因为我们的关键词可能出现在标签的开头、中间或结尾。我们搜索一个关键词查看标签的时候,可能没有找到;此时,我们可能尝试同义词、中英文等。这样也能够发现意外的关联。
一个显而易见的事实是,通过笔记系统的冗余设计,我们能够获得意外的发现。在搜索一个特定主题时,我们可能发现其他相关但之前没有意识到的笔记,这些意外连接可能激发新的创意和见解。这正是知识管理系统最有价值的方面之一:不仅是存储信息,更是创造新的联系和想法。
时至今日,我仍然能够每天都有意外的发现,每次都会让我感到惊喜,而这种体验是单一组织方式难以提供的。
最后,我们需要时刻警惕的一点是,虽然冗余的系统能够使我们经常有意外的发现和联系,但我们应该以当前想要查找的笔记以及当前的任务和项目为优先级更高的事情,而不应因为那些意外的发现和联系而耽误我们的任务执行。毕竟,相比于那些意外的联系,实际完成那些任务可能更加重要。更为根本来说,我们的系统是服务于我们的任务、项目和目标的,而不是反过来。我们应该切忌本末倒置。
增强系统的灵活性
冗余系统的另一个优势是增强了整个系统的灵活性。
多种处理选择
有了多种方式处理笔记,我们就不必拘泥于单一方法
- 不必因为某一种方式不完善而感到焦虑
- 可以根据具体情况选择最适合的处理方式
举个例子,如果完全依赖链接而没有文件夹结构,当笔记数量达到数万甚至十万级别时,系统会变得极其混乱。我曾尝试在 Finder 中选中仅 100 个文件,都会出现卡顿,更不用说管理数万个文件了。
多维度发现
多种处理方式意味着有多种途径找到笔记
- 增加了发现意外联系的可能性
- 提高了整个系统的适应性和韧性
究其根本,多种处理方式在本质上提高了我们重新发现特定笔记、发现意外联系的概率,也提高了系统运行的可靠性。
冗余与简单的平衡
在构建冗余系统的过程中,我们不可避免地会面临一个问题:如何在保证系统可靠性的同时,避免过度复杂化?这是一个需要不断调整和平衡的问题。
可靠性与工作量的权衡
增加冗余确实会提高笔记系统的可靠性,但同时可能也会增加维护系统的工作量。以下是我在实践中找到的一些平衡点:
重要性分级
并非所有笔记都需要同等程度的冗余处理。对于核心项目、关键想法和重要参考资料,多花些时间进行全面的冗余处理是值得的;而对于临时记录、日常琐事或不太重要的灵感,简单处理即可。
例如,对于一个月度项目会议的笔记,花一两天时间(不一定是连续的)来处理也是合理的,因为这些内容可能会影响接下来一个月甚至更长时间的工作。而对于日常灵感或临时想法,可能只需要简单记录并添加一两个标签可能就足够了。
渐进式处理
不必在创建笔记的第一时间就完成所有冗余处理。可以先快速记录,然后在有时间时逐步完善。例如,先给笔记一个基本名称,放入临时文件夹,之后再添加标签、建立链接、优化命名等。
我经常在手机上快速记录想法,只给它一个简单的标题。之后在电脑上处理时,再逐步完善它的命名、添加标签、建立链接、移动到合适的文件夹等。这种渐进式方法确保了我不会因为担心完美处理而延迟记录重要想法。
自动化工具
利用插件和工具减少手动操作。正如前文提到的 Task Marker 和 File Title Updater 等插件,它们可以大大减轻维护冗余系统的工作量和负担。
例如,使用文本扩展工具(如 Espanso)以及我开发的插件 Copy Metadata 可以一键插入当前日期和时间戳,大大简化了笔记命名过程。同样,File Title Updater 插件能够一键更新多个位置的笔记标题,而不必手动更新。
简化的艺术
虽然笔记系统冗余能够带来诸多好处,但这并不意味着我们应该为了冗余而冗余。毕竟,冗余本身终究不是目的,它所带来的优势才是目的。因此,我们应该学会适当地对系统进行简化处理。这样可以在不损失冗余系统优势的情况下,使系统更加容易使用和维护。具体来说,我们可以从多个方面对系统进行适当的简化处理。
减少不必要的复杂性
避免过深的文件夹嵌套、控制标签数量以及谨慎创建链接。此外,我们可以采取策略性的方法对笔记进行命名。至于为笔记名称添加时间戳,我们也可以使用合适的工具辅助进行,而不必手动添加。
我曾经尝试过创建非常深的文件夹结构,结果发现在笔记归类以及定位文件夹和笔记等多个环节都产生很大的阻力,浪费了过多的时间和精力。因此,现在我尽量保持文件夹结构相对扁平,最多两到三层嵌套;之后根据需要创建必要的文件夹。这些策略大大提高了笔记系统的维护和使用效率。实际上,我开发 Folder Navigator 这个插件也是为了文件夹和笔记导航效率。
建立清晰的规则和流程
制定简单明确的笔记处理规则,这样在日常使用中就不必每次都重新思考如何处理笔记。例如,我为不同类型的笔记制定了对应的命名规则和处理流程:会议笔记总是以”Meeting”开头,包含主题关键词、日期和时间戳后缀;文献笔记总是以主题关键词开头,后跟时间戳以及 “Note” 后缀;从 Zotero 导入 Obsidian 的阅读高亮笔记也遵循特殊的命名规则,比如,PaperLee2008HAD_How are doctoral students supervised Concepts of doctoral research supervision - Annotation
。
这里需要强调的一点是,我的笔记一般都会添加对应的时间戳后缀。而这里之所以没有为 Zotero 导入的阅读高量笔记添加时间戳后缀,是考虑了高亮笔记导入的特殊情况。我们在不同的时间点可能对同一篇文献做不同的注释或修改,但是,在我利用 Zotero Integration 插件把文献高亮和笔记仍然想要把他们保存在同一个笔记中。这才是我没有为这类笔记添加时间戳后缀的原因。所以,在笔记命名以及其他方面都会有一些特殊的情况存在,而这需要根据自己的需求具体确定。
当然,为了辅助创建不同类型的笔记,我们可以为不同类型的笔记创建不同的模板。这可以提高笔记创建和整理的效率,同时能够保证系统的冗余和效率。
关注核心功能
不要被工具的所有功能所诱惑。专注于那些真正提高效率和可靠性的功能,忽略那些看起来炫酷但实际用处不大的功能。
例如,虽然图谱视图看起来非常炫酷,但我实际上很少使用它,因为在大型笔记库中它往往变得过于复杂而难以解读。相反,我更关注关键词搜索、标签和链接等核心功能,因为它们在日常使用中提供了更实际的价值。
例如,在软件的外观方面,我曾经尝试过很多不同的主题,因为第三方主题市场上存在太多主题,就像存在很多插件一样。但我最终还是选择了 Minimal 这个主题,因为它对我来说比较简洁,让我能够专注于笔记本身。当然,为了使文件夹看起来更加直观,我借助 Iconize 插件为不同类型的文件夹分配不同的图标。
按需审查系统
接受系统不可能时刻保持完美的事实,按需审查和整理系统。比如,我通常会在意识到需要的时候,花一些时间整理我的项目页面、入口笔记、标签系统、根目录的笔记等。这比试图时刻保持完美一致要实际得多。
这里我之所以说当意识需要的时候再去审视和处理而没有说定期处理,是因为就像我停止了每周回顾那样,后来我意识到:一旦有些事情是我必须每周需要做的,我就会感到很大的阻力。因此,我后来采取的一个策略就是在需要的时候再去做,而不是必须定期做。因为“必须”这件事让我感觉似乎有人在强迫我去做一些事情,这样反而会给我带来很大的阻力和压力,让我产生了抗拒的心理。究其根本,可能是因为必须、定期去做这件事需要很大的意志力。就像一本书(我忘记了具体的名字)所说的那样,我们的意志力是有限的。因此,假如系统的运行需要消耗我们很大的意志力,那说明系统的设计本身可能存在优化的空间。
与之相对,当我们意识到需要处理这些事情时,是因为我们知道如果不去处理,系统就无法正常运行,也无法更好地服务于我们的任务、项目和目标。同时,我们的系统设计给了我们时间和精力去处理、维护和优化它。因此,我们知道做这件事是有意义的,也不会耽误其他事情。这反过来也能够调动我们的主观能动性,因为我们知道完成这件事能够让系统更好地服务于我们。这也再次形成所谓的正反馈。
关于按需简化和清理这件事,我还想要强调的一点是:什么时候需要优化系统,应该由自己来决定。这么说可能比较抽象,但是,我觉得可以遵守的一个原则就是:在平时使用你的系统时,不应该有很大的阻力;系统的设计和维护应该足够简单,以便更好地服务于你的任务、项目和目标。当你意识到你的系统在服务你的任务、项目和目标方面没有那么顺畅时,或许那就是对其审视、简化和清理的一个时机。当然,更加重要的是,维护你的系统这件事本身也不应该阻碍它所要服务的目标。这样解释可能仍然有些宏观和不具体,但我相信你会逐渐意识到系统维护这件事应该怎么去处理,以及什么是按需处理。
个人化的平衡
每个人的最佳平衡点都不同,取决于个人的人生阶段、工作职责、工作方式、项目性质、时间限制等等。关键是找到适合自己的平衡点,而不是盲目追求别人的系统。
例如,如果你主要处理短期项目,可能不需要太复杂的冗余机制;如果你从事长期研究,则可能需要更全面的冗余保障。同样,如果你每天只处理少量笔记,可以为每条笔记投入更多时间;如果你每天需要处理大量信息,则需要更高效的处理流程。
实际上,虽然这篇文章介绍了冗余系统的实施方式、优点等各个方面,但这些措施从来不是一蹴而就的,而是我在工作和生活中逐渐反思和摸索出来的。我们总是会经历这样的过程:意识到问题、想办法解决问题以及迭代优化解决方案。可以预见,这个系统将来还会逐渐演变。究其根本,我们自己是在变化的,而我们的系统是服务于我们的;那么,我们的系统随着我们自身的变化而变化也就理所当然。
未来与当下的平衡
在构建冗余系统时,我们常常面临一个重要的权衡:为未来的发现投入时间和精力,还是专注于当前的任务和项目。
虽然我们希望在未来发现意外的联系,但我们必须承认,"意外”同时也意味着这些发现可能会也可能不会出现。未来本质上是不确定的,而当下重要和紧急事务则是确定的,因为它们就在那里。花费过多时间和精力未来的、为不确定的发现组织笔记,而忽视当前的优先事项,不能说是一个明智的选择。
我的建议是遵循二八法则:为真正重要的少量笔记投入更多时间和精力进行组织、整理,为次要的更多内容投入较少时间。比如,对于关键的项目会议笔记或项目计划,全面的组织是值得的;对于一般性想法或不太核心的内容,基本组织就足够了。
记住,你未来的自我最终也会面临当下的问题。如果你为了不确定的、理想化的未来而忽视了确定性的现在,那么你何时才能真正享受到系统的好处呢?而且,冗余系统的目的是服务于你的思考和创造,而不是反过来。如果维护系统本身占用了太多时间和精力,以至于影响了实际的思考和创造,那就需要重新评估和调整系统了。
有一天,我在常去散心的公园台阶上,闭着眼睛、晒着太阳,听着音乐和周围的嘈杂声,突然产生这样的感悟:
我们应该专注于当下。未来终将在某个时刻变成当下。如果把握不好今天,却一味追逐明天,我们又如何真正拥有未来?
结语
建立一个冗余的笔记系统其本身不是目的,而是为了提高系统的可靠性和灵活性,为了方便在需要的时候找到笔记、发现意外的联系。通过合理使用文件夹、标签、链接、命名规范和时间戳等方法,我们可以构建一个既能可靠存储信息,又能灵活应对变化的个人知识管理系统。
重要的是,我们不必为了冗余而冗余。对于不太重要的笔记,简单处理即可;而对于关键信息,多一些冗余保障则是明智之举。这种平衡让我们既能保证重要信息不会丢失,又不会在日常操作中陷入过度复杂的困境。
我们应该记住:冗余系统的意义不在于完美处理每一条信息,而在于确保我们能够在需要时找到重要的信息。正如我的 PTKM 方法所强调的那样:抓住主要矛盾,突出重点内容,才是知识管理的核心。
最终,一个设计良好的冗余笔记系统会成为我们思考和创造的助力器,而不是负担。它让我们能够专注于当下的重要任务,同时又为未来的发现和联系留下可能性。这正是我在 Obsidian 中构建项目、任务和知识管理系统(PTKM)五年来的体会,也是我此刻想要与大家分享的核心理念。