前言¶
DeepSeek Harness (DSH) 0.2.0 版本之后,官方的自动化日程变成了一个可选捆绑包,默认是关闭的。这意味着如果你升级了 DSH,原本依赖的定时任务可能会突然停止工作,需要手动开启。此外,官方的 dsh-schedule 主要是会话绑定的提醒,无法满足跨会话、持久化的定时需求。
如果你需要一种方式,让任务无论在 TUI、Web 还是飞书界面都能触发,并且需要支持标准的 Cron 表达式或固定间隔,dsh-cron 是一个直接可用的解决方案。它是一个独立的插件,不依赖官方捆绑包,安装后即可在所有 Profile 上运行。
核心功能¶
该插件为 DSH 提供了基础的定时调度能力,核心能力如下:
- 四大工具:注册了
cron_create(创建)、cron_list(列出)、cron_delete(删除)、cron_report(汇报)四个工具,供 Agent 调用。 - 双规则形状:
cron:支持标准的 5 字段日历表达式(如0 9 * * 1-5)。every_seconds:支持固定间隔(如600秒)。
- 强制有效期:为了防止无限运行的 Cron 任务,所有重复任务必须设置有效期窗口(
max_duration_seconds或end_at)。到期后会发送一个expired状态并归档任务。 - 错过处理:如果任务执行时 Agent 处于离线或无活跃会话状态,该时间点会被跳过并记录,不会在 Agent 在线时延迟执行。这符合 Cron 的定义(“在时间 X 执行”)。
- 持久化存储:任务数据存储在
$DSH_HOME/storages/cron/目录下。
安装与启用¶
在安装之前,请确保你的环境满足以下条件:
* DeepSeek Harness 版本 >= 0.2.0-rc.2
* Node.js 版本 >= 22.19.0
执行以下命令安装插件:
dsh plugin --profile tui add @aiwayds/dsh-cron
安装完成后,插件会自动注册,无需额外的配置切换。
典型用法¶
dsh-cron 的使用方式分为 Agent 工具调用和人类命令行操作两种。
Agent 工具调用示例¶
Agent 在对话中可以直接调用工具。以下是几种典型的参数组合:
- 固定间隔任务:
cron_create({ every_seconds: 600, prompt: '检查 CI run 1234,终态则 cron_delete 本任务并汇报', max_duration_seconds: 7200 })
- 日历规则任务:
cron_create({ cron: '0 9 * * 1-5', prompt: '生成本周周报', end_at: '2026-12-31T23:59:59+08:00' })
- 即时执行模式:
cron_create({ cron: '0 * * * *', prompt: '检查磁盘使用率', delivery_policy: 'steer', execution_mode: 'self', max_duration_seconds: 86400 })
命令行使用示例¶
人类用户也可以直接在 CLI 中使用命令:
/cron list
/cron create '0 * * * *' '检查 CI run 1234,终态则删除本任务' --for=7200
/cron create '0 9 * * 1-5' '生成周报' --until=2026-12-31T23:59:59+08:00
/cron delete a1b2c3d4
/cron history 20
适用场景与注意¶
- 适用场景:适合需要跨会话、长期存在的定期任务,如每日定时检查服务器状态、定期生成报表、监控特定事件等。
- 运行环境:插件以独立进程运行,不依赖官方的自动化日程捆绑包。如果官方捆绑包被禁用,此插件仍可正常工作。
- 数据目录:请留意数据存储在
$DSH_HOME/storages/cron/目录。卸载插件不会自动删除这些历史记录,如需清理请手动删除该目录。
总结¶
dsh-cron 解决了 DSH 在 0.2.0 之后官方日程默认关闭的问题,提供了一个轻量级、独立的定时任务方案。通过强制有效期和错过跳过的机制,它保证了任务的可控性。