peng-huiyang/cronjob-dsh-plugin

插件Plugin 原生Native ⭐ 2 Apache-2.0

尝试开发适配deepseek harness的定时任务插件,支持在前端页面直接设置定时任务,实现内部驱动的定时请求,满足一定程度上的脱手需求

项目介绍Project Overview

cronjob-dsh-plugin 是 DeepSeek Harness 的机器级定时任务插件,支持 cron 表达式与时区,可在 Web 设置页或通过 cron_create 等模型工具创建、启停、删除任务;到点由宿主在专用「定时任务」会话自动触发执行,任务持久化于 ~/.dsh/settings.yaml。适用于需要周期性自动运行任务的场景。注意:调度依赖 dsh web 进程,宿主关闭即停,重启后错过周期不补跑,且每次触发消耗 token。

cronjob-dsh-plugin is a machine-level scheduled-task plugin for DeepSeek Harness. It supports cron expressions with IANA time zones and lets you create, edit, toggle, delete, or fire jobs from the Web settings page or via cron_create/cron_list/cron_delete model tools. At schedule time, the host wakes a dedicated cron session and runs the task; jobs persist in ~/.dsh/settings.yaml. Use it for recurring automated tasks. Caveat: scheduling lives with the dsh web process—missed runs are not retried, and each trigger consumes model tokens.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add cronjob-dsh-plugin

peng-huiyang/cronjob-dsh-plugin 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

cronjob-dsh-plugin

中文 | English

面向 DeepSeek Harness机器级定时任务插件: 直接在 Web 设置页配置定时任务,到点后由宿主内部驱动、自动触发到专用「定时任务」会话 —— 脱手执行

功能

  • 真实 cron 表达式(5/6/7 段,支持 IANA 时区),基于 croner
  • Web 设置页「定时任务」:新建、编辑、启停、删除、立即触发,表单实时显示下次运行预览
  • 机器级持久任务表ctx.settings 命名空间,存储于 ~/.dsh/settings.yaml,重启不丢
  • 内部驱动触发:到点后宿主以 [CRON JOB] 用户消息唤醒专用会话,agent 执行任务并在该会话中回复
  • 模型工具 cron_create / cron_list / cron_delete:直接对 agent 说"以后每天 9 点做 X",它就帮你建任务
  • 宿主 HTTP 路由 /cronjob/*(list/create/update/toggle/delete/fire),变更类请求带同源校验

快速开始

# 1. 安装(npm 发布版)
dsh plugin --profile web add cronjob-dsh-plugin

# 2. 重启 dsh web
dsh web

# 3. 打开 设置 -> 定时任务,新建一个任务即可

零配置开箱即用:专用会话默认创建在 $DSH_HOME/cron-job(即 ~/.dsh/cron-job,插件自动创建), 与你的日常工作区完全隔离——不需要配置任何路径。

可选覆盖:想自定义专用会话的位置或名称时,编辑 ~/.dsh/profiles/web/cordis.patch.yml

- id: cronjob
  config:
    dedicatedSessionCwd: 'D:\你的\工作区'      # 可选:覆盖默认目录(必填绝对路径,需存在)
    dedicatedSessionName: '定时任务'           # 可选:新建专用会话时的初始名称

专用会话会自动归入其工作目录对应的工作区(而不是「未分组」),会话行支持重命名。 修改 dedicatedSessionCwd 后无需手动删除旧会话:下一次触发会自动轮换到新目录。

工作原理

模块 职责
store 任务表 CRUD(settings 命名空间,带校验与串行写)
scheduler 墙钟调度:算最近触发时刻 → 单定时器等待 → 唤醒后重读时钟,错过周期跳过
fire [CRON JOB] 消息入队到专用会话(whenIdle + runMaintenance + followup
routes /cronjob/* HTTP 接口,供设置页调用
tools cron_create / cron_list / cron_delete 模型工具
client 设置页「定时任务」UI(tsdown 构建的浏览器包)

文档

开发

npm install
npm run typecheck
npm test
npm run build   # host tsc -> lib/,client tsdown -> client/client.js

已知限制

  • 调度器随 dsh web 进程存活:宿主关闭即停;重启后从当前时间重算下一次,错过的周期不补跑
  • 每次触发 = 专用会话里一条用户消息,消耗模型 token;会话日志会持续增长,可用内置 /compact 压缩
  • 触发消息中的任务文本按不可信内容处理(防止提示注入)

许可证

Apache-2.0

上一个 Prev dsh-ivory 下一个 Next dsh-approval-auto-review