V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
LEXUGE
V2EX  ›  分享创造

cascade - 自动从代办事项生成日程计划

  •  
  •   LEXUGE ·
    LEXUGE · 1 天前 · 410 次点击

    GitHub

    我做了个简单的 CLI 小工具,名叫 Cascade 。它的核心功能很简单:帮你把待-办事项( todo-list )自动规划成一份排期合理的日历。

    一直想要一个能处理任务依赖关系、自动躲开我的固定日程(比如吃饭、上课)的规划工具,市面上的产品要么太重,要么需要订阅。所以就自己动手造了这个轮子,可以看作是一个穷人版的 Motion 。

    主要特性

    • 智能时区处理:自动处理跨时区的截止日期和日程规划。
    • 任务依赖感知:能理解任务之间的前后关系(比如任务 B 必须在任务 A 完成后开始),并据此自动传递优先级和截止日期。
    • 导入外部日历:可以导入你的 Google Calendar 或公司日历(任何 .ics 链接),它会把这些现有安排作为背景事件,并围绕它们规划你的新任务。
    • 纯本地,无云端,无 AI:所有数据和计算都在你的电脑上完成,完全离线可用,尊重你的隐私。
    • 多目标优化:底层使用 Google OR-Tools 求解器,来寻找最优的日程安排。
    • 导出日历:可以轻松导出为 .ics 文件,导入到你喜欢的任何日历 App 中。

    🚀 快速上手

    安装

    如果你使用 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

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1375 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 17:09 · PVG 01:09 · LAX 10:09 · JFK 13:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.