前言¶
DeepSeek Harness (DSH) 自带的 dsh-schedule 仅支持在当前会话中存储提醒。若需跨项目、跨会话的持久化自动化能力,需要引入全局插件。dsh-scheduled 正是为此设计,它提供了一个全局自动化插件实例,由 ylxmf2005 维护,遵循 MIT 协议。
插件定位¶
该插件负责在 DSH 中实现持久化的心跳和 Cron 自动化。与仅作用于会话日志的内置组件不同,它将自动化状态存储在全局文件中,支持跨会话和跨项目的调度任务。
核心功能¶
- 持久化心跳:恢复一个已保存的 DSH 会话,并在该线程中继续跟进。
- 定时任务:为每次运行创建新的项目会话,支持可选的隔离 Git worktree。
- RFC 5545 规则:支持 IANA 时区,提供 DST(夏令时)感知的墙钟调度。
- 数据持久化:自动化状态和历史记录存储在一个原子 JSON 文件中,位于
$DSH_HOME/automations/automations.json。 - 健壮性设计:包含重叠预防、跳过记录、中断恢复以及显式的错误代码。
- 操作界面:提供 Agent 工具以及基于同一 Host RPC 服务的 Web 设置页面。
- 生命周期管理:使用 Cordis 拥有的计时器,确保插件效果与 DSH 生命周期一同销毁。
安装与启用¶
该插件是一个 DSH Bundle,可通过插件命令安装。
方式一:指定 Commit 安装
dsh plugin --profile web add github:ylxmf2005/dsh-scheduled#56c067b
安装完成后,重启 DSH,进入 Settings > Plugins > Scheduled 进行配置。
方式二:使用预构建包
若无需源码构建,可使用 v0.1.4 的预构建包:
dsh plugin --profile web add https://github.com/ylxmf2005/dsh-scheduled/releases/download/v0.1.4/dsh-scheduled-0.1.4.tgz
方式三:从源码构建
从 GitHub 克隆后,需在 profile 的 pnpm-workspace.yaml 中允许构建:
allowBuilds:
dsh-scheduled: true
然后运行安装命令(需替换为具体 commit hash):
dsh plugin --profile web add github:ylxmf2005/dsh-scheduled#<commit>
典型用法¶
调度格式
调度配置使用 RFC 5545 文本格式。若涉及墙钟时间,必须包含 DTSTART 和 TZID:
DTSTART;TZID=Asia/Shanghai:20260822T090000
RRULE:FREQ=DAILY;BYHOUR=9;BYMINUTE=0
工具操作
automation_update 工具提供了 create、list、view、update、delete、run、runs 和 mark_read 等操作。
错误处理
失败的运行会被记录,且不会自动重试。除非手动暂停或完成自动化,否则下一次重复周期依然会保持已调度状态。
适用场景与注意¶
环境要求
需要 Node.js 版本 >= 22.19.0 以及 pnpm。
源码安全
Git 安装方式会获取源码并运行包自带的 prepare 构建脚本。仅允许从可信来源构建源码。
存储与 Worktree
* 存储文件:使用临时文件重命名机制写入,若启动时发现存储文件损坏,会报错退出而非静默丢弃调度,确保数据安全。
* Worktree:默认保留 Cron 运行创建的 Git worktree,以便任务完成后仍可检查 DSH 会话和代理变更。检查完毕后手动删除。
结尾¶
dsh-scheduled 通过全局状态管理和 RFC 5545 标准,为 DeepSeek Harness 提供了可靠的自动化能力。通过上述配置和工具,可以构建跨越会话和项目的自动化工作流。