把 CPU 调度搬到人的多任务管理上
自适应退避提醒 · 端到端加密 · 跨设备同步 · 开源自用
挂起任务 · Markdown 备忘录 · 模板与统计 · Web Push / 飞书企微钉钉
把 CPU 的「上下文切换 + 自适应退避轮询」搬到人的多任务管理上。
单核 CPU 在等待某个任务(I/O、计时器)时会把它挂起(yield()),去做别的事,并周期性回来检查它是否就绪。人也一样:你启动了一次模型训练、或把某件事交给了某个人/agent,需要过一阵才有结果。Cadence 让你把这件事「挂起」,然后按一个自适应的回访节奏(cadence)回来提醒你确认,而不是一直占着你的注意力。
中文主界面 · 本地模式 · 任务挂起、Markdown 备忘录和语言切换
每个挂起任务带一个预计时长 ETA,第一次提醒正好落在 ETA。到点后可完成、标记还没好、稍后处理、重估时长,或在已完成后重新挂起。快速延后会在原定提醒时间上累加,不会缩短已有等待时间。间隔按两种策略自适应:
- 收敛式(默认,适合有可靠 ETA 的,如模型训练):过了 ETA 大概率快好了,间隔越来越短,快速收敛到确认完成。
- 指数式(适合等人 / 等 agent,ETA 不可靠):间隔翻倍,越等越少打扰。
护栏:最小间隔防刷屏、最大间隔封顶、±10% jitter 避免多任务撞车、过期加速。完整原理与调度动作见 docs/ARCHITECTURE.md。
- 挂起 + 自适应提醒:完成、还没好、没空看、重估、重新挂起;提醒弹窗提供
+10 分钟、+1 小时、明天等快速延后 - 备忘录(Markdown):任务可附带命令、链接和检查清单;支持编辑/预览与代码块复制,到点提醒时一并展示
- 模板与快速录入:把常用任务保存为模板;支持 URL 参数预填任务标题、ETA、策略和优先级
- 复盘统计:记录完成、延后与重估事件,展示完成数、ETA 偏差中位数/P90 和平均提醒次数
- 后台提醒与摘要:Web Push、飞书 / 企微 / 钉钉 Webhook,以及可选的每日通用摘要;Webhook 可单独选择是否发送任务明文(见 docs/PUSH.md)
- 可选云同步:Supabase Auth + Realtime;任务、模板和统计事件均可端到端加密。同步通过单调版本、条件写入和删除墓碑避免延迟写入覆盖新状态
- 中英文与主题:可切换中文 / English 以及浅色 / 深色 / 跟随系统主题;设置保存在当前浏览器,术语附带悬停说明
Cadence 提供三种即时通知通道与一项可选的每日摘要,可按使用环境组合开启:
| 通道 | 适用场景 | 说明 |
|---|---|---|
| 网页通知 | 网页保持打开 | 浏览器原生通知权限;页面运行时提醒,适合桌面端和日常使用 |
| 后台推送 | 关闭页面 / 锁屏 | Service Worker + Web Push;需要浏览器支持,中国大陆 Chrome 可能受推送服务限制 |
| 群机器人 Webhook | 中国大陆 / 团队协作 | 飞书、企业微信、钉钉直接接收群消息;不依赖浏览器保持打开,见 docs/PUSH.md |
| 每日摘要 | 每日回顾待办 | 按设定时区和时间,通过已配置的 Webhook 发送任务数量摘要;不包含 E2EE 任务内容 |
界面中的「开启网页通知」和「开启后台推送」是两条独立通道。大陆用户建议优先配置群机器人 Webhook。每日摘要是独立设置,不替代到点提醒。
任务可以附带 Markdown 备忘录,用来保存命令、链接、上下文和检查清单。备忘录支持居中宽模态编辑 / 预览,并会在输入后自动保存;到点提醒中点击备忘录即可直接打开编辑。
登录同步用户可使用 CLI 从终端创建或查看加密任务。CLI 在本机用 CADENCE_PASSWORD 解开 DEK;密码不会写入配置文件,也不会发送到 Cadence 服务端。
cd cli
npm install
npm run build
node dist/index.js login --url "$VITE_SUPABASE_URL" --anon-key "$VITE_SUPABASE_ANON_KEY" --username your-name --password 'login-password'
CADENCE_PASSWORD='login-password' node dist/index.js task add --title '等 CI 完成' --eta-ms 3600000
CADENCE_PASSWORD='login-password' node dist/index.js task list- React + Vite + TypeScript,纯静态前端
- 提醒:浏览器 Web Notification + Web Audio 铃声(网页开着时生效);可选后台 Web Push / 群机器人 Webhook
- 跨设备同步(可选):Supabase(Auth + Postgres + Realtime);任务同步使用版本决胜、条件写入与删除墓碑处理并发和乱序请求,未配置时退化为纯本地 localStorage
- 登录用户的任务内容、备忘录、模板与统计事件均在客户端 端到端加密 后再上云;云端仅保留推送所需的时间与状态元数据
- Markdown:
marked渲染 +DOMPurify消毒
git clone https://github.com/caseclose/cadence.git
cd cadence
npm install
npm run dev # http://localhost:5173/不配置任何后端即可使用(纯本地模式,数据存浏览器)。需要用户名登录、多设备同步、或部署上线,见下方文档。
当前版本优先支持 Android PWA,无需安装 Android Studio 或单独维护一套客户端:
- 用 Android Chrome 打开 在线版本。
- 登录后打开浏览器菜单,选择「安装应用」或「添加到主屏幕」。
- 从桌面启动 Cadence,即可使用独立窗口和离线界面缓存。
- 在应用内登录同一账号,任务会通过 Supabase 与 Web、CLI 等端同步。
PWA 离线缓存只负责打开界面;任务的云端同步仍需要网络。Android 后台提醒可使用 Web Push,具体可用性取决于浏览器和系统电池策略。后续如需 APK,再在此基础上接入 Capacitor 和 Android 本地通知。
| 文档 | 内容 |
|---|---|
| docs/ARCHITECTURE.md | 目录结构、数据流、调度引擎原理 |
| docs/DEPLOYMENT.md | 本地开发 / 本地部署 / GitHub Pages / Supabase 配置 |
| docs/PRIVACY-E2EE.md | 端到端加密机制(可转发给关心隐私的用户) |
| docs/PUSH.md | 后台提醒:Web Push + 飞书/企微/钉钉 Webhook |
| CONTRIBUTING.md | 开发约定与贡献流程 |
