前言¶
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 在對話中可以直接調用工具。以下是幾種典型的參數組合:
- 固定間隔任務:
cron_create({ every_seconds: 600, prompt: '檢查 CI run 1234,終態則 cron_delete 本任務並彙報', max_duration_seconds: 7200 })
- 日曆規則任務:
cron_create({ cron: '0 9 * * 1-5', prompt: '生成本週週報', end_at: '2026-12-31T23:59:59+08:00' })
- 即時執行模式:
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 之後官方日程默認關閉的問題,提供了一個輕量級、獨立的定時任務方案。通過強制有效期和錯過跳過的機制,它保證了任務的可控性。