dsh-cron:DeepSeek Harness 的定時任務調度插件

前言

DeepSeek Harness (DSH) 0.2.0 版本之後,官方的自動化日程變成了一個可選捆綁包,默認是關閉的。這意味着如果你升級了 DSH,原本依賴的定時任務可能會突然停止工作,需要手動開啓。此外,官方的 dsh-schedule 主要是會話綁定的提醒,無法滿足跨會話、持久化的定時需求。

如果你需要一種方式,讓任務無論在 TUI、Web 還是飛書界面都能觸發,並且需要支持標準的 Cron 表達式或固定間隔,dsh-cron 是一個直接可用的解決方案。它是一個獨立的插件,不依賴官方捆綁包,安裝後即可在所有 Profile 上運行。

核心功能

該插件爲 DSH 提供了基礎的定時調度能力,核心能力如下:

  • 四大工具:註冊了 cron_create(創建)、cron_list(列出)、cron_delete(刪除)、cron_report(彙報)四個工具,供 Agent 調用。
  • 雙規則形狀:
    • cron:支持標準的 5 字段日曆表達式(如 0 9 * * 1-5)。
    • every_seconds:支持固定間隔(如 600 秒)。
  • 強制有效期:爲了防止無限運行的 Cron 任務,所有重複任務必須設置有效期窗口(max_duration_seconds 或 end_at)。到期後會發送一個 expired 狀態並歸檔任務。
  • 錯過處理:如果任務執行時 Agent 處於離線或無活躍會話狀態,該時間點會被跳過並記錄,不會在 Agent 在線時延遲執行。這符合 Cron 的定義(“在時間 X 執行”)。
  • 持久化存儲:任務數據存儲在 $DSH_HOME/storages/cron/ 目錄下。

安裝與啓用

在安裝之前,請確保你的環境滿足以下條件:
* DeepSeek Harness 版本 >= 0.2.0-rc.2
* Node.js 版本 >= 22.19.0

執行以下命令安裝插件:

dsh plugin --profile tui add @aiwayds/dsh-cron

安裝完成後,插件會自動註冊,無需額外的配置切換。

典型用法

dsh-cron 的使用方式分爲 Agent 工具調用和人類命令行操作兩種。

Agent 工具調用示例

Agent 在對話中可以直接調用工具。以下是幾種典型的參數組合:

  1. 固定間隔任務:
    cron_create({ every_seconds: 600, prompt: '檢查 CI run 1234,終態則 cron_delete 本任務並彙報', max_duration_seconds: 7200 })
  1. 日曆規則任務:
    cron_create({ cron: '0 9 * * 1-5', prompt: '生成本週週報', end_at: '2026-12-31T23:59:59+08:00' })
  1. 即時執行模式:
    cron_create({ cron: '0 * * * *', prompt: '檢查磁盤使用率', delivery_policy: 'steer', execution_mode: 'self', max_duration_seconds: 86400 })

命令行使用示例

人類用戶也可以直接在 CLI 中使用命令:

/cron list
/cron create '0 * * * *' '檢查 CI run 1234,終態則刪除本任務' --for=7200
/cron create '0 9 * * 1-5' '生成周報' --until=2026-12-31T23:59:59+08:00
/cron delete a1b2c3d4
/cron history 20

適用場景與注意

  • 適用場景:適合需要跨會話、長期存在的定期任務,如每日定時檢查服務器狀態、定期生成報表、監控特定事件等。
  • 運行環境:插件以獨立進程運行,不依賴官方的自動化日程捆綁包。如果官方捆綁包被禁用,此插件仍可正常工作。
  • 數據目錄:請留意數據存儲在 $DSH_HOME/storages/cron/ 目錄。卸載插件不會自動刪除這些歷史記錄,如需清理請手動刪除該目錄。

總結

dsh-cron 解決了 DSH 在 0.2.0 之後官方日程默認關閉的問題,提供了一個輕量級、獨立的定時任務方案。通過強制有效期和錯過跳過的機制,它保證了任務的可控性。

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

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

小夜