使用Logseq構建GTD系統


2021-05-08: 1.0版本初步完成,待完善已完成任務回顧
2021-05-10: 1.1版本完成,修改不重要不緊急為將來清單,且新增每周回顧

前言

最近在閱讀《小強升職記》,感覺里面講到的時間管理工具和方法十分有用,自己之前雖然也了解一些工具,例如四象限原則、兩分鍾方法等,但看完這本書之后感覺之前的理解還是太膚淺了。是時候升級一下自己的時間管理系統了。

在此之前我的工具大致包括: 稍后讀軟件、GTD工具(滴答清單)、寫作工具(一般是VSCode+Hexo)。最近半年沉迷於使用雙鏈筆記軟件,目前在用的是 Logseq,后面專門展開介紹一下。目前在嘗試將GTD工具、筆記都整合到 Logseq 里面,主要是受了這篇文章的啟發 OKR + GTD + Note => Logseq,下面就詳細介紹一下我的實踐過程。

前置知識

Datalog

首先,需要簡單學習一下Datalog語法。Logseq是基於Clojure開發的,它的底層可以簡單地理解為是類似於數據庫的結構,因此可以天然的支持各種查詢,這也是我們能夠利用它來實現 GTD 管理的前提。因此這里如果需要掌握如何使用 Logseq 來進行查詢的話,最好先學習一下如何使用 Datalog。可以參考 官方的查詢教程 以及這篇 Learn Datalog Today,粗略掃一遍,能夠看懂大概意思就可以了。

CSS

其次,Logseq本身是列表大綱形式,無法直接支持四象限這種樣式,因此需要一些 CSS功底,這里我是直接參考了 OKR + GTD + Note => Logseq 里面的樣式,原始版本在 [css+template] eisenhower matrix,可以簡單看下。

使用步驟

塊屬性

《小強升職記》里面提到日常待辦事項是分為項目、任務、行動三種的,只有行動才是可以立馬去執行的,項目和任務都需要進行分解,拆成行動。

結合Logseq,我目前考慮使用屬性來解決,也可以考慮使用標簽,不過我認為會對內容有一定的污染,各有利弊吧。

針對一個新的行動或者任務,添加屬性type字段,然后根據具體的類型添加行動、任務、項目字段。

樣例:20210508175442

四象限查詢條件

注意:所有的待辦都必須要有明確的優先級和截止日期,這么做有幾個原因:
1. 要求自己對每個待辦都設置明確的時間點,避免添加到收集箱中一直不處理
2. 添加了優先級之后才好進行四象限統計
3. 目前還沒有找到Logseq的query條件中如何同時查找DDL在限定時間內以及無DDL限制的任務,只能查找其中一種case,這個后續解決

實際使用過程中,可以把一下的查詢條件匯總到一個模板中,

## #.v-eisenhower-matrix (用於CSS選擇器,最好不要改)
:PROPERTIES:
:template: 四象限
:END:
#### [[重要且緊急]]
##### 
#+BEGIN_QUERY
...
#+END_QUERY
#### [[重要不緊急]]
#### [[緊急不重要]]
#### [[不重要不緊急]]

具體查詢語句如下:可以根據自己的實際使用需求將屬性限制移除或者修改時間限制,代碼中均已經添加注釋。

2021-05-10 補充: 將設置為Later的事項移動到第四象限,這樣就可以定期回顧;同時新增一個每周回顧的query語句,由於目前Logseq還不支持查詢當前時間戳,因此用了個笨辦法,每次查詢的時候手動輸入當前時間戳ms進行查詢。

[[重要且緊急]] 避免太多進入該象限^

#+BEGIN_QUERY
{:query [:find (pull ?b [*])
            :in $ ?end
            :where
            [?b :block/marker ?marker]
            [?b :block/priority "A"] ;; 優先級在A的才認為是重要
            [?b :block/properties ?p]
            [(get ?p "type") ?t]
            [(contains? #{"任務" "行動" "項目"} ?t)] ;; 屬性中type字段包含這三種
            [(contains? #{"TODO" "DOING" "NOW"} ?marker)] ;; 不包含已完成任務,不包含LATER
            (or
            [?b :block/scheduled ?d]
            [?b :block/deadline ?d])
            [(<= ?d ?end)]
            ]
    :inputs [:5d-after] ;; 時間跨度,5天內的算作緊急
    }
#+END_QUERY

[[重要不緊急]] 優先完成此象限^

#+BEGIN_QUERY
{    :query [:find (pull ?b [*])
            :in $ ?end
            :where
            [?b :block/marker ?marker]
            [?b :block/priority "A"] ;; 優先級在A的才認為是重要
            [?b :block/properties ?p]
            [(get ?p "type") ?t]
            [(contains? #{"任務" "行動" "項目"} ?t)] ;; 屬性中type字段包含這三種
            [(contains? #{"TODO" "DOING" "NOW"} ?marker)] ;; 不包含已完成任務,不包含LATER
            (or
            [?b :block/scheduled ?d]
            [?b :block/deadline ?d])
            [(> ?d ?end)]  ;; DDL在5天以上
    ]
    :inputs [:5d-after] ;; 時間跨度,5天內的算作緊急
    }
#+END_QUERY

[[緊急不重要]] 盡量委派給其他人^

#+BEGIN_QUERY
{    :query [:find (pull ?b [*])
            :in $ ?end
            :where
            [?b :block/marker ?marker]
            [?b :block/properties ?p]
            [?b :block/priority ?priority]
            [(get ?p "type") ?t]
            [(contains? #{"任務" "行動" "項目"} ?t)] ;; 屬性中type字段包含這三種
            [(contains? #{"TODO" "DOING" "NOW"} ?marker)] ;; 不包含已完成任務,不包含LATER
            [(!= "A" ?priority)] ;; 優先級在A的才認為是重要
            (or
            [?b :block/scheduled ?d]
            [?b :block/deadline ?d])
            [(<= ?d ?end)]
            ]
    :inputs [:5d-after] ;; 時間跨度,5天內的算作緊急
    }
#+END_QUERY

[[待辦清單]] 不緊急不重要,定期回顧確認^

#+BEGIN_QUERY
{    :query [:find (pull ?b [*])
            :where
            [?b :block/marker ?marker]
            [(contains? #{"LATER"} ?marker)]
            ]
    }
#+END_QUERY

[[本周已完成]] 近七天統計^

#+BEGIN_QUERY
{   :query [:find (pull ?b [*])
            :where
            [?b :block/marker ?marker]
            [?b :block/properties ?p]
            [(get ?p "done") ?finishedTime]
            [(- 1620657776000 604800000) ?weekbefore] ;; 由於目前Logseq不支持直接獲取當前時間戳,只能使用trick的方式,每次查詢前手動輸入當前時間戳ms值,算出一周前的時間戳
            [(>= ?finishedTime ?weekbefore)] ;; 一周內完成的工作
            [(= "DONE" ?marker)]
            ]
    }
#+END_QUERY

CSS優化

這里直接照抄了 OKR + GTD + Note => Logseq, 不過它的CSS中內容較多,我單獨提取了四象限相關的部分,放在 四象限CSS 中,查詢模板也都放在這里,便於大家使用。

最終效果

目前我的每日筆記大概長這樣:

20210508181043

1.1 版本已經解決

可以算是1.0 版本,目前存在的問題包括:

  1. 沒有地方定期回顧那些沒有設置DDL和優先級的任務
  2. 缺少查看已完成任務和行動的地方(做周報時候很有用)

Logseq是個很棒的工具,期待盡快穩定下來,后面長期使用,作為筆記+GTD一站式平台~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM