DeepSeek Harness 持久化定时任务与心跳插件

前言

DeepSeek Harness (DSH) 自带的 dsh-schedule 仅支持在当前会话中存储提醒。若需跨项目、跨会话的持久化自动化能力,需要引入全局插件。dsh-scheduled 正是为此设计,它提供了一个全局自动化插件实例,由 ylxmf2005 维护,遵循 MIT 协议。

插件定位

该插件负责在 DSH 中实现持久化的心跳和 Cron 自动化。与仅作用于会话日志的内置组件不同,它将自动化状态存储在全局文件中,支持跨会话和跨项目的调度任务。

核心功能

  1. 持久化心跳:恢复一个已保存的 DSH 会话,并在该线程中继续跟进。
  2. 定时任务:为每次运行创建新的项目会话,支持可选的隔离 Git worktree。
  3. RFC 5545 规则:支持 IANA 时区,提供 DST(夏令时)感知的墙钟调度。
  4. 数据持久化:自动化状态和历史记录存储在一个原子 JSON 文件中,位于 $DSH_HOME/automations/automations.json。
  5. 健壮性设计:包含重叠预防、跳过记录、中断恢复以及显式的错误代码。
  6. 操作界面:提供 Agent 工具以及基于同一 Host RPC 服务的 Web 设置页面。
  7. 生命周期管理:使用 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 提供了可靠的自动化能力。通过上述配置和工具,可以构建跨越会话和项目的自动化工作流。

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

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

小夜