Summary
使用Tasks插件在Obsidian中管理和查询任务,支持任务状态跟踪、截止日期、计划日期、创建日期、重复规则、任务依赖等功能。提供强大的查询语法(Tasks Query Language)创建动态任务列表,支持过滤、排序、分组。适用于个人任务管理、项目跟踪、GTD实践、每日计划、习惯追踪等场景。当用户提到Tasks插件、任务管理、TODO列表、任务查询语法、重复任务、任务状态等概念时使用。
family3253/skill
使用Tasks插件在Obsidian中管理和查询任务,支持任务状态跟踪、截止日期、计划日期、创建日期、重复规则、任务依赖等功能。提供强大的查询语法(Tasks Query Language)创建动态任务列表,支持过滤、排序、分组。适用于个人任务管理、项目跟踪、GTD实践、每日计划、习惯追踪等场景。当用户提到Tasks插件、任务管理、TODO列表、任务查询语法、重复任务、任务状态等概念时使用。
npx skills add family3253/skill --skill obsidian-plugin-tasks
使用Tasks插件在Obsidian中管理和查询任务,支持任务状态跟踪、截止日期、计划日期、创建日期、重复规则、任务依赖等功能。提供强大的查询语法(Tasks Query Language)创建动态任务列表,支持过滤、排序、分组。适用于个人任务管理、项目跟踪、GTD实践、每日计划、习惯追踪等场景。当用户提到Tasks插件、任务管理、TODO列表、任务查询语法、重复任务、任务状态等概念时使用。
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when…
201.8K installsCreate and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and ot…
84.3K installsInteract with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes,…
73.8K installsCreate and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use …
72.7K installsWork with Obsidian vaults using the official obsidian CLI: read/search/create/edit notes, tasks…
3.8K installsAutomate Obsidian knowledge management, note linking, and personal knowledge base workflows
4K installsOther skills from family3253/skill · top by installs.
npx skills add family3253/skill
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Files included with this skill beyond the listing page.
SKILL.md
44,523 B
SUMMARY.md
530 B
重要前提 Tasks插件是主动式任务管理系统:与Dataview不同,Tasks插件会直接修改源文件内容(例如完成任务、更新重复任务)。所有修改都遵循严格的规则,确保数据一致性。查询结果支持交互(如勾选框),勾选后会自动更新源文件。
- 启用Obsidian的自动备份功能(设置 → 核心插件 → 备份) - 配置Git版本控制,定期提交更改 - 启用重复规则和自动完成前,确保有可靠的备份机制 - 重要:定期备份 .obsidian/plugins/obsidian-tasks/data.json 文件,它包含你的自定义状态配置
1. 关闭Obsidian 2. 删除.obsidian/plugins/obsidian-tasks/cache目录(安全操作) 3. 重启应用并等待索引完成(大型库可能需要5-10分钟)
警告:此操作会导致所有自定义状态(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 | low | lowest | none) | 任务优先级 | 🔼 medium | ||||
| 重复规则 | 🔁 (every day | every week | every month | every year | every [n] [days | weeks | months | years]) [when done: (start | due | both)] | 任务重复规则 | 🔁 every day |
| 依赖任务 | ⛔ 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 和 High - priority is below high 匹配 Medium、Low 和 Lowest
- Highest (1) < High (2) < Medium (3) < Low (4) < Lowest (5)
- priority 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,表示任务实际完成的时间- 自动添加:完成任务时会自动添加,除非在设置中禁用并重启Obsidian
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格式)
- ⛔ 依赖任务未完成时,被阻塞任务显示为'blocked'状态 - ✅ 依赖任务完成后,被阻塞任务自动变为可用状态,并在查询中显示为'unblocked'
- 显示:在任务旁边显示⚠️图标,悬停显示"循环依赖" - 处理:自动将状态设为"cannot-complete",阻止完成操作 - 解决:需要手动打破依赖链,移除或修改导致循环的依赖关系
官方查询语法:
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中的字段优先级高于行内元数据。
示例:
---
due: 2024-12-31
---
- [ ] 任务文本 📅 2025-01-15
实际效果:任务的due日期为2024-12-31(YAML值覆盖行内值)
关键限制:Tasks 插件无法自动修改 YAML 里的数据
严重后果:
严格禁忌:不要在需要“交互”(如勾选、更新日期)的任务上使用 YAML 元数据
推荐做法:对于需要与 Tasks 插件交互的任务,使用行内元数据(如 📅 2024-12-31)而非 YAML
严格规范:元数据必须与任务文本或标签之间存在至少一个空格的分隔边界,推荐使用两个空格以确保解析稳定性
关键提醒:在带有标签的任务中,如果元数据紧跟在标签后面(如 #tag📅2023),解析器 100% 会失败
# 推荐示例
- [ ] 任务文本 📅 2024-12-31
- [ ] 任务文本 #tag 📅 2024-12-31
# 也可工作但不推荐
- [ ] 任务文本 📅 2024-12-31
# 错误示例
- [ ] 任务文本📅 2024-12-31
- [ ] 任务文本 #tag📅2024-12-31
重要规则:所有重复规则必须以 every 开头,这是官方要求的必需语法。
- [ ] 每日任务 🔁 every day
- [ ] 每周任务(完成时更新起始日期) 🔁 every week when done: start
- [ ] 每月15号 🔁 every month on the 15th
- [ ] 每季度首日 🔁 every 3 months on the 1st
- [ ] 每年生日 🔁 every year on December 31
| 规则类型 | 语法示例 | 描述 |
|---|---|---|
| 每日重复 | 🔁 every day | 每天重复 |
| 每周重复 | 🔁 every week | 每周重复 |
| 每月重复 | 🔁 every month | 每月重复 |
| 每年重复 | 🔁 every year | 每年重复 |
| 工作日重复 | 🔁 every weekday | 每个工作日重复(周一至周五) |
| 间隔重复 | 🔁 every 3 days | 每3天重复 |
| 间隔重复 | 🔁 every 2 weeks | 每2周重复 |
| 间隔重复 | 🔁 every 6 months | 每6个月重复 |
| 周特定日 | 🔁 every week on Sunday | 每周日重复 |
| 周特定日 | 🔁 every week on Tuesday, Friday | 每周二和周五重复 |
| 间隔周特定日 | 🔁 every 2 weeks on Sunday | 每2周的周日重复 |
| 月特定日 | 🔁 every month on the 15th | 每月15日重复 |
| 月最后日 | 🔁 every month on the last | 每月最后一天重复 |
| 月最后特定日 | 🔁 every month on the last Friday | 每月最后一个周五重复 |
| 月倒数特定日 | 🔁 every month on the 2nd last Friday | 每月倒数第二个周五重复 |
| 间隔月特定日 | 🔁 every 3 months on the 1st | 每3个月的1日重复 |
| 特定月份特定日 | 🔁 every January on the 15th | 每年1月15日重复 |
| 复杂组合 | 🔁 every April and December on the 1st and 24th | 每年4月和12月的1日和24日重复 |
| 完成时更新 | 🔁 every day when done: start | 完成时更新start日期 |
| 完成时更新 | 🔁 every week when done: due | 完成时更新due日期 |
| 完成时更新 | 🔁 every month when done: both | 完成时同时更新start和due日期 |
- 重要触发点:必须在Tasks查询结果界面或通过插件命令触发完成操作 - 注意:如果在纯编辑器模式下手动将 [ ] 改为 [x],插件可能不会触发新任务的生成(取决于索引状态和设置)
- when done: start:只更新start日期 - when done: due:只更新due日期 - when done: both:同时更新start和due日期 - 默认行为:如果未指定 when done,则使用 "Relative to the original date" 逻辑 - 深度细节:基于原定日期计算,而非当前日期 - 重要警告:如果原始任务过期了5天,新生成的任务也会基于原定日期,而非今天。这对习惯追踪至关重要 - 关键补充:如果任务没有截止日期(Due Date),重复规则将默认基于"完成日期"(Completion Date)计算
锚点日期 (Anchor Date) 逻辑: Tasks 的默认逻辑是根据存在的日期字段优先级来确定的:
智能修正特性:
every weekday 时,即使原始任务在周六,新任务也会自动修正到周一- Tasks 5.x 默认行为:保留块ID以维持引用完整性 - 用途:确保与其他笔记的链接和引用保持有效
today 基于本地时区的当前日期,不同时区的设备看到的结果可能不同not done
due after 2024-12-20
sort by due
limit 10
必须在代码块中标记为tasks,每行一个查询指令。
| 命令 | 描述 | 示例 | |||||
|---|---|---|---|---|---|---|---|
| done/not done | 过滤完成/未完成任务 | not done | |||||
| due [before | after] YYYY-MM-DD | 过滤截止日期 | due after 2024-12-25 | ||||
| scheduled [before | after] YYYY-MM-DD | 过滤计划日期 | scheduled before today | ||||
| start [before | after] YYYY-MM-DD | 过滤开始日期 | start after tomorrow | ||||
| created [before | after] YYYY-MM-DD | 过滤创建日期 | created after 2024-01-01 | ||||
| happens [before | after] YYYY-MM-DD | 复合日期查询(包含due、scheduled、start三者之一) | happens before today | ||||
| priority is (highest | high | medium | low | lowest) | 按优先级过滤 | priority is high | |
| priority is not (highest | high | medium | low | lowest) | 按优先级过滤(否定) | priority is not high | |
| priority equals (highest | high | medium | low | lowest) | 按优先级过滤(可选写法) | priority equals high | |
| path [includes | does not include] "text" | 按文件路径过滤 | path includes "Projects" | ||||
| root | 只查询根目录下的任务 | root | |||||
| folder/path | 查询特定文件夹 | "Tasks/Work" | |||||
| description [includes | does not include] "text" | 按任务描述过滤 | description includes "meeting" | ||||
| has [due | scheduled | start | created | recurrence | priority] | 检查字段是否存在 | has due |
| no [due | scheduled | start | created | recurrence | priority] | 检查字段不存在 | no due |
| is recurring/is not recurring | 过滤重复/非重复任务 | is recurring |
root
not done
sort by due
"Tasks/Work""Tasks/Work"
not done
sort by due
- in N days(N天后)、N days ago(N天前) - in 2 weeks(2周后)、3 weeks ago(3周前) - in 1 month(1个月后)、2 months ago(2个月前)
Status Type与自定义状态系统配合,提供五类状态:
| 状态类型 | 匹配not done |
匹配done |
典型符号 |
|---|---|---|---|
| TODO | ✅ | ❌ | [ ] |
| IN_PROGRESS | ✅ | ❌ | [/] |
| DONE | ❌ | ✅ | [x] |
| CANCELLED | ❌ | ✅ | [-] |
| NON_TASK | ❌ | ✅ | [~] |
查询语法:
status.type is IN_PROGRESS
status.type is not CANCELLED
重要区别:
status.type is TODO 只匹配未开始的任务not done 匹配TODO和IN_PROGRESS两种状态status.type is DONE 只匹配已完成的任务done 匹配DONE、CANCELLED和NON_TASK三种状态配置要求:
默认行为:
nextStatus 配置风险:
CSS 依赖警告:
dependsOn:: task123 或使用 ⛔ 符号(如 ⛔ task123)- dependsOn:: abc123(内联字段格式) - ⛔ abc123(Emoji格式)
is blockedis not blockeddepends on task123sort by due、sort by priority等not done
sort by function(task) {
return task.description.length;
}
not done
happens in the next 7 days
group by folder
group by priority
sort by due
功能:使用JavaScript函数进行自定义分组,实现复杂的分组逻辑
语法:group by function <expression>
示例:
# 按任务描述长度分组
group by function task.description.length
# 按文件名后缀分组
group by function task.file.filename.split('.').pop()
# 按文件名大写形式分组
group by function task.file.filename.toUpperCase()
# 按文件所在文件夹分组
group by function task.file.folder.split('/').pop()
功能:以树形结构显示嵌套任务,展示任务的层级关系
语法:show tree
使用场景:当你需要查看任务的层级结构,特别是在处理具有子任务的复杂项目时
示例:
not done
path includes "Projects"
show tree
sort by due
not done
(due before tomorrow) OR (scheduled before tomorrow)
priority is high
path includes "Work"
sort by due
limit 5
功能:使用JavaScript逻辑进行极度复杂的过滤,比普通过滤指令更强大
语法:filter by function <expression>
示例:
filter by function task.description.length > 20filter by function task.due && task.due.moment.isBefore(moment(), 'day')示例:
not done
# 只显示描述中包含数字的任务
filter by function task.description.match(/\d+/) !== null
# 只显示描述长度超过20个字符的任务
filter by function task.description.length > 20
# 只显示截止日期在周末的任务 (Moment.js 语法)
filter by function task.due && [0, 6].includes(task.due.moment.day())
task.due.moment 返回 Moment 对象- task.due.moment.day() - 获取星期几(0-6,周日为0) - task.due.moment.isBefore(moment(), 'day') - 检查是否过期 - task.due.moment.valueOf() - 获取时间戳(用于排序)
示例:
# 查询过期的任务
filter by function task.due && task.due.moment.isBefore(moment(), 'day')
# 查询本周内到期的任务
filter by function task.due && task.due.moment.isBetween(
moment().startOf('week'),
moment().endOf('week')
)
task.due、task.priority 等可能为 null 的情况group by recurrence:按重复规则分组,部分版本可能存在渲染问题
hide recurrence rule:在查询结果中隐藏重复规则,Tasks 5.x 后此选项仍然有效
limit groups:限制每个分组显示的任务数量,避免分组过大
示例:
not done
group by folder
group by priority
limit groups 3 # 每个分组最多显示3个任务
sort by due
多行任务:
列表缩进:
示例:
# 正确格式
- [ ] 任务描述 📅 2024-12-31
- [ ] 子任务描述
# 错误格式(元数据不在第一行)
- [ ] 任务描述
额外说明 📅 2024-12-31
重要规则:
(due before tomorrow) OR (scheduled before tomorrow)priority is not high查询执行顺序:
not done
due after today
explain
- 全局设置了 path includes "Tasks/",但你需要查询其他路径的任务 - 全局设置了 not done,但你需要查询已完成的任务
默认排序:
全局查询行为:
ignore global query 指令展示优化:
示例:
not done
due in the next 7 days
short mode
hide task count
hide edit button
hide priority
sort by due
功能:在查询中使用动态占位符,实现基于当前上下文的智能查询
常用占位符:
示例:
# 仅查询当前文件内的任务
path includes {{query.file.path}}
not done
sort by due
# 查询描述中包含当前文件名的任务
description includes {{query.file.title}}
not done
sort by due
not done
(due before tomorrow) OR (scheduled before tomorrow)
priority equals high
path includes "Work"
sort by due
limit 5
not done
happens in the next 7 days
group by folder
group by priority
not done
due after today
due before in 14 days
sort by due ascending
1. 更新任务状态([ ] → [x]) 2. 自动添加completion日期(✅ YYYY-MM-DD) 3. 如有重复规则,生成新任务 4. 如有依赖任务,更新依赖状态
- 复制任务 - 删除任务 - 编辑原始内容 - 转到源文件
| 初始状态 | 操作 | 结果状态 | 附加行为 |
|---|---|---|---|
| [ ] 未开始 | 勾选 | [x] 完成 | 添加completion日期,处理重复 |
| [/] 进行中 | 勾选 | [x] 完成 | 同上 |
| [-] 已取消 | 勾选 | [x] 完成 | 保留取消状态历史 |
| [x] 已完成 | 取消勾选 | [ ] 未开始 | 移除completion日期 |
const result = await dv.query(`
TASK FROM #tasks
WHERE !completed
SORT due ASC
`);
dv.taskList(result.value);
// 推荐的DataviewJS访问方式
const tasks = dv.pages().file.tasks.filter(t => t.text.includes("📅") && !t.completed);
dv.taskList(tasks);
// 示例:只显示描述中包含数字的任务
const tasksWithNumbers = dv.pages().file.tasks.filter(t =>
t.text.match(/\d+/) !== null && !t.completed
);
dv.taskList(tasksWithNumbers);
// 遍历所有包含tasks标签的文件中的任务
for (let page of dv.pages('#tasks')) {
for (let task of page.file.tasks) {
// 访问任务属性
// task.completed - 任务是否完成
// task.due - 截止日期
// task.text - 任务文本(包含标签)
// task.section - 任务所在章节
// task.position - 任务在文件中的位置
}
}
TABLE WITHOUT ID
file.link AS "项目",
choice(length(filter(file.tasks, (t) => !t.completed)) > 0, "✅", "⏳") AS "状态",
dateformat(date(today) + dur("7 days"), "yyyy-MM-dd") AS "下周截止"
FROM "Projects"
WHERE contains(file.tasks.due, this.due)
| Tasks字段 | Dataview等效字段 | 注意事项 |
|---|---|---|
| 📅 due | task.due | 必须格式正确才被解析为日期 |
| ⏳ scheduled | task.scheduled | 同上 |
| ➕ created | task.created | 同上 |
| 🛫 start | task.start | 同上 |
| � priority | task.priority | 高/中/低映射为数值 |
| 🔁 recurrence | task.recurring | 布尔值 |
[
{"symbol": " ", "name": "todo"},
{"symbol": "/", "name": "in-progress"},
{"symbol": "x", "name": "done"},
{"symbol": "-", "name": "cancelled"}
]
- 配置路径:Obsidian设置 → 插件 → Tasks → 状态 - 状态符号映射示例:
``json [ {"symbol": " ", "name": "todo", "nextStatus": "in-progress"}, {"symbol": "/", "name": "in-progress", "nextStatus": "done"}, {"symbol": "x", "name": "done", "nextStatus": "todo"}, {"symbol": "-", "name": "cancelled", "nextStatus": "todo"}, {"symbol": "p", "name": "pending", "nextStatus": "in-progress"} ] ``
- 工作流转换规则:可配置每个状态的下一个默认状态,支持自定义工作流 - 查询语法:status is todo 或 status is not done
- 性能基准(Intel i5/16GB RAM/SSD): - 500任务:索引时间<0.5秒 - 2000任务:索引时间≈1.8秒 - 5000+任务:建议使用exclude path参数
exclude path减少索引范围,基于字符串包含匹配- exclude path "Archived/" 排除包含Archived的文件夹及子文件夹 - exclude path "Templates/" 排除包含Templates的文件夹 - exclude path "/Archive/" 更严格的匹配,避免误匹配My Archive等 - exclude path "Templates/" exclude path "Archive/" 同时排除多个路径
性能误区: - Tasks的路径过滤是基于字符串包含的,而非精确匹配 - 如果你的文件夹叫 My Archive,它也会被 exclude path "Archive" 排除 - 为了严格匹配,建议使用 exclude path "/Archive/" 格式 - 支持简单的前缀匹配,复杂glob模式的支持程度有限
- 按需查询:避免在常驻侧边栏的笔记中放置过于复杂的查询 - 查询策略:将复杂查询放在需要时才打开的专用笔记中 - 组合优化:结合exclude path和limit指令,减少单次查询的任务数量
- 限制调整:可通过修改插件设置中的"最大重复实例数"调整此限制 - 性能影响:超过100可能导致性能下降,特别是在移动设备上 - 最佳实践:根据实际需要设置合理值,一般项目建议50-100个实例
- 点击任务文本可能直接跳转到源文件,而非编辑模式 - 长按任务显示上下文菜单,包含完成、编辑等选项
- 移动端网络延迟可能导致自动完成操作响应较慢 - 重复任务生成可能在网络恢复后批量执行
- 移动设备上建议限制单个查询的任务数量(500条以内) - 减少复杂分组和排序操作以提升响应速度 - 考虑使用exclude path排除不常用文件夹
- 不支持自定义排序/分组函数 - 长按任务而非右键显示上下文菜单 - 重复任务生成可能延迟至网络恢复 - 建议单个查询限制在500条以内
path缩小范围,再应用其他过滤条件not done
(due before today) OR (scheduled before today) OR (start before today)
priority is high
hide recurrence rule
sort by priority, due
path includes "Projects/Website"
not done
group by heading
group by priority
limit 20
is recurring
priority is low
scheduled after 7 days ago
group by recurrence
sort by scheduled
depends on project-start
not done
sort by due
done
completed after last week
sort by completed
not done
due before next week
sort by due
created after last week
not done
sort by created
1. 关闭Obsidian 2. 删除 .obsidian/plugins/obsidian-tasks/cache 目录 3. 重启应用触发完整索引重建
- 查询语法更新,部分操作符变更 - 重复规则引擎重构 - 性能优化导致索引机制变化
- 备份现有库 - 逐步更新查询语句 - 验证重复任务行为
基本示例:
sort by function(task) {
return task.description.length;
}
高性能建议:处理空值情况以提高排序性能
// 按截止日期排序,处理空值
return task.due ? task.due.moment.valueOf() : 0;
// 按优先级排序,处理空值
return task.priority ? task.priority : 999;
// 自定义渲染器配置示例
const customRenderer = (task, element) => {
// 为高优先级任务添加红色边框和火焰图标
if (task.priority === 'high') {
element.style.borderColor = '#ff0000';
element.style.borderWidth = '2px';
element.style.borderStyle = 'solid';
// 查找或创建优先级元素
const priorityElement = element.querySelector('.task-priority');
if (priorityElement) {
priorityElement.innerHTML = '🔥';
priorityElement.title = '高优先级';
}
}
// 为接近截止日期的任务添加黄色背景
if (task.due && task.due.diffNow().days <= 3) {
element.style.backgroundColor = '#fff3cd';
}
// 为已完成任务添加绿色对勾
if (task.status === 'done') {
const statusElement = element.querySelector('.task-status');
if (statusElement) {
statusElement.innerHTML = '✅';
}
}
};
// 在插件设置中应用
// settings.customRenderer = customRenderer;
版本特性对应:
重要提示:Tasks插件持续更新,新版本可能引入向后不兼容的变更。升级前请备份库,并查阅更新日志。某些高级功能(如自定义状态符号、show tree)需要最新版本支持。