我做了个简单的 CLI 小工具,名叫 Cascade 。它的核心功能很简单:帮你把待-办事项( todo-list )自动规划成一份排期合理的日历。
一直想要一个能处理任务依赖关系、自动躲开我的固定日程(比如吃饭、上课)的规划工具,市面上的产品要么太重,要么需要订阅。所以就自己动手造了这个轮子,可以看作是一个穷人版的 Motion 。
如果你使用 nix ,一行命令即可:
nix run github:LEXUGE/cascade
或者,克隆仓库后使用 uv (或任何 Python 环境管理工具) 运行:
uv run cascade
目前通过一个简单的 REPL (交互式命令行) 来使用。
> import
Successfully imported tasks from /home/foo/cascade-demo.yml
> schedule next_day 2days
Downloading calendar from https://mycalendar.org/cal.ics ...
Schedule for 2025-09-13 00:00:00-07:00 → 2025-09-15 00:00:00-07:00
Total utility: 14.0
Total length: 10:20:00
Task "Learning A" scheduled at 2025-09-13 09:00:00-07:00 → 2025-09-13 09:50:00-07:00. Length: 0:50:00, Utility: 2.0
Task "Finish B" scheduled at 2025-09-13 09:50:00-07:00 → 2025-09-13 11:50:00-07:00. Length: 2:00:00, Utility: 2.0
Task "Task 1" scheduled at 2025-09-13 13:00:00-07:00 → 2025-09-13 13:50:00-07:00. Length: 0:50:00, Utility: 2.0
Task "Task 2" scheduled at 2025-09-13 13:50:00-07:00 → 2025-09-13 14:40:00-07:00. Length: 0:50:00, Utility: 2.0
Task "B Note-taking" scheduled at 2025-09-13 14:40:00-07:00 → 2025-09-13 16:00:00-07:00. Length: 1:20:00, Utility: 2.0
Task "Looking into C" scheduled at 2025-09-13 16:00:00-07:00 → 2025-09-13 17:50:00-07:00. Length: 1:50:00, Utility: 1.0
Task "Task 3" scheduled at 2025-09-13 19:00:00-07:00 → 2025-09-13 19:50:00-07:00. Length: 0:50:00, Utility: 2.0
Task "Misc" scheduled at 2025-09-13 19:50:00-07:00 → 2025-09-13 21:40:00-07:00. Length: 1:50:00, Utility: 1.0
命令很简单:
import [<你的待办事项.yml>]
:导入你的任务清单。成功导入一次后,之后可以直接用 import
重新加载。schedule <开始时间> <持续时长>
:进行排期。例如 schedule next_day 2days
会从明天凌晨 00:00 开始,为你规划一个 48 小时的日程。schedule export ics
:将生成的日程打印成 ics 格式,你可以直接复制并保存为 .ics 文件。具体内容详见 GitHub