前言¶
在 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 中操作:
- 启用插件并打开 Web 侧边栏中的定时任务面板。
- 新建任务:填写名称、五段 cron、动作类型(Shell 或通知)及对应参数;若使用 Shell,先确认
allowShell与workDir等配置符合预期。 - 启停与编辑:在列表中启停或修改任务,观察下次执行时间是否随 cron 更新。
- 手动触发:用于验证 Shell 或通知链路,再结合执行日志排查失败原因。
- 重启宿主:确认
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 宿主内,适合作为工作流侧的定时层使用。目录页与源码: