× 快速导航
威廉希尔williamhill
分类
用TiddlyWiki替换Notio威廉希尔williamhilln和EverNote动作个别常识束缚编制
发布日期:2023-10-28 04:57:12

  很多人说不懂技术,配置 TiddlyWiki 和处理保存/免费同步/免费发布博客比较麻烦,所以我在字节时用晚上的业余时间开发了一个零配置的 TiddlyWiki 桌面版 APPtiddly-gittly/TiddlyGit-Desktop欢迎 star。下载地址releases/latest (需要翻墙),也可以加下面的QQ群在群文件里下载。

  视频版:林一二:入门太微(TiddlyWiki)构建你的数字化第二大脑_哔哩哔哩_bilibili

用TiddlyWiki替换Notio威廉希尔williamhilln和EverNote动作个别常识束缚编制

  我曾经用过很多年的印象笔记,里面装着四处收集来的碎片内容,比如什么是「共产中文腔调」? - 调查类问题 - 知乎、我高考的分数截图等等;我也用了几年的 Notion,用它记待办事项、给认识的人写备忘小传;我还用了很久的 Anki,用它把英语单词、数学公式、算法套路等碎片知识装进脑中;我也了解过 Roam Research,它可以通过双向链接增加笔记的可发现性。

  但这些工具似乎都不关注两个对我来说很关键的概念:「元信息」和「自动化」。我认为,只有能充分保存元信息的自动化的知识管理系统才能称得上「好用」。

  这么说来,个人知识管理系统似乎有一个不可能三角:免费-好用-好看,只能拥有其中两样。Notion 要付费、印象笔记不好用、Quip 和飞书等系统不是为个人服务的……

  然而TiddlyWiki(太微)似乎打破了这个不可能三角,引入了第四个元素:它免费、好用,还蛮好看,唯一的缺点就是需要具备动手能力才能把积木式的它拼成自己想要的形状。对于有动手能力的人来说,它就是完美的。

  我之前喜欢 Notion 的一个重要理由就是它的设计很好看,所以我配置自己的 wiki 时,就打开 notion 网页版,用开发者工具复制它的样式表,择其善者而从之。

  给一个 Tiddler 加上 $:/tags/Stylesheet 标签即可让它在 wiki 启动时加到 wiki 的样式表里,例如我就在自定义链接样式里黏贴适配了 Notion 的链接的样式,鼠标悬浮后会低调地变色,凸显一种简约的尊贵。

  我还通过添加 backdrop-filter 给各种地方加上了毛玻璃效果。等未来不流行毛玻璃效果了,我自己再把它重新设计为最流行的样子。

  往 TiddlyWiki 里拖很多图片之后,通过 now.sh 发布的博客可能会越变越大。所以我通过把图片文件的链接改成指向 Github 上的图片,来减小生成的 HTML 的体积。

  这相当于把 Github 作为免费无限容量的图床来使用了,只要浏览量不是特别大,就不会收到封禁邮件。

  在打开我的 Wiki 后,你可以随意编辑它,这只会改动浏览器里的缓存的 wiki 内容,不会影响我电脑上本地的内容、也不会影响我 Github 上的备份。

  在浏览器里的缓存变化之后, TiddlyWiki 是怎么把内容持久化到别的地方的呢?就是靠 Saver(粗粒度保存器)和 SyncAdaptor(细粒度同步器)了。

  在未来,我们可以用solid-tiddlywiki-syncadaptor (WIP)等自定义的同步器,把数据保存到任何我们想保存的地方,不受制于大公司,也不需要像用印象笔记一样购买会员服务。数据怎么保存、存在哪里都可以我们自己自由定制。

  我关注一个信息是什么,它从哪里来,要到哪里去……也就是关于信息的信息:标签、源谱、关联。我们的大脑会保存和一个信息相关的很多其他信息,而如果一个知识管理系统也同样保存了这些元信息,就可以用很贴近我们大脑的形式存储知识,让我们查找、利用知识都更加便捷。

  自动化则能减少很多复制黏贴文本的劳作,还能让信息被以各种方式聚合,出现在更多地方,更容易被找到。

  在我构思一篇文章时,我的思绪经常在记忆的网上游走,把很多与主题相关的碎片拼到脑中的文章里。但是,大脑和知识管理系统是不同步的,很多碎片内容并不存在于机器里,而只存在于大脑中。这时候要是先把碎片内容录入到电脑里,再回过头继续在记忆中漫游,就有可能打断漫游的思路,消弭刚刚产生的灵感。

  等整篇文章的框架写好之后,再回过头来点击「允许用 git-sync 脚本自动同步代码」的按钮,创建这篇碎片笔记,把具体内容录入其中,然后 TiddlyWiki 会自动把碎片内容填充到刚刚占的坑里。

  可能会有多篇笔记要引用同样的内容,把这部分内容重构(refactor)出来,然后用Transclusion(嵌入)的方式把它们自动填充到多个坑里,而不是通过复制黏贴的方式填坑。这样以后如果要修改的话,改一处地方即可,不用找所有地方改,不会发生漏改的情况。

  可以添加段落级元信息,例如可以把一篇主题 A 的文章中的一个段落放到主题 B 的文件夹里,因为这个段落在谈主题 B。这样以后写主题 B 的文章时就很容易找到这个碎片作为参考资料。

  通过全文检索搜参考资料时,不用读大段的内容,可以直接看小段的参考资料是否对当下的自己有价值

  既然内容碎片化好处这么大,我们肯定希望在把其他地方的内容复制黏贴到 TiddlyWiki 里的时候,就把它拆分得细一点。

  这种简单的重构可以使用文本切分插件来自动切分,也可以手动臻选出以后可能自己会用到的部分,加上合适的标签(相当于放到与标签同名的文件夹里)。

  我已经习惯了用方便的Copy On Select Firefox 插件,现在到了 TiddlyWiki 桌面 App 里,我经常还是以为选中了就复制了,然后黏贴到别的地方才发现其实并没有复制,很不习惯。

  这个功能 TiddlyWiki 显然不会自带,目前也没有搜到插件可以做这件事。所以我自己重新写了一个适配 TiddlyWiki 的小脚本(后来还是打包成插件了,所以现在这个是插件的链接),做成了启动脚本。脚本比插件要轻量,不需要打包发布等等繁琐的流程,自己想要啥功能半小时写完调试好就能用。

  这也是太微最强大的地方,所有插件、脚本、功能,本质上都是笔记,和其他笔记一样都可以在太微里编辑。写完之后,配置好笔记的类型为 JS 脚本,刷新页面就能生效。

  所以理论上可以在一个笔记里跑一个迷你版的太微,是不是很有元编程和 Quine(奎恩)的感觉?

  wikitext ,主要用于写 UI,例如卡片的渲染模板,修改后可以做到「在每个卡片底下显示相关卡片」、「反向链接」等功能

  filter ,可以和 wikitext 结合起来写渲染模板,也可以用于「把加了 APrivateContent 标签的笔记保存到私有仓库里面」等功能

  JS,所有 wikitext 和 filter 最终都要依赖 JS 的实现,覆盖想要修改的 JS 可以实现「鼠标悬浮预览插件本来不会自动关上预览窗口,我让它自动关闭」等功能

  TiddlyWiki 和 Anki 很相似的一点是,笔记和卡片是分离的,也就是笔记只保留内容和元信息,在 Wiki 实际运行时,才通过模板渲染为卡片。所以可以通过写 wikitext 宏或 JS 宏,来在运行时对展示做各种变换。

  Datalog 及其方言是用于输入知识还有聚合、推理、利用知识的编程语言,虽然很强大威廉希尔williamhill,但使用起来还是有一定门槛的。

  TiddlyWiki 让我们可以用更容易学会的方式,在美观的界面里为碎片知识加上元信息,例如可以给一个「我的剪刀」的笔记,加上 location: 客厅 的元信息,相当于描述了知识「我的剪刀放在客厅里」。这样就可以写一个简单的 filter 来把所有放在客厅里的物品列成一个列表,展示在一个动态生成的笔记里了。

  在以后你找不到剪刀的时候,就可以直接搜索「我的剪刀」,然后查看它的 location 字段知道它放在哪里。更可以把这些元信息传给一个问答机器人,你语音问他你的剪刀在哪,它通过简单的意图理解、检索、推理、取字段就能帮你找到客厅里的剪刀了。

  完善的知识体系常常是一个网状的结构,我通过鼠标悬浮链接显示相关内容这个插件(当然,经过了我自己的修改),可以展示每个笔记所在的文件夹(文件夹即标签)、反向链接(链入的内容,类似RoamResearch)、笔记作为一个文件夹装了什么内容(更确切地说,笔记相当于文件夹的 Readme)。

  TiddlyWiki 是一个自由免费的软件,自然也就缺乏财力和精力将它包装得更加易用。

  一直以来都需要用户有一定的技术和折腾劲来配置它。不得不说过程还是稍显繁琐的,对于曾经分别使用过其中每一项技术的我来说,从零搭建环是没有特别大的阻碍的,但是对于非程序员来说,可能就有点吃不消了。

  所以我将我的配置经验写成了开源代码,使太微变成了一个漂亮的桌面应用,能享受免费的无限大的存储、管理私有数据、发布㐓公开的知识到博客里。在最后我会分别介绍 TiddlyWiki 具体美观好用免费在哪里。

  macOS 用户解压完记得拖进「应用程序」目录里,不然可能打不开。而且记得参考macOS无法验证此App不包含恶意软件,怎么解决?

  弹出来的界面里默认是创建新Wiki,默认是创建本地知识库。下面表单里的每个选项和按钮都加了中英文多语言的注释,大部分默认即可。

  如果你拥有Github账号,就可以点一下蓝色的切换开关,切换成创建在线知识库,通过Github账号同步备份到云端,这样一个配置好的 Wiki 仓库就会出现在你的 Github 账号下了。

  没有账号或者网络不佳的用户,用本地的Wiki也行,自己用网盘手动同步文件夹也可以做备份。

  新建的 Wiki 还是空的,我们可以点右边的加号➕,来新建笔记(在太微里称作 Tiddler 小太,Tiddler 英文是「很小段的笔记」的意思)

  之后就可以在应用启动时自动打开我们的 Index 笔记了,也可以在右边的文件目录里直接点开 Index ,或者点左边的工作区图标也可以打开 Index :

  我们点击 Index 笔记的中间的这个标签图标,可以创建一个加了「Index」标签的新笔记。

  保存新笔记(上图中新笔记的标题是「新条目」)之后,它会出现在右边的「文件目录」里,形成笔记树状(其实是有向图)结构,可以当文件夹功能来用。详细说明见红圈里的「使用帮助」这个笔记链接。

  之后就是不停添加新笔记了,文本框上方有各种功能,例如文本片段功能↓ ,可以看其他太微的教程来学习。

  一开始可以先从不断添加新笔记出发,等积攒的笔记需要用高级功能整理了,再去学习高级功能,一般来说想要啥功能都有相关插件,如果没有插件也可以请人或者自己用 JS 很快写出来,理论上不会碰到天花板。

  第一次创建可以就建本地Wiki,之后想云同步了,就在 Github 上建一个空白的仓库,然后看这些按钮:

  点这个「↓Code」就可以看到仓库的 git 地址,我们接下来要把 ssh 形式的仓库地址配置到本地仓库里,这是为了避免无法同步的问题:

  可以先装一个 git 工具:桌面应用 Github Desktop,安装好之后,用桌面应用 Github Desktop打开本地的 Wiki 文件夹,过于简单就动脑子自行探索了。之后你在 Github Desktop 上就可以看到如下的界面:

  之后如果在太记的工作区设置里登录自己的Github账号,就可以享受自动同步了:

  也可以保持太记里的工作区设置为「本地知识库」,然后完全用 Github Desktop 来同步和提交,这样你甚至可以将内容备份到自己的私有自建 Git 服务上,做到完全的数据自有。

  打开设置界面,里面有一个 Attach to menu bar 的选项,勾上这个选项,可以作为快速搜索小工具使用。

  注意打开设置修改一下里面的用户名,从林一二TiddlyGitUser 改成你自己的名字或网名。

  之前创建的代码仓库是公开的,所以同步备份上去的 wiki 就相当于你的博客,那如果我们希望添加自己的 TodoList 等等私有内容呢?

  这时候就可以创建子知识库,我们以你给它取名为private-MyTiddlyWiki为例,首先把「即将新建的知识库文件夹名」改为 private-MyTiddlyWiki ,然后在标签名那边填一个用于标记私有笔记的标签名(例如「APrivateContent」或者「私有」)。

  点击创建之后,太微会为你创建一个新的文件夹,之后如果你给一个 Tiddler 加上 APrivateContent 这个 tag ,TiddlyWiki 就会把你加到 Wiki 里的内容保存到刚刚创建的私有仓库里的 tiddlers 文件夹里了。

  其具体原理是通过修改太记内的 $:/config/FileSystemPaths 来实现笔记的分发,将带标签的笔记分发到新建的私有文件夹里。Google 一下可以了解 FileSystemPaths 的更多技术细节,不过太记都将这些包装成了使用较为简单产品,不了解也没关系。

  之后就可以将笔记同步到网上的私有仓库去了,或者选择只把主仓库同步到网上,私有文件夹则保留在本地离线使用等等。

  既然我们有一些开放的内容,为什么不把它们发布成一个有自己域名的网站呢?这样你可以把你的一些笔记很方便地分享给朋友。

  本模板中已经预置了几个插件仓库,点击右上角的「打开控制台」按钮打开ControlPanel后,就可以在「插件」标签页里点击「获取更多插件」看到它们了。

  我也已经在太记里预置了一些开源插件,例如我写的copy-on-select提供了选中即复制的快捷功能、inverse-link-and-folder提供了反向链接等等。

  更多插件需要到TiddlyWiki Google Group里看最新动态来找,或者到QQ群里找人推荐。

  至此,一个有桌面端 App、能自动备份、能存储隐私信息、能发布内容为网站的,强大的知识管理系统就配置好啦!

  TiddlyWiki 的社区论坛和Github 仓库非常活跃,每天都能看到新的点子涌现出来。大家出于对这个工具的喜爱,在不断贡献自己的想法和代码来推动 TiddlyWiki 变得越加美观、强大。在集智俱乐部注意力与知识管理群里,大家也在积极讨论如何把 Notion、RoamResearch、TheBrain 的优点结合到 TiddlyWiki 里。

  我也在做各种尝试,希望把 TiddlyWiki 和 Anki、语音助手、SoLiD POD 连接起来,让它作为一个数字化的我,承载我的各种知识,利用这些知识使我的生活变得更加便利。

  如果你也为其美观、强大所动,欢迎也加入这个社区,搜索初用时疑问的解答、为其他新手解答疑惑,以及贡献自己的一技之长让更多人为其所动。威廉希尔williamhill