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 提供了可靠的自動化能力。通過上述配置和工具,可以構建跨越會話和項目的自動化工作流。

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

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

小夜