obsidian-todo-collector
Obsidian 未完成事件整理
此技能用于在指定时间范围内,从 Obsidian 笔记中提取并汇总所有未完成的事件和规划性事项,生成一个统一的「未完成事件整理」文档,便于后续跟踪和管理。
处理流程
按照以下步骤执行:
步骤1 - 确定范围与目标
- 输入:用户指定的时间范围。仓库文档文件名前面必然是 YYYY-MM-DD(-hh),可以以通过文件名来筛选出指定时间范围内的文档。
- 目标文档:新建名为
YYYY-MM-DD-HH 📅 未完成事件整理.md的文档。该文档的结构是
## 文档生成说明
- 生成原因:整理指定时间范围内的未完成事件,便于后续跟踪和管理。
- 时间范围:{{时间范围}}
## 当前状态
所有待处理文档列表:
- [ ] {{待处理文档列表,每个文档使用 [[文件名]] 链接,处理完成后更新为已完成 [x] 状态}}
## 未完成事件列表
{{未完成事件列表,每个都是 ### 🟥 名称。若已经完成,则更新为 ### 🟩 名称}}
## 未完成规划性事项列表
{{未完成规划性事项列表,每个都是 ### 🟥 名称,若已经完成,则更新为 ### 🟩 名称}}
当前状态部分要在下面的循环中实时更新,显示已经处理到哪个日期的文档,以及剩余待处理的文档列表。
其中,「未完成事件」和「未完成规划性事项」的每一项都使用三级标题(###)进行标注,便于在文档中清晰展示。
「未完成事件」指的是具体工作,包括计划的、正在进行中的、未完成的任务。每个事件都应该包含以下信息:
- 名称
- 出现在哪些文档(可能是多份文档列表)
- 当前状态
「未完成规划性事项」指的是更加抽象的规划性事项,例如项目规划、战略规划等,虽然没有具体的截止日期,但仍然需要跟踪和管理。每个规划性事项也应该包含以下信息:
- 名称
- 出现在哪些文档(可能是多份文档列表)
- 当前状态
步骤2 - 处理主循环
执行下列循环,以依次处理「未完成事件整理」文档「当前状态」中的每个文档:
步骤2.1. 确定当前批次的「当前文档」:从未完成处理的文档中取出一批,每批最多 3 个文件。
步骤2.2. 预检该批文档:使用 Skill 提供的 Python 脚本进行预检,确保文档符合处理条件。
bash python3 scripts/pre_check.py [file] ... --lines 15
步骤2.3. 通过上述命令的结果,判断 - 文档是否属于「文档摘录」,「语音转写」这两种 - 或文档是否太大(超过 64KB)或太长(超过 1000 行) 如果是,使用 Ask User,询问用户是否跳过(默认选项是跳过)。 如果用户选择跳过,进入下一个文档的处理。
步骤2.4. 阅读文档全文。关注以下内容: - 是否包含未完成事件或工作(尤其是以 🟥 标记的未完成事项)。 - 是否包含未完成规划性事项(尤其是以 🟥 标记的未完成规划性事项)。 - 如果包含,提取相关信息(事情描述;出现的文档;当前状态),并将其添加到「未完成事件整理」文档的相应部分。无须过度处理信息,保持原文的描述即可。 - 如果文档中提及的事项显然已经完成(例如,以 🟩 标记),则更新「未完成事件整理」文档中该事项的状态为完成(🟩)。如果不确定是否完成,可以保留原状态(🟥),以便后续跟踪。
步骤2.5. 对「未完成事件整理」文档用多次批量编辑的方式,更新 未完成事件列表 和 未完成规划性事项列表,并编辑状态有更新的事项。注意,必须要更新待办事项部分。
步骤2.6. 在更新了待办事项之后,更新「未完成事件整理」文档的「当前状态」部分,给已经处理完成的文档打已完成 [x] 。这样可以清晰地知道已经处理了哪些文档,哪些文档还未处理。
步骤2.7. 跳回 步骤2.1(确定当前批次的「当前文档」),继续处理下一批文档,直到处理完指定时间范围内的所有文档。
编写要求
- 描述平实、清晰、直接。尽量摘录原始内容,保持原汁原味。
- 用链接
[[target-doc]]引用来源,确保可追溯性。 - 编辑文件的时候,用多次批量
replace工具进行增量更新,禁止使用write_file全量覆盖,以确保不会误删之前已经记录的内容。 - 编辑文件时,倾向于「追加更新」而不是修改已有内容。我会自己判断每个事项的最终状态。
- 对于「未完成事件整理」文档,在你不确定内容时,尽量先读再写。我会在合适时机 compress 或断点续传,你无须节省 token。
- 如果断点续传,在读取「未完成事件整理」的全文之后,直接从「处理主循环」开始。
- 必须在每一批文件处理后,更新文档中的待办和规划待办。不要提前看下一批文件,即使内容相关。你必须按照批次处理,逐步更新文档。