Skip to content
dsh.fish
Bundle

dsh-tui-cron

Cron schedules for dsh-TUI: /cron saves 5-field cron entries that fire a prompt into the live conversation as a follow-up user message.

Source
FUSU123fusu
License
MIT
Updated
Updated 6 days ago

Readme

# dsh-tui-cron

> 适用于 [dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI)([dshtui.com](https://dshtui.com))的社区插件。

dsh-TUI 的定时任务插件:`/cron` 保存一条标准 5 段 cron 计划和提示词,到点把提示词作为一条**后续用户消息**(follow-up user message)发进当前会话——正在跑的轮次不会被打断,消息排进队列成为下一轮。

[English](#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`)。

## 安装

暂未发布到 npm,从源码打包安装:

```bash
git clone https://github.com/FUSU123fusu/dsh-tui-cron.git
cd dsh-tui-cron
npm pack
dsh plugin --profile <你的profile> add file:dsh-tui-cron-0.1.0.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. `nextFire` fast-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

Install

dsh plugin --profile web add github:FUSU123fusu/dsh-tui-cron

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source