dsh-tui-cron
适用于 dsh-TUI(dshtui.com)的社区插件。
dsh-TUI 的定时任务插件:/cron 保存一条标准 5 段 cron 计划和提示词,到点把提示词作为一条后续用户消息(follow-up user message)发进当前会话——正在跑的轮次不会被打断,消息排进队列成为下一轮。
English below.
用法
/cron " 打开任务面板(非 TUI 宿主退化为文本列表)
/cron add <分> <时> <日> <月> <周> <提示词> " 添加,返回 id 和下次触发时间
/cron rm <id> " 删除(精确 id 或唯一前缀)
/cron on <id> " 启用
/cron off <id> " 停用
面板按键:↑/↓ 选择 · 空格 启用/停用 · d 删除(3 秒内按两次确认)· Esc 退出。
示例:
/cron add 0 9 * * 1-5 提醒我整理今天的站会要点
/cron add */30 9-18 * * * 检查一下后台任务面板有没有失败的 job
cron 语法速查
五段:分 时 日 月 周。每段支持 *、*/n、a、a-b、a-b/n、逗号列表;周 0-7(0 和 7 都是周日)。日/周同时为限制值时是 或 语义(Vixie cron 惯例):任一匹配即触发。
*/15 * * * * " 每 15 分钟
0 9 * * 1-5 " 工作日 9:00
0 0 1,15 * * " 每月 1 号和 15 号 0:00
0 0 13 * 5 " 每个周五,以及每月 13 号(或语义)
重要限制:进程生命周期
调度器只活在当前 dsh profile 进程里:启动时从此刻计算每条任务的下次触发时间,TUI 不在线期间错过的时点不会补跑。要任务能触发,请保持 dsh-TUI 开着。如果到点时还没有任何顶层会话(agent)创建过,本次触发跳过并写 warn 日志。
数据存在 ~/.dsh-tui/cron.json(纯 JSON 数组,可手改,格式:id / cron / prompt / enabled / createdAt / lastFiredAt)。
安装
dsh plugin --profile <你的profile> add dsh-tui-cron
或从源码:npm pack 后 dsh plugin --profile <你的profile> add file:<tgz路径>。
开发
node --test " 单元测试(cron 解析/nextFire 预言机对照、存储、调度器、manifest)
English
Cron schedules for dsh-TUI: /cron saves a standard 5-field cron expression plus a prompt, and when a slot comes due the prompt is injected into the live conversation as a follow-up user message (agent.followup) — a running turn is never interrupted, the message queues as the next turn.
- Parser:
*,*/n,a,a-b,a-b/n, comma lists; dow 0-7 (0 and 7 = Sunday); Vixie dom/dow OR-semantics.nextFirefast-forwards field by field with a ~4-year cap. - Process-lifetime limitation: the scheduler lives only while this dsh profile process runs. Next fires are computed from now at startup — slots missed while the TUI was offline are never caught up.
- Storage:
~/.dsh-tui/cron.json, best-effort plain JSON. - Panel keys: ↑/↓ select · Space toggle · d delete (double-press confirm) · Esc quit. Degrades to a text list on hosts without the scene seam.
MIT
No comments yet. Be the first to write one.