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