WIKI 改用 TiddlyWIKI

https://zhuanlan.zhihu.com/p/140473235

https://github.com/tiddly-gittly/TidGi-Desktop

https://onetwo.ren/wiki/#:Index

用TiddlyWiki替代Notion和EverNote作為個人知識管理系統

TiddlyWiki可以替代Notion和EverNote作為個人知識管理系統嗎?

我的 Wiki:onetwo.ren/wiki ( Vercel 國內加速訪問 )

太微中文教程:tw-cn.netlify.app/ ( 只讀版訪問地址 Vercel 加速版(高速訪問)

很多人說不懂技術配置 TiddlyWiki 比較麻煩,所以我開發了一個零配置的 TiddlyWiki 桌面版 APP tiddly-gittly/TiddlyGit-Desktop,歡迎 star 和 watch (點 Watch Release Only 可以在我發布新版時在 Github 上收到推送提醒),也可以加下面的QQ群在群文件裡下載。

用這個App一鍵打開,即可使用強大美觀好用的 TiddlyWiki。

有疑問可以加入 TiddlyWiki 愛好者 QQ 群 946052860 ,或點擊鏈接加入QQ頻道【太微TiddlyWikI】:qun.qq.com/qqweb/qunpro ,或用 Bing 搜索微信群集智俱樂部注意力與知識管理群加入我所在的知識管理社區一起討論。

視頻版:林一二:入門太微(TiddlyWiki)構建你的數字化第二大腦_嗶哩嗶哩_bilibili


我曾經用過很多年的印象筆記,裡面裝著四處收集來的碎片內容,比如什麼是「共產中文腔調」? – 調查類問題 – 知乎、我高考的分數截圖等等;我也用了幾年的 Notion,用它記待辦事項、給認識的人寫備忘小傳;我還用了很久的 Anki,用它把英語單詞、數學公式、算法套路等碎片知識裝進腦中;我也瞭解過 Roam Research,它可以通過雙向鏈接增加筆記的可發現性。

但這些工具似乎都不關注兩個對我來說很關鍵的概念:「元信息」和「自動化」。我認為,只有能充分保存元信息的自動化的知識管理系統才能稱得上「好用」。

這麼說來,個人知識管理系統似乎有一個不可能三角:免費-好用-好看,只能擁有其中兩樣。Notion 要付費、印象筆記不好用、Quip 和飛書等系統不是為個人服務的……

然而 TiddlyWiki (太微)似乎打破了這個不可能三角,引入了第四個元素:它 免費、好用,還蠻好看 ,唯一的缺點就是需要具備動手能力才能把積木式的它拼成自己想要的形狀。對於有動手能力的人來說,它就是完美的。

(↑ 圖:Tiddlywiki 桌面應用:桌面版筆記工具)
(↑ 圖:Tiddlywiki 桌面應用:目錄欄快速搜索小工具)

首先我來簡單談談我心中 TiddlyWiki 的美觀、免費和強大之處。

美觀的 TiddlyWiki(太微)

我之前喜歡 Notion 的一個重要理由就是它的設計很好看,所以我配置自己的 wiki 時,就打開 notion 網頁版,用開發者工具復制它的樣式表,擇其善者而從之。

添加自定義樣式

給一個 Tiddler 加上 $:/tags/Stylesheet 標簽即可讓它在 wiki 啟動時加到 wiki 的樣式表裡,例如我就在自定義鏈接樣式裡黏貼適配了 Notion 的鏈接的樣式,鼠標懸浮後會低調地變色,凸顯一種簡約的尊貴。

我還通過添加 backdrop-filter 給各種地方加上了毛玻璃效果。等未來不流行毛玻璃效果了,我自己再把它重新設計為最流行的樣子。

免費的太微

往 TiddlyWiki 裡拖很多圖片之後,通過 now.sh 發布的博客可能會越變越大。所以我通過把圖片文件的鏈接改成指向 Github 上的圖片,來減小生成的 HTML 的體積。

這相當於把 Github 作為免費無限容量的圖床來使用了,只要瀏覽量不是特別大,就不會收到封禁郵件。

數據自有

在打開我的 Wiki 後,你可以隨意編輯它,這只會改動瀏覽器裡的緩存的 wiki 內容,不會影響我電腦上本地的內容、也不會影響我 Github 上的備份。

在瀏覽器裡的緩存變化之後, TiddlyWiki 是怎麼把內容持久化到別的地方的呢?就是靠 Saver(粗粒度保存器)和 SyncAdaptor(細粒度同步器)了。

官方有一個 GitHubSaver 插件,在填入 Github Token 之後可以在移動端、桌面 Web 端直接把修改後的 Wiki 保存到 Github 上,變成一個 HTML 文件備份。 而在桌面端啟動 NodeJS 版 wiki 之後,則是一個 TiddlyWebSyncAdaptor 在把修改的 Tiddler 同步到文件系統上備份。

在未來,我們可以用 solid-tiddlywiki-syncadaptor (WIP) 等自定義的同步器,把數據保存到任何我們想保存的地方,不受制於大公司,也不需要像用印象筆記一樣購買會員服務。數據怎麼保存、存在哪裡都可以我們自己自由定製。

強大的太微

我關注一個信息是什麼,它從哪裡來,要到哪裡去……也就是關於信息的信息:標簽、源譜、關聯。我們的大腦會保存和一個信息相關的很多其他信息,而如果一個知識管理系統也同樣保存了這些元信息,就可以用很貼近我們大腦的形式存儲知識,讓我們查找、利用知識都更加便捷。

自動化則能減少很多復制黏貼文本的勞作,還能讓信息被以各種方式聚合,出現在更多地方,更容易被找到。

非線性寫作

在我構思一篇文章時,我的思緒經常在記憶的網上遊走,把很多與主題相關的碎片拼到腦中的文章裡。但是,大腦和知識管理系統是不同步的,很多碎片內容並不存在於機器裡,而只存在於大腦中。這時候要是先把碎片內容錄入到電腦裡,再回過頭繼續在記憶中漫遊,就有可能打斷漫遊的思路,消弭剛剛產生的靈感。

更好的方法是,先用一個鏈接佔坑:

<<reuse-tiddler "允許用git-sync腳本自動同步代碼">>

等整篇文章的框架寫好之後,再回過頭來點擊「允許用 git-sync 腳本自動同步代碼」的按鈕,創建這篇碎片筆記,把具體內容錄入其中,然後 TiddlyWiki 會自動把碎片內容填充到剛剛佔的坑裡。

重構:改善既有文檔的設計

內容碎片化的好處有很多:

  1. 可能會有多篇筆記要引用同樣的內容,把這部分內容重構(refactor)出來,然後用 Transclusion(嵌入)的方式把它們自動填充到多個坑裡,而不是通過復制黏貼的方式填坑。這樣以後如果要修改的話,改一處地方即可,不用找所有地方改,不會發生漏改的情況。
  2. 可以添加段落級元信息,例如可以把一篇主題 A 的文章中的一個段落放到主題 B 的文件夾裡,因為這個段落在談主題 B。這樣以後寫主題 B 的文章時就很容易找到這個碎片作為參考資料。
  3. 通過全文檢索搜參考資料時,不用讀大段的內容,可以直接看小段的參考資料是否對當下的自己有價值

既然內容碎片化好處這麼大,我們肯定希望在把其他地方的內容復制黏貼到 TiddlyWiki 裡的時候,就把它拆分得細一點。

這種簡單的重構可以使用文本切分插件來自動切分,也可以手動臻選出以後可能自己會用到的部分,加上合適的標簽(相當於放到與標簽同名的文件夾裡)。

寫 JS 用戶腳本自動化操作

我已經習慣了用方便的 Copy On Select Firefox 插件,現在到了 TiddlyWiki 桌面 App 裡,我經常還是以為選中了就復制了,然後黏貼到別的地方才發現其實並沒有復制,很不習慣。

這個功能 TiddlyWiki 顯然不會自帶,目前也沒有搜到插件可以做這件事。所以我自己重新寫了一個適配 TiddlyWiki 的小腳本 (後來還是打包成插件了,所以現在這個是插件的鏈接),做成了啟動腳本。腳本比插件要輕量,不需要打包發布等等繁瑣的流程,自己想要啥功能半小時寫完調試好就能用。

通過把 JS 代碼加上 $:/tags/RawMarkup Tag 、並用 <script type=”text/javascript”> </script> 包裹,就可以讓這段代碼在 wiki 啟動時執行了。

我在代碼裡就獲取選區,判斷當前是不是在編輯器裡,如果不是就復制。

這也是太微最強大的地方,所有插件、腳本、功能,本質上都是筆記,和其他筆記一樣都可以在太微裡編輯。寫完之後,配置好筆記的類型為 JS 腳本,刷新頁面就能生效。

所以理論上可以在一個筆記裡跑一個迷你版的太微,是不是很有元編程和 Quine(奎恩)的感覺?

覆蓋系統默認行為

TiddlyWiki 裡幾乎所有功能都是可覆蓋的,一般分為三種:

  1. wikitext ,主要用於寫 UI,例如卡片的渲染模板,修改後可以做到「在每個卡片底下顯示相關卡片」、「反向鏈接」等功能
  2. filter ,可以和 wikitext 結合起來寫渲染模板,也可以用於「把加了 APrivateContent 標簽的筆記保存到私有倉庫裡面」等功能
  3. JS,所有 wikitext 和 filter 最終都要依賴 JS 的實現,覆蓋想要修改的 JS 可以實現「鼠標懸浮預覽插件本來不會自動關上預覽窗口,我讓它自動關閉」等功能

TiddlyWiki 和 Anki 很相似的一點是,筆記和卡片是分離的,也就是筆記只保留內容和元信息,在 Wiki 實際運行時,才通過模板渲染為卡片。所以可以通過寫 wikitext 宏或 JS 宏,來在運行時對展示做各種變換。

聚合數據及推理

Datalog 及其方言 是用於輸入知識還有聚合、推理、利用知識的編程語言,雖然很強大,但使用起來還是有一定門檻的。

TiddlyWiki 讓我們可以用更容易學會的方式,在美觀的界面裡為碎片知識加上元信息,例如可以給一個「我的剪刀」的筆記,加上 location: 客廳 的元信息,相當於描述了知識「我的剪刀放在客廳裡」。這樣就可以寫一個簡單的 filter 來把所有放在客廳裡的物品列成一個列表,展示在一個動態生成的筆記裡了。

在以後你找不到剪刀的時候,就可以直接搜索「我的剪刀」,然後查看它的 location 字段知道它放在哪裡。更可以把這些元信息傳給一個問答機器人,你語音問他你的剪刀在哪,它通過簡單的意圖理解、檢索、推理、取字段就能幫你找到客廳裡的剪刀了。

圖遍歷

完善的知識體系常常是一個網狀的結構,我通過鼠標懸浮鏈接顯示相關內容這個插件(當然,經過了我自己的修改),可以展示每個筆記所在的文件夾(文件夾即標簽)、反向鏈接(鏈入的內容,類似 RoamResearch)、筆記作為一個文件夾裝了什麼內容(更確切地說,筆記相當於文件夾的 Readme)。

介紹太微的使用方式

TiddlyWiki 是一個自由免費的軟件,自然也就缺乏財力和精力將它包裝得更加易用。

一直以來都需要用戶有一定的技術和折騰勁來配置它。不得不說過程還是稍顯繁瑣的,對於曾經分別使用過其中每一項技術的我來說,從零搭建環是沒有特別大的阻礙的,但是對於非程序員來說,可能就有點吃不消了。

所以我將我的配置經驗寫成了開源代碼,使太微變成了一個漂亮的桌面應用,能享受免費的無限大的存儲、管理私有數據、發布㐓公開的知識到博客裡。在最後我會分別介紹 TiddlyWiki 具體美觀好用免費在哪裡。

這個應用結合了 TiddlyWiki 和 Git 的功能,所以稱為 TiddlyGit(太記)。

下載太記(TiddlyGit)

下載地址在 Release · tiddly-gittly/TiddlyGit-Desktop ,不過也可以按文章開頭寫的聯系方式找到群來下載。

在下載頁的最底下可以看到全平台的下載鏈接,其中 arm64 指的是 M1 芯片等電腦用的,x64 是通常的電腦用的。Windows 一般下載 Windows-x64-setup.exe 就好。macOS 用戶下載 darwin .zip 的 。

macOS 用戶解壓完記得拖進「應用程序」目錄裡,不然可能打不開。而且記得參考 macOS無法驗證此App不包含惡意軟件,怎麼解決?

使用太記(TiddlyGit)

打開應用後我們跟著箭頭點擊添加按鈕,創建第一個Wiki:

彈出來的界面裡默認是創建新Wiki,默認是創建本地知識庫。下面表單裡的每個選項和按鈕都加了中英文多語言的注釋,大部分默認即可。

如果你擁有 Github 賬號,就可以點一下藍色的切換開關,切換成創建在線知識庫,通過Github賬號同步備份到雲端,這樣一個配置好的 Wiki 倉庫就會出現在你的 Github 賬號下了。

沒有賬號或者網絡不佳的用戶,用本地的Wiki也行,自己用網盤手動同步文件夾也可以做備份。

填知識庫文件夾所在的位置

  • 在表單裡選擇好知識庫文件夾所在的位置
  • 填好 Wiki 名字等信息(例如默認是「wiki」,也可以用中文例如「我的知識庫」)
  • 然後點擊紅色的「創建Wiki」按鈕
  • Wiki就會生成文件夾,並啟動了。

使用太記

新建的 Wiki 還是空的,我們可以點右邊的加號➕,來新建筆記(在太微裡稱作 Tiddler 小太,Tiddler 英文是「很小段的筆記」的意思)

或者點 MD↓ 按鈕來創建 Markdown 筆記。

第一篇筆記可以改個標題叫「Index」:

點左邊的眼睫毛圖標可以打開預覽,點中間的對勾✔️可以保存。

保存之後我們把這個地方的「默認開啟的條目」的內容改成「Index」。

之後就可以在應用啟動時自動打開我們的 Index 筆記了,也可以在右邊的文件目錄裡直接點開 Index ,或者點左邊的工作區圖標也可以打開 Index :

我們點擊 Index 筆記的中間的這個標簽圖標,可以創建一個加了「Index」標簽的新筆記。

保存新筆記(上圖中新筆記的標題是「新條目」)之後,它會出現在右邊的「文件目錄」裡,形成筆記樹狀(其實是有向圖)結構,可以當文件夾功能來用。詳細說明見紅圈裡的「使用幫助」這個筆記鏈接。

之後就是不停添加新筆記了,文本框上方有各種功能,例如文本片段功能↓ ,可以看其他太微的教程來學習。

一開始可以先從不斷添加新筆記出發,等積攢的筆記需要用高級功能整理了,再去學習高級功能,一般來說想要啥功能都有相關插件,如果沒有插件也可以請人或者自己用 JS 很快寫出來,理論上不會碰到天花板。

從本地Wiki改為雲端同步Wiki

第一次創建可以就建本地Wiki,之後想雲同步了,就在 Github 上建一個空白的倉庫,然後看這些按鈕:

點這個「↓Code」就可以看到倉庫的 git 地址,我們接下來要把 ssh 形式的倉庫地址配置到本地倉庫裡,這是為了避免無法同步的問題

可以先裝一個 git 工具:桌面應用 Github Desktop ,安裝好之後,用桌面應用 Github Desktop 打開本地的 Wiki 文件夾,過於簡單就動腦子自行探索了。之後你在 Github Desktop 上就可以看到如下的界面:

然後如圖設置 git 倉庫地址即可。

之後如果在太記的工作區設置裡登錄自己的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 的更多技術細節,不過太記都將這些包裝成了使用較為簡單產品,不瞭解也沒關系。

之後就可以將筆記同步到網上的私有倉庫去了,或者選擇只把主倉庫同步到網上,私有文件夾則保留在本地離線使用等等。

配置開機啟動和自動同步

都在設置裡,翻翻就能看到了。

部署公開內容為網站

既然我們有一些開放的內容,為什麼不把它們發布成一個有自己域名的網站呢?這樣你可以把你的一些筆記很方便地分享給朋友。

本模板中已經配置好了 Github Actions,當你備份 Wiki 到 Github 雲端時,會自動把你的公開 wiki 中的內容發布為靜態博客。訪問地址類似 linonetwo.github.io/wiki ,將此處的 linonetwo 改成你的 Github 用戶名,將 wiki 改成你的倉庫名即可。

如果你已經提交過一次備份,那麼就可以試著訪問一下啦!

插件倉庫

本模板中已經預置了幾個插件倉庫,點擊右上角的「打開控制台」按鈕打開 ControlPanel 後,就可以在「插件」標簽頁裡點擊「獲取更多插件」看到它們了。

我也已經在太記裡預置了一些開源插件,例如我寫的 copy-on-select 提供了選中即復制的快捷功能、inverse-link-and-folder 提供了反向鏈接等等。

更多插件需要到 TiddlyWiki Google Group 裡看最新動態來找,或者到QQ群裡找人推薦。

結語

至此,一個有桌面端 App、能自動備份、能存儲隱私信息、能發布內容為網站的,強大的知識管理系統就配置好啦!

TiddlyWiki 的社區論壇和 Github 倉庫非常活躍,每天都能看到新的點子湧現出來。大家出於對這個工具的喜愛,在不斷貢獻自己的想法和代碼來推動 TiddlyWiki 變得越加美觀、強大。在集智俱樂部注意力與知識管理群裡,大家也在積極討論如何把 Notion、RoamResearch、TheBrain 的優點結合到 TiddlyWiki 裡。

我也在做各種嘗試,希望把 TiddlyWiki 和 Anki、語音助手、SoLiD POD 連接起來,讓它作為一個數字化的我,承載我的各種知識,利用這些知識使我的生活變得更加便利。

如果你也為其美觀、強大所動,歡迎也加入這個社區,搜索初用時疑問的解答、為其他新手解答疑惑,以及貢獻自己的一技之長讓更多人為其所動。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *