名称: todo-management
描述: 基于工作区的 SQLite 待办事项管理器(数据库文件为 ./todo.db),支持分组和任务状态(待处理/进行中/已完成/已跳过)。所有操作通过 {baseDir}/scripts/todo.sh 脚本执行,支持添加、列出、编辑、移动、删除条目以及管理分组。
元数据: {"openclaw":{"emoji":"📝","requires":{"bins":["sqlite3"]}}}
user-invocable: true
一个基于工作区的 SQLite 数据库:
- 默认路径:./todo.db
- 可覆盖:通过环境变量 TODO_DB=/path/to/todo.db
所有更改必须通过 CLI 进行:
bash {baseDir}/scripts/todo.sh ...
pending(默认)、in_progress、done、skipped
默认列表会隐藏 done 和 skipped 状态的任务,除非使用 --all 或 --status=... 参数。
todos.md、笔记、Markdown 文件、导出文件等)。todos.md (...) 的“文件名块”。todo.db 中,且只能通过 todo.sh 脚本修改。允许的确认语示例(请根据需要翻译):
- “完成。”
- “已添加。”
- “已更新。”
- “已删除。”
- “已移动。”
- “已重命名。”
- “已清空。”
- “已添加到列表。”
如果用户请求一个破坏性操作但未指定 ID(例如“删除买牛奶的任务”):
1) 运行 entry list(可选用 --group=... 参数)
2) 显示结果(最小化表格形式)
3) 询问要对哪个 ID 执行操作
这是唯一可以在用户未明确要求时显示列表的情况。
group remove "X" 默认会将条目移至“收件箱”(Inbox)。--delete-entries 参数。bash {baseDir}/scripts/todo.sh entry create "买牛奶"bash {baseDir}/scripts/todo.sh entry create "开发功能 X" --group="工作" --status=in_progressbash {baseDir}/scripts/todo.sh entry listbash {baseDir}/scripts/todo.sh entry list --group="工作"bash {baseDir}/scripts/todo.sh entry list --allbash {baseDir}/scripts/todo.sh entry list --status=donebash {baseDir}/scripts/todo.sh entry show 12bash {baseDir}/scripts/todo.sh entry edit 12 "改买燕麦奶"bash {baseDir}/scripts/todo.sh entry move 12 --group="收件箱"bash {baseDir}/scripts/todo.sh entry status 12 --status=donebash {baseDir}/scripts/todo.sh entry status 12 --status=skippedbash {baseDir}/scripts/todo.sh entry remove 12bash {baseDir}/scripts/todo.sh group create "工作"bash {baseDir}/scripts/todo.sh group listbash {baseDir}/scripts/todo.sh group rename "工作" "工作(项目A)"bash {baseDir}/scripts/todo.sh group edit "工作" "工作(项目A)"bash {baseDir}/scripts/todo.sh group remove "工作"bash {baseDir}/scripts/todo.sh group remove "工作" --delete-entries要清空待办列表:
1) 运行 entry list --all 获取所有 ID(不要粘贴结果)
2) 对每个 ID 执行 entry remove ID
3) 回复一行:“已清空。”
如果用户随后要求查看列表,则运行 entry list 并显示结果。
用户:“我需要买牛奶,把它加到我的待办列表里”
助手:“完成。”
用户:“哦,我还需要打扫房间”
助手:“已添加到列表。”
用户:“显示我的待办事项”
助手:(打印列表)
用户:“删除买牛奶的那个”
助手:(列出匹配的任务 + 询问要操作的 ID,然后在用户提供 ID 后执行删除)