跳至內容

我如何用 Obsidian 管理任務清單

前一篇文章說明我為何用 Obsidian 取代子彈筆記,這篇文章分享我現在如何用 Obsidian 管理我的任務清單。

什麼是 Obsidian?

Obsidian 是使用 Markdown 語法的文字編輯器,同時也是個人知識管理(Personal Knowledge Management)軟體。目前個人使用完全免費,不過沒有開放原始碼。常見的平台都有支援:Windows、macOS、Linux、iOS、Android,我在我的 MacBook 和 Pixel 手機上都有安裝。

我日常寫程式時都是使用 Visual Studio Code,而 Obsidian 有和 Visual Studio Code 一樣概念的 command palette、可自訂的熱鍵、支援 vim 模式、多元豐富的社群 plugin,所以我能夠把 Obsidian 的操作體驗調整到和 Visual Studio Code 非常相似,大幅降低我在兩個軟體間轉換時的心智切換成本。

初次使用 Obsidian 可參考:

以下分享內容預設讀者已經知道 Markdown 語法,並且對於 Obsidian 怎麼使用有個大概印象。

我在 Obsidian 上的任務管理系統

剛開始玩 Obsidian 的時候走火入魔,試了一堆有的沒的流程,最後發現對我而言愈簡單愈好。

所以現在我的任務管理系統只由兩種筆記組成:

  1. Action Zone 筆記:整個知識庫(vault)只有一個 Action Note 筆記。這則筆記上可以看到我本日、本週、已過期、未排程的任務。
  2. Topic 主題筆記:每專案都有自己的主題筆記,記錄了專案的各種資訊(文件、聯絡人、Slack 頻道等等),以及所有的待辦事項、討論紀錄。

1. 用 Action Zone 檢視當日行動清單

Action Zone 筆記是我的行動儀表板,靈感來自 August Bradley 的影片 Notion Daily “Action Zone” Dashboard Design。我每天早上第一件事就是打開 Obsidian 上的 Action Zone 筆記,看看當日的任務有哪些。

下面截圖裡畫面分左右兩邊,這兩邊其實是同一份 Action Zone 筆記的不同檢視模式。左邊是原始碼模式(Source Mode),可以看到原始的 Markdown 語法;右邊是閱讀模式(Reading View),是依照語法渲染的比較好讀的畫面。可以使用熱鍵 Cmd + E 快速切換原始碼模式及閱讀模式。

同一份筆記的原始碼模式與閱讀模式

Action Zone 筆記裡的任務清單是動態產生的。這些清單並不是直接寫在 Action Zone 這一份筆記,而是寫在個別的主題筆記,再透過 Tasks plugin 的查詢語法篩選出來。

例如這樣的區塊:

## 本日待辦
```tasks
not done
due today
sort by description
```

這一段就是 Tasks plugin 的查詢語法,意思看字面應該也蠻清楚了:

  • not done - 未完成的任務
  • due today - 今天到期的任務
  • sort by description - 按照任務的敘述內容排序;我只有在本日待辦有使用這個排序,這樣我只要在任務敘述最前面用 24 小時制輸入預計要做的時間,就會有依照時間排序的效果

詳細的查詢語法可查詢 plugin 官方文件:Queries - Obsidian Tasks

除了在「本日待辦」看今天要做的事,我也會看「過期待辦」,也就是我本來排了昨天要做但沒做完的任務。

過期待辦的查詢語法如下:

## 過期待辦
```tasks
not done
due before today
sort by due
```

這時我會一個一個按下每筆 task 末端的鉛筆符號,開啟編輯視窗,把 Due 欄位裡面的值改成「today」。如果確定要挪到其他天,也可以輸入下週六「next sat」甚至下個月同一天「next month」等。Tasks plugin 會自動把它轉換成對應的日期。

編輯任務

一個個修改看起來很麻煩,但對我而言這步驟就是子彈筆記的「轉移 Migration」:把前一天未完成的任務做個記號,再到今天的日誌或是其他週期誌重抄一遍。這個麻煩的過程會刺激我思考這個項目是否還有必要進行:

  • 如果不必做了,乾脆刪除眼不見為淨
  • 如果要進行的話,就思考有沒有必要儘快把它處理掉
    • 急:排在今天處理
    • 不急:把它排到未來的某日,一樣眼不見為淨、暫時別讓自己分心掛念

