Jeff1573/dsh-plugin-scheduled-tasks0

dsh-plugin-scheduled-tasks

Scheduled tasks for DeepSeek Harness (dsh): at a daily / weekly / fixed-interval trigger, open a new session, send a prompt, and optionally push the result to a webhook.

包名
dsh-plugin-scheduled-tasks
版本
0.1.0
许可证
MIT
最近更新
2026年8月19日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Jeff1573/dsh-plugin-scheduled-tasks

使用

重启后侧边栏底部会出现「定时任务」入口,点开就是面板。

建第一个任务

面板右下角「新建任务」。必填只有三项:

字段说明
触发时间「每天」/「每周」/「间隔」三选一。前两者填时:分,按表单下方显示的时区计算;「间隔」填分钟数(≥5)
任务名称列表和通知里显示的名字
你希望 dsh 做什么?到点后新建一个会话,把这段内容作为第一条消息发出

点「创建」即生效,列表里每行会显示下一次触发时间。

高级选项

同一个表单里展开「高级选项」:

  • 工作目录 —— 留空则用默认 cwd
  • 权限预设 —— 无人值守建议选 scheduled;留空跟随全局默认,而全局默认通常是会发问的,定时运行会卡住直到超时
  • Agent 预设 —— 留空跟随全局默认
  • 运行超时 —— 默认 30 分钟,到点 agent.cancel() 并记为「超时」
  • 失败后 5 分钟自动重试一次 —— 只重试一次,不串联
  • 进程重启后,若已错过触发则补跑一次 —— 默认关闭
  • 完成后通知 / 附带模型回复摘要 —— 可覆盖全局设置

运行与查看

列表每行有「立即运行 / 编辑 / 暂停 / 删除」:

  • 立即运行 会等到会话创建完成就跳进那个对话,可以看着它流式生成
  • 定时触发 的会话会在生成过程中自己出现在侧边栏,但不会抢占你正在看的界面
  • 历史 N 展开该任务的运行记录,每条都能点开对应会话;状态分 成功 / 失败 / 超时 / 已中断
  • 入口上带红点表示最近有失败

编辑复用新建表单,只是标题变成「编辑自动化任务」。编辑正在运行中的任务不会打断那一次运行,它跑完后按新记录重排。

完成通知

面板里「通知设置」,勾选「启用完成通知」后选通道:

通道怎么填
Bark(iOS 推送)地址填 App 给的 https://api.day.app/,自架的 Bark 服务器同样可以
企业微信群机器人群里添加「群机器人」,把它给的 Webhook 地址粘进来。官方接口、无需 OAuth,但个人用要先注册企业才能建群
自定义模板地址填服务端点,下面粘贴它要的 JSON body,用 {{占位符}} 取值。界面里有 ntfy / Server酱 / Telegram / 飞书 / 钉钉的现成模板可一键套用
自定义 JSON webhook固定结构 {source, task, taskId, status, at, host, sessionId, detail?, reply?},发给你自己写的接收端

可用占位符:task taskId status statusText at atIso host sessionId detail reply

其余几项:

  • 默认时机 —— 「每次运行结束都通知」或「仅失败或超时时通知」,单个任务可在自己的高级选项里覆盖为 always / failure / never
  • Web 界面地址(可选) —— 填了之后推送会带上 /?dsst-session=,点通知直接跳到那次运行的会话。地址必须是收通知的设备能访问到的(内网 IP、内网穿透域名等),127.0.0.1 只在本机有效。
  • 默认附带模型回复摘要 —— 默认关闭,开启后只发前 200 字。通知本身必然要把任务名、时间、状态、主机名发出这台机器;回复内容属于额外外发,所以做成显式开关。
  • 发送测试通知 —— 会立刻向已保存的地址真实发送一条消息。

几条约束:

  • 地址即密钥。企业微信把 robot key 放在 query string 里,所以 URL 整体当凭据处理:存 ctx.credentialsSCHEDULED_TASKS_NOTIFY_URL(落在 ~/.dsh/.credentials.yaml,权限 600),不进任务表,也永不回传给浏览器——前端只拿到「是否已配置」和 origin。表单里留空表示「保持不变」。
  • 公网必须 https;明文 http 只允许发往本机或内网(127/10/192.168/172.16-31、localhost*.local),这样自架的 Bark/ntfy 在局域网里能直接用,而带 key 的地址永远不会明文走公网。
  • 通知失败不会把成功的运行记成失败:投递错误写在该次运行记录的 notifyError 上,仅此而已。
  • 企业微信群机器人有频率限制(每分钟约 20 条),高频间隔任务请酌情用「仅失败时通知」。
  • 个人微信没有官方发送接口。 网上看着能用的那些库走的是逆向出来的网页/桌面协议,违反服务条款且会导致封号,所以这里不提供这种渠道。想在微信里收,走企业微信(可转发到个人微信)或 Server酱 一类的服务号中转(用「自定义模板」通道)。纯个人用其实 Bark / ntfy 更顺手,而且可以自架。

在对话里排任务

scheduled_task_list / scheduled_task_create / scheduled_task_delete 注册在根 context 上,所以每个会话都能用。「每天九点帮我看一下 CI」可以在对话里直接说,不必打开面板。

scheduled_task_create 的参数:namepromptkinddaily / weekly / interval)、hourminuteweekdays(0=周日)、minutes(≥5)、timeZonecwd、权限预设。

注意定时任务跑起来的会话同样能看到这三个工具,也就是说一个定时任务可以再排新的定时任务。