思源笔记简易指北

使用思源笔记有一年了,最近越发地觉得顺手,这一系列的文章也拖了许久,所以也该发一发了。

简单来说我对思源笔记的印象是:

  1. 开箱即用、非常水桶,维护知识库功能所花费的时间和精力大大降低
  2. 开源且本地优先、所见即所得
  3. 强大、灵活、统一的块与属性
  4. 可拓展性超强

当然有一些比较负面的印象

  • 一些交互可能需要适应,尤其是从其他软件转过来用户(比如我)
  • 有些概念和文案比较绕,
  • 对新用户来说功能多得有点无从下手了,而且许多功能藏得挺深的,比如ctrl+tab页签切换、每个笔记本可以独立排序、全屏切换等一大堆功能。

不过后来想想也可以理解,毕竟只有两个人,很多地方确实难以顾及到。

这篇文章权当了解思源的功能和特性,模板等模块已经有非常深入且详细的文章了,因此不会太深入。


TOC

001 - 思源笔记本地优先的数据储存方案

知识库路径

思源笔记与其他本地优先的笔记软件类似,Obsidian、Logseq、(TiddlyWiki的社区客户端)Tidgi类似,将应用程序和您的知识库放在不同的磁盘路径下。

  • 电脑端中,你可以自行创建多个知识库并分别设置对应的路径,但是一定一定不要把知识库放到应用程序的安装目录下
  • 但是在移动端,思源笔记目前是将数据放在应用程序的Data目录下的,卸载应用会同步移除知识库。

知识库与文件夹中对应的结构

思源会按照文档树的结构将笔记文件储存在磁盘中,不过文件名称为文档ID而非文档名。

这带来了一些不便

  • 想在不开启思源的情况下打开笔记文件不是很方便

但也带来了很多好处

  • 保证文件历史的唯一
  • 修改上级文档的名称不会导致下级文档的路径、索引全部修改。

另外,思源中任意文档都可以是文件夹,当新建子文档后,磁盘中会自动创建一个同文档ID的文件夹。

工作空间的结构

工作空间的目录结构思源的目录结构非常明确

  • conf 主题等配置文件

  • history 文件历史,单一文件的文件历史

  • repo 数据快照,允许思源按照时间线对整个工作空间进行回滚

  • temp 临时文件

  • data 工作空间

    • 20240519003228-3xmludz 这种ID的文件夹中的放的是.sy笔记文件,按照文档树的层级进行嵌套。使用ID对真实文件进行命名:
    • .siyuan 搜索等功能的忽略文件
    • storage 用于保存查询条件、布局和闪卡数据等
    • assets 用于保存所有插入的资源文件
    • emojis 自定义表情包
    • snippets 代码片段
    • templates 用于保存模板片段
    • widgets 用于保存挂件
    • plugins 用于保存插件
    • public 用于保存公开的数据

002 - 思源笔记的文件格式

思源笔记采用开放明文格式 json 去保存笔记内容,并将后缀名命名为 .sy

这一格式在笔记软件中其实十分常见,笔记软件中,Excalidraw、Tana、Obsidian 的 canvas 都采用这一格式存储内容。json 可以存储更多内容。

为什么采用 json 而非 markdown

在极早期,思源笔记采用自家的 WYSIWYG 编辑器 vditor 作为思源编辑器时,用的是 markdown 格式。

但随着思源笔记的不断迭代,基于开发团队对块特性的愿景、性能等多方面考虑,最终决定转而使用 json 使用并开发了新的 protyle 编辑器。

json 为思源笔记带来了什么?

:sparkles: 文档也是块。

json 使得思源的块在使用上更加灵活方便,带有额外的语义、数据

思源的任意块都与文档一样,带有内置、数据库、自定义三种属性,同时拥有唯一 ID、创建时间、更新时间。换个容易理解的说法,对 obsidian 用户而言,思源笔记的每一个块都带有一个 yaml 属性,而对 notion 用户来说,思源不止支持将一篇文档添加到数据库中,还能支持将文档中的单个块添加到不同的数据库中。

具体案例

%% 文档名:未命名 %%

## markdown格式是怎样的

这是一段文字,我们看看`markdown`是==怎样存储==的。
{
	"ID": "20241002165245-c2iljn4",
	"Spec": "1",
	"Type": "NodeDocument",
	"Properties": {
		"id": "20241002165245-c2iljn4",
		"title": "未命名",
		"type": "doc",
		"updated": "20241002165328"
	},
	"Children": [
		{
			"ID": "20241002165245-8c2bpe1",
			"Type": "NodeHeading",
			"HeadingLevel": 2,
			"Properties": {
				"id": "20241002165245-8c2bpe1",
				"updated": "20241002165328"
			},
			"Children": [
				{
					"Type": "NodeText",
					"Data": "Json格式是怎样的"
				}
			]
		},
		{
			"ID": "20241002165301-xutvdkg",
			"Type": "NodeParagraph",
			"Properties": {
				"id": "20241002165301-xutvdkg",
				"updated": "20241002165328"
			},
			"Children": [
				{
					"Type": "NodeText",
					"Data": "这是一段文字,我们看看"
				},
				{
					"Type": "NodeTextMark",
					"TextMarkType": "code",
					"TextMarkTextContent": "json"
				},
				{
					"Type": "NodeText",
					"Data": "是"
				},
				{
					"Type": "NodeTextMark",
					"TextMarkType": "mark",
					"TextMarkTextContent": "怎样存储"
				},
				{
					"Type": "NodeText",
					"Data": "的。"
				}
			]
		}
	]
}

003 - 思源的同步方案与服务

官方方案

  • 同步到官方服务器(年付订阅)
  • 同步到自建S3、WebDAV、本地其他文件夹(年付订阅、功能特性)

社区方案

  • Git Sync(插件)
  • Better Sync(插件)
  • 思源社区版(社区版本带有许多未并入主干的实验性功能,不太建议小白使用)
  • 由于思源是开源软件,因此你可以在github上寻找解锁版本(关键词:siyuan+unlock或patch)来解锁功能特性。

为什么思源不再支持网盘同步?

思源的工作空间(库)中存在多种数据,因此在数次改进后,开发者选择当有⌈第三方软件读写思源工作空间时,思源自动退出这一方案⌋

有没有什么办法继续使用网盘同步?

有,但是不知道是否会造成数据丢失

  1. 仅同步data文件夹
  2. 使用本地同步功能

004 - 思源的数据安全

安全

思源为知识库提供了文件历史和数据快照两个相对独立的功能

文件历史

用于单个文件的数据回滚

数据快照

按时间线恢复你的数据,数据快照会按设备储存多份,尽最大可能保证数据的安全。

  • 云端(若开启同步)
  • 设备A
  • 设备B
  • 设备C

同步的端到端加密

思源官方开发的同步功能提供端到端加密,这意味着内容在云端是一个个加密过的数据块,只有通过你设置的密钥才可以解密。

备份:导出导入Data(.sy文件压缩包)

即使是内置文件历史和数据快照,即使有云端数据快照,我依然建议你做好额外的手动备份,因为有人不使用同步功能,也因为有人会忘记他云端数据的加密密码。

这是一个给移动端和不想打开知识库文件夹的用户使用的功能,实际上在文件夹里 Ctrl C和V 也大差不差。

1 个赞