使用Tasks插件在Obsidian中管理和查询任务,支持任务状态跟踪、截止日期、计划日期、创建日期、重复规则、任务依赖等功能。提供强大的查询语法(Tasks Query Language)创建动态任务列表,支持过滤、排序、分组。适用于个人任务管理、项目跟踪、GTD实践、每日计划、习惯追踪等场景。当用户提到Tasks插件、任务管理、TODO列表、任务查询语法、重复任务、任务状态等概念时使用。
重要前提 Tasks插件是主动式任务管理系统:与Dataview不同,Tasks插件会直接修改源文件内容(例如完成任务、更新重复任务)。所有修改都遵循严格的规则,确保数据一致性。查询结果支持交互(如勾选框),勾选后会自动更新源文件。
.obsidian/plugins/obsidian-tasks/data.json 文件,它包含你的自定义状态配置.obsidian/plugins/obsidian-tasks/cache目录(安全操作)警告:此操作会导致所有自定义状态(Custom Statuses)配置丢失
.obsidian/plugins/obsidian-tasks/data.json 文件.obsidian/plugins/obsidian-tasks/data.json后果:data.json存储了所有自定义状态的定义。如果删除了它且没有备份,所有的 [/]、[-] 等符号将失去其背后的"逻辑属性",导致查询失效。
ignore global query 无法跳过此限制(因为插件根本没索引这些行)全局过滤器副作用:
.sync-conflict 副本git pull --rebase 减少冲突,定期提交更改- [ ] 基本任务
- [x] 已完成任务
- [/] 部分完成(进行中)
- [-] 已取消
任务通过内联字段(行尾元数据)存储丰富信息,严格遵循格式规范:
- [ ] 任务文本 [元数据:: 值]
| 字段 | 格式 | 描述 | 示例 |
|---|---|---|---|
| 日期(Due) | 📅 YYYY-MM-DD 或 due:: YYYY-MM-DD | 任务截止日期 | 📅 2024-12-31 |
| 计划日期(Scheduled) | ⏳ YYYY-MM-DD 或 scheduled:: YYYY-MM-DD | 任务应开始处理的日期 | ⏳ 2024-12-25 |
| 创建日期(Created) | ➕ YYYY-MM-DD 或 created:: YYYY-MM-DD | 任务创建日期 | ➕ 2024-12-20 |
| 开始日期(Start) | 🛫 YYYY-MM-DD 或 start:: YYYY-MM-DD | 任务可开始的日期 | 🛫 2024-12-25 |
| 优先级 | 🔺 highest, ⏫ high, 🔼 medium, 🔽 low, ⏬ lowest 或 priority:: (highest | high | medium |
| 重复规则 | 🔁 (every day | every week | every month |
| 依赖任务 | ⛔ task123 或 dependsOn:: task123 | 任务依赖 | ⛔ task123 |
| 任务ID | 🆔 task123 | 任务标识符,用于依赖引用 | 🆔 task1 |
| 完成日期 | ✅ YYYY-MM-DD | 任务完成时间 | ✅ 2024-12-31 |
| 优先级 | Emoji标识 | 查询值 | 数值映射 |
|---|---|---|---|
| Highest | 🔺 | highest | 1 |
| High | ⏫ | high | 2 |
| Medium | 🔼 | medium | 3 |
| Low | 🔽 | low | 4 |
| Lowest | ⏬ | lowest | 5 |
| None | (无符号) | none | (无数值) |
重要:
Tasks: Create or edit 命令打开模态框,避免手动输入Emoji的错误。priority is above medium(高于中等优先级)priority is below high(低于高优先级)priority is above medium 匹配 Highest 和 Highpriority is below high 匹配 Medium、Low 和 Lowestpriority is above medium 实际上是查询数值 < 3 的任务priority is below high 实际上是查询数值 > 2 的任务priority is none| 日期类型 | Emoji标识 | 内联字段 | 描述 | 自动行为 |
|---|---|---|---|---|
| Due(截止) | 📅 | due:: | 任务截止日期 | 手动添加 |
| Scheduled(计划) | ⏳ | scheduled:: | 任务计划开始日期 | 手动添加 |
| Start(开始) | 🛫 | start:: | 任务可开始日期 | 手动添加 |
| Created(创建) | ➕ | created:: | 任务创建日期 | 手动添加 |
| Completion(完成) | ✅ | completion:: | 任务完成日期 | 完成任务时自动添加 |
| Cancelled(取消) | ❌ | cancelled:: | 任务取消日期 | 取消任务时自动添加(需在设置中开启 Record date of cancellation) |
重要区别:
✅ 2024-12-31,表示任务实际完成的时间
done或not done过滤,在Dataview中对应task.completed布尔值字段使用场景:
completion字段:当你需要查询任务的具体完成时间,如completed after last weekdone状态:当你只需要过滤任务的完成状态,不关心具体完成时间Dataview中的对应关系:
task.completed(布尔值):对应Tasks的done状态task.text中可能包含✅ 2024-12-31:但需要从文本中提取,Dataview没有直接的task.completion字段日期格式:
时区处理:
- [ ] 任务描述 🆔 task1id:: task1dependsOn:: task1或⛔ task1^block-id(Obsidian标准块引用格式)🆔 task123^block-idtask123),不是块引用(如^block-id)dependsOn:: task123 或使用 ⛔ 符号(如 ⛔ task123)dependsOn:: abc123(内联字段格式)⛔ abc123(Emoji格式)官方查询语法:
depends on <id> - 查询依赖特定ID的任务is blocked - 查询被阻塞的任务is blocking - 查询正在阻塞其他任务的任务示例:
is blocked
not done
sort by due
日期格式:必须使用ISO格式(YYYY-MM-DD),其他格式将被忽略 Emoji日期标识:系统仅识别预定义Emoji(📅⏳➕🛫),自定义Emoji无效 优先级标识:使用箭头Emoji(�⏫��⏬️),不使用颜色圆点
重要:YAML frontmatter中的字段优先级高于行内元数据。
示例:
---