dsh-schedule-tasks:在 DSH 里用 cron 与侧边栏管理定时任务

前言

在 DeepSeek Harness(DSH)上跑工作流时,常见需求是「按时间表自动执行一段 Shell,或发一条站内通知」,并在 Web 界面里查看、启停和排查执行记录。若完全依赖系统 crontab 或外部调度器,任务定义与 DSH 进程、存储路径往往脱节,重启后状态也不在同一套 API 里维护。

下面介绍社区插件 dsh-schedule-tasks(维护者 uluckystar,MyDSH 社区,与 DeepSeek 官方无隶属关系):在宿主内实现标准五段 cron 调度,配合 Shell / 通知动作与 Web 侧边栏管理面板,任务持久化在 $DSH_HOME 下,通过同源 /api/schedule-tasks/* 与浏览器通信。

这是什么

dsh-schedule-tasks 是 DSH 的工作流类定时任务插件(当前包版本 0.1.1,MIT 许可证)。一句话定位:标准 cron 五段式调度 + Shell 命令或站内通知作为触发动作 + Web 侧边栏任务管理(列表、新建、编辑、启停、删除、手动触发、日志)。

面板轮询与调度共用同一套宿主逻辑,不是另起一套后台调度服务。每个任务带执行锁,避免重叠执行;进程重启后会重新计算下次执行时间,不会补跑错过的周期。

核心功能

调度与动作

  • 使用常见 五段 cron 表达式定义触发时间。
  • 动作类型包括:Shell 命令与通知(站内通知触发),具体字段以插件 UI 与 API 为准。

Web 侧边栏管理

浏览器通过同源路径 /api/schedule-tasks/* 与宿主通信,侧边栏提供任务列表、创建与编辑、启停、删除、手动触发以及执行日志查看。管理面板的刷新依赖轮询,与宿主内的 tick 调度一致。

持久化与并发

任务定义保存在:

$DSH_HOME/storages/schedule_tasks.json

写入采用目标目录内临时文件与原子替换,减轻跨文件系统 EXDEV 问题;文件权限为 0600。落盘失败会向调用方返回错误,而不是仅打日志却报告保存成功。部署前仍应在当前环境验证磁盘空间、目录权限与 $DSH_HOME 配置。

可配置项(cordis.patch.yml)

插件通过 cordis.patch.yml 暴露宿主侧配置,资料中明确出现的项包括:

配置项 含义(按名称)
maxLogsPerTask 单任务保留日志条数上限
shellTimeoutMs Shell 动作超时(毫秒)
allowShell 是否允许 Shell 类动作
tickIntervalMs 调度 tick 间隔(毫秒)
workDir Shell 等工作目录

Shell 在 DSH 宿主进程权限下执行,任务应由受信任的维护者配置与管理。

安装与启用

资料中的 README 未给出形如 dsh plugin add … 的单行安装命令;请勿凭仓库名自行拼接。仓库说明要点如下。

从 Git 使用预构建产物

本仓库随版本提交预构建的 lib/,从 Git 安装时无需用户自行准备 README 所述的内部 DSH 源码链接与完整编译链。建议将插件加入独立测试 profile,在隔离环境验证后再部署到日常使用的 profile。

验证范围建议包括:插件加载、创建任务、执行、修改、删除,以及重启后任务恢复。

从源码开发与自检(维护者 / 贡献者)

需要 Node 22 及以上、pnpm 10 及以上;内部 DSH 依赖需从源码 checkout 链接。设置 DSH_CHECKOUT 指向 deepseek-harness 源码路径后,可按 README 执行:

pnpm install
pnpm prepare:links
pnpm typecheck
pnpm build
pnpm verify
node --experimental-strip-types scripts/test-persistence.mjs

仓库声明与 CI 编译通过不能替代在目标 DSH 版本上的安装与启动实测;不宣称对所有 DSH 历史或未来版本兼容。问题反馈可附带 DSH / Node / 插件版本、操作系统及脱敏后的复现日志;社区反馈入口:https://mydsh.dev/feedback。

典型用法(流程)

资料未提供带具体 cron 表达式与 API 请求体的端到端示例,可按下列顺序在测试 profile 中操作:

  1. 启用插件并打开 Web 侧边栏中的定时任务面板。
  2. 新建任务:填写名称、五段 cron、动作类型(Shell 或通知)及对应参数;若使用 Shell,先确认 allowShell 与 workDir 等配置符合预期。
  3. 启停与编辑:在列表中启停或修改任务,观察下次执行时间是否随 cron 更新。
  4. 手动触发:用于验证 Shell 或通知链路,再结合执行日志排查失败原因。
  5. 重启宿主:确认 schedule_tasks.json 中任务仍在,且调度在重启后重新计算下次时间、不补跑遗漏周期。

浏览器侧一切管理操作应通过 /api/schedule-tasks/* 完成;不要把 API 内存状态当作已落盘的依据。

适用场景与注意

适合:需要在 DSH 宿主内做轻量定时自动化(脚本、健康检查、周期通知等),并希望与 Web UI、同源 API、统一存储目录一起维护的开发者或运维。

注意:

  • 插件以当前 dsh 进程用户与权限运行 Shell;安装与启用前应阅读源码与 MIT 许可证,并限制谁可以创建或修改任务。
  • 跨盘或特殊挂载环境下,仍应实测 $DSH_HOME/storages 的写入与原子替换是否正常。
  • 社区插件目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;生态理念是「一切皆插件」,本插件亦属 MyDSH 社区维护的第三方扩展。

结尾

dsh-schedule-tasks 把五段 cron、Shell / 通知动作、执行锁与持久化、以及侧边栏运维能力收拢到 DSH 宿主内,适合作为工作流侧的定时层使用。目录页与源码:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