- plugins/dsh-scheduler: cron5字段/every:N 调度、持久化到 storages、 sched_add/list/remove/run_now/toggle 五工具(host-only) - assets/user-screenshot.png: 用户提供的 Codex 参考截图
dsh-scheduler — 定时任务插件
Host 侧定时任务调度器。给 DeepSeek Harness 补上缺失的定时任务能力。
能力
- 调度表达式
- cron 5 字段:
分 时 日 月 周,支持*、*/n、a-b、a,b,c(如*/10 * * * *每 10 分钟) - 间隔简写:
every:30s/every:5m/every:1h
- cron 5 字段:
- 动作:任意 cmd 命令行(可指定工作目录、超时)
- 持久化:任务存于
%DSH_HOME%\storages\dsh-scheduler.json,重启不丢 - 工具(注册给 agent 调用):
| 工具 | 作用 |
|---|---|
sched_add |
添加任务(名称/调度/命令/cwd/enabled) |
sched_list |
列出任务与运行状态 |
sched_remove |
按 id 删除 |
sched_run_now |
立即执行一次 |
sched_toggle |
启用/停用 |
实现要点
- 宿主插件环境没有
fs/process全局 → 文件读写走shell服务 + node 子进程 (btoa内置做 base64 传参,避免引号转义问题) - 每秒 tick(
ctx.timer.interval),ticking标志防重入 - 任务执行用
cmd /c <command>,默认 cwdD:\project,默认超时 60s - cron 的
nextRun预计算:从当前时间起逐分钟扫描(最多 7 天)
文件
host.js— 完整宿主插件源码- 部署方式:动态 Cordis 插件(
cordis_define+cordis_run),或归档到 presets/
示例
sched_add name="每30秒打点" schedule="every:30s" command="echo tick >> C:\Users\a1703\.dsh\logs\sched-demo.log"
sched_add name="每整点提醒" schedule="0 * * * *" command="msg * 整点提醒"
sched_list