至於「本週待辦」和「未排程」,我後來發現自己其實幾乎沒在看。光是當日要做的待辦事項往往都做不完了,根本無暇超前進度。列在這裡僅供參考。

## 本週待辦
```tasks
not done
due after today
due before in 1 week
sort by due
```

## 未排程
```tasks
not done
no due date
sort by path
```

每天早上檢視 Action Zone 筆記時,除了看本來預計今天要做什麼,也再重新檢查一次自己當天的行事曆。如果有沒出現在 Action Zone 上的會議,我會根據該會議的主題,用熱鍵快速開啟所屬的主題筆記,在主題筆記上新增一個今日任務代表這個會議。(Obsidian 預設快速開啟檔案的熱鍵是 Cmd + O,我為了貼近平常使用 Visual Studio Code 的體驗,改成 Cmd + P。)

下一節說明主題筆記的內容,以及我怎麼在裡面新增任務。

2. 在主題筆記規劃專案內容、待辦事項

每個任務的尾端的鉛筆符號之前都有個超連結。超連結所連到的筆記,就是該任務真正存在的主題筆記。點擊超連結便能開啟對應的筆記。

我在主題筆記記錄的東西主要有三項:主題相關的資訊、具體執行的任務、會議或討論紀錄。

主題資訊

主題相關的資訊隨意:背景、文件、Slack 頻道、Trello Card、Jira Epic…等等,沒有特定格式。這邊不贅述。

用 Tasks plugin 新增、管理任務

具體執行的任務我一律透過 Tasks plugin 去生成,因為這樣可以直接透過 plugin 的介面指定這個任務的預計執行日(due date),確保在預計要執行的那天它會出現在 Action Zone 頁面上。我最喜歡日期欄位能夠直接寫英文「today」、「tomorrow」、「next mon」…等等,省去操作日期挑選器或是心算的麻煩。

要叫出 Tasks plugin 的介面,必須先按 Cmd + P 叫出指令列表 command palette,再選擇「Tasks: Create or edit task」。為了加快這個速度,我為這個指令設了熱鍵 Cmd + T。這樣在編輯模式下,游標停在空白處、或是一行還不是任務的文字上時,按 Cmd + T 即可新增任務;而游標停在任務上時,按 Cmd + T 即可修改任務。

用熱鍵快速新增、修改任務

用 Tasks plugin 自動產生週期性任務

除了基本的新增、修改任務外,我極度仰賴 Tasks plugin 自動產生週期性任務 Recurring Tasks 的功能。我靠這個功能去產生週期性會議:

- [ ] 10:00 weekly sync 🔁 every week on Wednesday 📅 2022-02-09

或是提醒自己洗牙、帶小孩塗氟、發票對獎:

- [ ] 塗氟 🔁 every 180 days 📅 2021-11-05
- [ ] 洗牙 🔁 every 180 days 📅 2022-01-27
- [ ] 發票對獎 🔁 every 2 months on the 5th 📅 2022-04-05

Tasks plugin 週期性任務的產生邏輯比較特別。它並不是自動在指定時間到時幫你新增一筆,而是你把目前這個項目標示為完成時,Tasks plugin 才自動根據你定義的重複規則(recurrence)去產生下一筆。下一筆的 due date 是根據現在這一筆的 due date 往後推算。

以上面的洗牙任務為例,當我把這個任務標示完成時,Tasks plugin 便自動幫我產生下一個任務,直接新增在原任務上方,due date 照我指定的在原訂完成日 1 月 28 日的 180 天後。這樣我便知道下一次洗牙要預約在 7 月 27 日之後。

- [ ] 洗牙 🔁 every 180 days 📅 2022-07-27
- [x] 洗牙 🔁 every 180 days 📅 2022-01-28 ✅ 2022-01-28

劃掉任務時務必透過 Tasks plugin 的指令

初期使用 Tasks plugin 還有一點需要習慣:如果不是處在閱讀模式 Reading View 下,在標示任務完成時不能直接用 Obsidian 原生的方式把任務劃掉。必須先把游標停在任務上,再執行 Tasks plugin 的「Tasks: Toggle task done」指令,這樣 Tasks plugin 才會幫你加上完成日期、並且複製下一個任務等等。所以我也為這個完成指令設了熱鍵 Cmd + Shift + Enter

