任務行的結構
任務是帶核取方塊的列表項。描述之後是欄位,每個欄位由一個符號加一個值組成。Obsidian Tasks 從右往左讀一行,所以欄位要放在文字之後、行尾,兩個欄位之間出現任何無法識別的文字,讀取就會在那裡停止。
同一個任務,用各種行內格式寫出來:
- [ ] Pay rent ⏫ 🔁 every month ➕ 2026-01-02 ⏳ 2026-01-14 📅 2026-01-15 - [ ] Pay rent [priority:: high] [repeat:: every month] [created:: 2026-01-02] [scheduled:: 2026-01-14] [due:: 2026-01-15] - [ ] Pay rent #project/Home @bank ⏫ 📅 2026-01-15 09:00 [repeat:: every month] 任務檔案把同樣的資訊放在 YAML frontmatter 裡。見下面的任務檔案一節。
欄位並排對照
日期始終是 YYYY-MM-DD。Dataview 一列使用方括號。Obsidian Tasks 和 Dataview 也讀取圓括號 (due:: 2026-01-15);Task Genius 只讀取方括號。Task Genius 同時讀取表情符號和方括號兩種形式,所以它那一列只列出新增或寫法不同的內容。
螢幕較窄時請左右滾動。
| 欄位 | Obsidian Tasks 表情符號 | Dataview 風格 | Task Genius |
|---|---|---|---|
| 截止日期 最後期限。Obsidian Tasks 也把 📆 和 🗓 讀作截止日期。 | 📅 2026-01-15 | [due:: 2026-01-15] | 與另外兩列相同 |
| 計劃日期 你打算處理它的那一天。Obsidian Tasks 也讀取 ⌛。 | ⏳ 2026-01-14 | [scheduled:: 2026-01-14] | 與另外兩列相同 |
| 開始日期 在這一天之前,任務還不能開始。 | 🛫 2026-01-10 | [start:: 2026-01-10] | 與另外兩列相同 |
| 建立日期 如果外掛設定為自動新增,會在建立任務時寫入。 | ➕ 2026-01-02 | [created:: 2026-01-02] | 與另外兩列相同 |
| 完成日期 勾選任務時寫入。Dataview 風格里的鍵是 completion,不是 done。 | ✅ 2026-01-15 | [completion:: 2026-01-15] | 與另外兩列相同 |
| 取消日期 與 [-] 這類取消狀態配合使用。 | ❌ 2026-01-15 | [cancelled:: 2026-01-15] | 與另外兩列相同 |
| 優先順序 從高到低共五級。普通優先順序什麼都不寫。 | 🔺 highest ⏫ high 🔼 medium 🔽 low ⏬ lowest | [priority:: highest] [priority:: high] [priority:: medium] [priority:: low] [priority:: lowest] | [#A] |
| 重複 Obsidian Tasks 和 Dataview 風格使用以 every 開頭的普通英文短語。Task Genius 除了這些,還讀取 iCalendar 規則。見重複一節。 | 🔁 every week on Sunday when done | [repeat:: every week on Sunday when done] | [recurrence:: FREQ=WEEKLY;BYDAY=SU] |
| 完成時操作 任務完成後如何處理它。Obsidian Tasks 支援 keep 和 delete。 | 🏁 delete 🏁 keep | [onCompletion:: delete] | 與另外兩列相同 |
| 任務 ID 只能使用字母、數字、連字元和下劃線。 | 🆔 abc123 | [id:: abc123] | 與另外兩列相同 |
| 依賴於 一個或多個任務 ID,用逗號分隔。 | ⛔ abc123,def456 | [dependsOn:: abc123,def456] | 與另外兩列相同 |
| 具體時間 Obsidian Tasks 沒有時間欄位。Task Genius 會讀取日期之後的時間。 | 不支援 | 不支援 | 📅 2026-01-15 14:30 [due:: 2026-01-15 14:30] |
| 專案和情境 Obsidian Tasks 沒有專案或情境欄位,請改用標籤。Task Genius 會讀取這些欄位。 | 不支援 | 不支援 | #project/Website @phone [project:: Website] [context:: phone] |
Obsidian Tasks 寫入欄位的順序
Obsidian Tasks 寫一行時,先寫 ID、依賴、優先順序、重複和完成時操作,然後是建立、開始、計劃和截止日期,最後是取消和完成日期。手寫時順序不同也能工作,只要所有欄位都在行尾。
狀態字元
方括號裡的字元就是狀態。只有空格和 x 是通用的。其餘都是約定,由外掛、主題或狀態集合賦予含義。
| 字元 | 通常含義 | 誰能識別 |
|---|---|---|
[ ] | 待辦 | 所有,包括 Obsidian 本身 |
[x] | 已完成(x 或 X) | 所有,包括 Obsidian 本身 |
[/] | 進行中 | Task Genius 預設支援,Obsidian Tasks 作為自定義狀態 |
[-] | 已取消或已放棄 | Task Genius 預設支援,Obsidian Tasks 作為自定義狀態 |
[>] | 進行中(Task Genius)或已轉交 | Task Genius 預設支援,其他地方是約定 |
[<] | 已安排 | 狀態集合和主題中的約定,不是 Task Genius 的預設設定;在 Obsidian Tasks 中是自定義狀態 |
[?] | 已規劃 | Task Genius 預設支援,其他地方常被理解為疑問 |
[!] | 重要 | 狀態集合和主題中的約定,不是 Task Genius 的預設設定;在 Obsidian Tasks 中是自定義狀態 |
在 Obsidian Tasks 中,沒有配置過的字元會顯示為 Unknown 狀態。請在外掛的 Custom Statuses 設定裡新增,或載入現成的狀態集合。
Task Genius 只把 x 和 X 視為已完成。TaskNotes 檔案根本不使用核取方塊字元,而是用 status 屬性,下文會講到。
重複
各格式差別最大的就是重複。同一個每週任務,四種寫法:
- [ ] Water plants 🔁 every week on Sunday when done 📅 2026-01-18 - [ ] Water plants [repeat:: every week on Sunday when done] [due:: 2026-01-18] - [ ] Water plants [recurrence:: FREQ=WEEKLY;BYDAY=SU] [due:: 2026-01-18] recurrence: "DTSTART:20260118;FREQ=WEEKLY;BYDAY=SU"
recurrence_anchor: completion Obsidian Tasks 能理解的規則
每條規則都以 every 開頭。加上 when done,則從你完成的那天起算,而不是從原日期起算。
every 3 days
every 10 days when done
every weekday
every week on Sunday
every week on Tuesday, Friday
every 2 weeks
every 3 weeks on Friday
every 2 months
every month on the 1st
every month on the last
every month on the last Friday
every month on the 2nd last Friday
every January on the 15th
every April and December on the 1st and 24th
every year 完成時的行為
- Obsidian Tasks:勾選重複任務會把那一行標為完成,並新增一個日期順延的新行,預設放在原行上方。可以透過設定改放在下方。
- Obsidian Tasks:重複任務至少需要截止、計劃或開始日期之一。沒有的話,規則就沒有可以順延的日期。
- Obsidian Tasks:月度規則遇到不存在的日期(4 月 31 日)時,會提前到當月最後一個有效日。明確指定 31 日的規則則會跳過沒有 31 日的月份。
- Obsidian Tasks:新行不會保留 ID 和依賴欄位,所以依賴關係不會一直卡住。
- TaskNotes:檔案始終是同一個任務。已完成和已跳過的日期寫入 complete_instances 和 skipped_instances,日程隨之推進。
- Task Genius:下一個日期來自 iCalendar 規則,或 every 2 weeks 這樣的簡單短語。Obsidian Tasks 中更復雜的短語,比如 every weekday 或 the last Friday of the month,讀法並不相同,依賴之前請先測幾個。
- 不要把重複任務放進每日筆記。每日筆記裡的重複行會被複制到每一天的筆記中。
任務檔案:TaskNotes frontmatter
TaskNotes 每個筆記存一個任務。資訊放在 YAML frontmatter 裡,正文是自由文字。檔案帶有你在外掛設定中指定的標籤或屬性(預設是 task 標籤)時,就算作任務。
---
tags:
- task
title: Review quarterly report
status: in-progress
priority: high
due: 2026-01-15
scheduled: 2026-01-14
contexts:
- office
projects:
- "[[Q1 Planning]]"
timeEstimate: 90
recurrence: "DTSTART:20260115;FREQ=MONTHLY;BYMONTHDAY=15"
recurrence_anchor: scheduled
---
Notes, links and a checklist go in the body. 屬性
| 屬性 | 示例 | 含義 |
|---|---|---|
| title | | 任務名稱。 |
| status | | 狀態列表中的一個值。預設是 open、in-progress 和 done。 |
| priority | | 優先順序列表中的一個值。預設是 low、normal 和 high。 |
| due | | 截止時間,可以是日期,也可以是日期加時間。 |
| scheduled | | 你打算處理它的那一天。 |
| completedDate | | 任務完成時設定。 |
| dateCreated | | 建立時間,ISO 時間戳。 |
| dateModified | | 最後修改時間,ISO 時間戳。 |
| tags | | YAML 列表,不帶井號。 |
| contexts | | 地點或模式的 YAML 列表。 |
| projects | | 指向專案筆記的連結的 YAML 列表。 |
| timeEstimate | | 以分鐘計的數字。 |
| recurrence | | iCalendar 規則。DTSTART 設定錨點日期。 |
| recurrence_anchor | | scheduled 或 completion:下一個日期從哪裡起算。 |
| complete_instances | | 重複任務已完成各次的日期。 |
| skipped_instances | | 已跳過各次的日期。 |
| blockedBy | | 必須先完成的任務,寫成包含 uid、關係型別和可選間隔的物件。 |
屬性名是可配置的。如果你在外掛裡把 due 改名為 deadline,檔案裡就必須使用 deadline。
即使只有一項,列表也必須寫成列表。該用列表的地方寫成單個值,是任務檔案不出現在檢視裡最常見的原因。
能讓人耗掉一整晚的陷阱
- Obsidian Tasks 一次只讀寫一種格式。如果它的設定是 Dataview,在切換回去之前,它自己的表情符號不會被讀取。
- Dataview 需要兩個冒號,即 [due:: 2026-01-15]。一個冒號不構成欄位。
- 括號必須配對。[due:: 2026-01-15) 不會被讀取。
- Dataview 風格下 Obsidian Tasks 的鍵區分大小寫:repeat、dependsOn 和 onCompletion 有效,Repeat 和 dependson 無效。Task Genius 匹配鍵時不區分大小寫。
- 完成日期的鍵是 completion。[done:: 2026-01-15] 只是個未知欄位。
- Dataview 文件中把 🗓️ 作為截止日期的簡寫,而 Obsidian Tasks 寫的是 📅。如果你用 Dataview 查詢表情符號日期,請先在自己的版本上測試。使用方括號欄位可以避開這個問題。
- 貼上的文字可能帶有不換行空格,或表情符號後面的變體選擇符。Obsidian Tasks 讀不了它們,而螢幕上看起來一切正常。
- Dataview 只為五種日期提供簡寫。優先順序和重複沒有簡寫,需要用方括號形式。
- Obsidian Tasks 中像 #task 這樣的全域性過濾器,會讓它忽略所有不帶該標籤的核取方塊。任務從查詢裡消失,往往就是這個原因。
- 圍欄程式碼塊裡的核取方塊行,在這些外掛中都不算任務。
權威來源
外掛會更新。如果這裡的內容與你的版本不符,請以下列文件為準,而不是本頁。
在手機上使用
TaskForge 是面向 iPhone、iPad、Mac、安卓和 Windows 的獨立應用,能從同一個資料夾讀取上面的表情符號、Dataview 和 Task Genius 寫法,以及 TaskNotes 風格的任務檔案。它不是 Obsidian 外掛,與 Obsidian 也沒有關聯。使用本頁的任何內容都不需要它。
大家常問的問題
Obsidian Tasks 裡截止日期怎麼寫?
輸入日曆表情符號、一個空格和日期:- [ ] Pay rent 📅 2026-01-15。Dataview 風格寫作 [due:: 2026-01-15]。兩者都使用 YYYY-MM-DD。
Obsidian Tasks 的優先順序表情符號有哪些?
🔺 最高,⏫ 高,🔼 中,🔽 低,⏬ 最低。普通優先順序沒有符號。Dataview 風格里欄位是 priority,值為 highest、high、medium、low 和 lowest。
Obsidian Tasks 可以用 Dataview 行內欄位代替表情符號嗎?
可以。在 Obsidian Tasks 設定裡把任務格式設為 Dataview,它就會讀寫 [due:: 2026-01-15] 這種欄位。它只讀取你所選的格式,所以已有的表情符號行需要轉換。做法見轉換頁面。
在 Obsidian 裡怎麼寫重複任務?
用 Obsidian Tasks 時,加上 🔁 和以 every 開頭的規則,再至少加一個日期:- [ ] Water plants 🔁 every week on Sunday 📅 2026-01-18。用 TaskNotes 時,把 recurrence 屬性設為 iCalendar 規則,比如 FREQ=WEEKLY;BYDAY=SU。
Obsidian 任務可以有哪些狀態字元?
方括號之間可以放任意單個字元。空格和 x 是標準用法。/、- 和 > 這類字元,只有在外掛或主題為它們定義含義之後才有意義。
Task Genius 使用的語法和 Obsidian Tasks 一樣嗎?
它在同一行裡讀取相同的表情符號和 Dataview 方括號形式,所以為 Obsidian Tasks 寫的庫也能用。它還增加了日期之後的時間、專案和情境欄位,以及 iCalendar 重複規則。它寫入哪種格式由設定決定。