uluckystar/dsh-schedule-tasks

dsh-schedule-tasks

DSH 定时任务插件:标准 cron 5 段式调度 + shell/通知触发动作 + Web 侧边栏管理面板。by MyDSH 社区 (mydsh.dev)

Uncategorized

dsh-schedule-tasks

MyDSH 非官方社区维护的 DeepSeek Harness 定时任务插件,与 DeepSeek 官方无隶属关系。

支持五段 cron、Shell 命令或通知动作、侧边栏任务管理、手动触发和执行日志。浏览器通过同源 /api/schedule-tasks/* 与宿主通信;面板轮询不是另一套后台调度。每个任务有执行锁,避免重叠;重启后重新计算下次执行时间,不补跑错过的任务。

持久化与失败处理

任务保存在 $DSH_HOME/storages/schedule_tasks.json,使用目标目录内的临时文件和原子替换,避免跨文件系统 EXDEV。文件权限为0600。落盘失败向调用方传递,不能仅记录警告然后报告保存成功。部署前仍应验证当前运行环境、磁盘与权限;不能把 API 内存状态当成落盘证据。

开发与安装

Node 22及以上,pnpm 10及以上;内部 DSH 依赖从源码 checkout 链接。设置 DSH_CHECKOUT=/path/to/deepseek-harness 后执行:

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

本仓库随版本提交预构建的 lib/,从 Git 安装无需用户自行准备内部编译依赖。将本仓库加入独立测试 profile,再验证插件加载、创建任务、执行、修改、删除和重启恢复。先在隔离环境验证,再部署到实际使用的 profile。

cordis.patch.yml 提供 maxLogsPerTask、shellTimeoutMs、allowShell、tickIntervalMs、workDir 配置。Shell 命令在宿主权限下运行,任务应由受信任的维护者管理。

兼容性

仓库声明和编译通过不能替代指定 DSH 版本的安装与启动实测。本轮修复覆盖已部署环境的跨盘持久化问题;不宣称对所有 DSH 历史或未来版本兼容。报告问题时请提供 DSH/Node/插件版本、操作系统和去除凭据后的复现日志。

MIT License;社区反馈:https://mydsh.dev/feedback

0.1.2 生命周期与数据保护

插件入口通过 Cordis 类插件生命周期初始化调度服务,停用时由同一作用域释放计时器。缺失的任务文件可以初始化为空;已有文件 JSON 损坏、结构不符或不可读取时停止初始化并保留原文件,避免用空表覆盖。zod 作为运行依赖随插件安装,不要求宿主额外提供。

发行包隔离验收:npm run verify:lifecycle。验收只使用临时 DSH_HOME,不读写正式任务文件。此版本不会自动替换既有部署。