我為 Tasks plugin 設定的熱鍵

在閱讀模式下就沒有這個問題,直接滑鼠點選核取方塊即可。

會議或討論紀錄

前面提過我會把會議都記成一筆任務,除了提醒我當日有這個會,也方便日後回顧時記得曾經在這個日子有過相關討論。那我自己隨筆記的討論紀錄是怎麼儲存的呢?

如果是 Slack 或 Jira 上的純文字討論,我會直接用 Markdown 的超連結語法連到討論串的永久網址:

- [x] 和小美討論 [ISSUE-123](https://jira.ticket.url) - [Slack](https://slack.archive.link) 📅 2022-03-01 ✅ 2022-03-01

時間允許的話,我會試著多加一句文字摘要;沒空的話,至少有連結,日後在閱讀模式點一下滑鼠就可以回顧整個脈胳。

但如果是完全視訊、音訊的會議,沒有網址可以回顧,只有自己的隨筆記錄,怎麼儲存?我一開始的做法是為個別討論都開一則筆記去儲存我討論中記下的待辦事項或重點,然後再連結回這個主題頁。例如下面任務描述裡的 [[會議紀錄 2022-03-23]] 連結到另一個標題為「會議紀錄 2022-03-23」的筆記:

- [x] 10:00-11:00 週會 [[會議紀錄 2022-03-23]] 🔁 every week on Wednesday 📅 2022-03-23 ✅ 2022-03-23

試行一兩週後,我發現自己實在不愛看過往討論紀錄時需要一直跳頁。我乾脆把所有內容都直接縮排記在討論任務下方,這樣一頁可以看完,也方便搜尋。

- [ ] 10:00-11:00 週會 🔁 every week on Wednesday 📅 2022-03-30
  - 123
  - 456
  - 789
- [x] 10:00-11:00 週會 🔁 every week on Wednesday 📅 2022-03-23 ✅ 2022-03-23
  - 1
  - 2
    - 2a
    - 2b
  - 3

用 Zoom plugin 幫助專注

上述把所有筆記都塞在同一頁的缺點是,會議當下要紀錄時,太多不相關的文字出現在畫面上容易分心。為了避免眼花,我只好先開一個空白筆記做記錄,之後再剪貼回主題筆記。直到後來發現有個 plugin 可以解決這個問題:Zoom

Zoom 就像 WorkflowyRoam Research 的介面一樣,可以讓你 zoom in 到指定的層級,並且把目前的路徑顯示在最上方。所以我可以直接 zoom in 到主題頁當下的會議這一層,視覺上過濾掉其他不重要的訊息。

  • Zoom in:游標移到要 zoom in 的層級,按下熱鍵 Cmd + .
  • Zoom out:按下熱鍵 Cmd + Shift + .,或是滑鼠直接點選上方的路徑

Zoom plugin 還有另一個姊妹 plugin:Outliner。兩個搭配使用會讓整體體驗更接近 Workflowy 或 Roam Research,喜愛這類介面的人不妨兩個都安裝起來玩看看。我是覺得 Zoom 對我而言已很足夠。

結語

以上就是我目前利用 Obsidian 管理任務清單的系統。

我喜歡目前這個流程的原因是它非常簡單(只有兩種筆記),但能紀錄的又遠比以前手寫子彈筆記詳細。雖然在撰寫主題筆記時使用了兩個 plugins,但這些 plugins 都只是輔助編輯,文件內容完整保留了所有該有的資訊。即便用 Obsidian 以外的文字編輯器開啟,因為是用 Markdown 語法寫成,筆記本身也還是好讀,我不必擔心這些筆記內容會因為哪天 Obsidian 無法使用而難以取回。

如果你本身已有使用專業的任務管理軟體,可能會覺得這一切未免也太拼裝了吧?為什麼不直接使用專門的工具就好呢?這部份我同意。但如果你之前使用的工具是手寫筆記本或是數位軟體上的純文字紀錄,或許會跟我一樣喜愛 Obsidian。它不僅是一個強大的 Markdown 文字編輯器,更能夠特化成適應使用者個人偏好的工具。

除了任務清單外,我的 Obsidian 同時還有我的日誌以及個人知識庫。不過日誌和知識庫的流程我仍在探索中,等日後有心得再分享。