前言¶
DeepSeek Harness (DSH) 的核心理念是「一切皆插件」。在實際開發中,智能體往往需要定期執行特定任務(如數據導出、週報生成)。傳統的做法通常需要編寫獨立的腳本或手動觸發。dsh-plugin-cron 插件通過引入 Cron 調度機制,允許開發者按表達式自動調度 Agent 任務,直接在 DSH 的會話上下文中注入消息,觸發完整的 Agent 執行流程。
插件概覽¶
這是由 LittleBlackTong 維護的 dsh-plugin-cron-scheduler 插件。它爲 DSH 提供了一個定時任務調度器,支持通過標準 Cron 表達式或側邊欄 UI 管理任務。當觸發時間到達時,插件會向目標會話注入一條 User 類型的消息,進而觸發 Agent 的完整一輪執行(包括調用工具、讀寫文件、拉取數據等)。
核心功能¶
插件具備以下主要能力:
- Cron 調度:支持標準 5 字段 Cron 表達式(分 時 日 月 周),支持單值、範圍、步進和通配符。
- 會話策略:
new:每次觸發創建新會話,實現任務隔離。fixed:綁定指定會話,保持上下文累積。
- 雙通道創建:支持在對話中使用自然語言(通過
cron_manage工具),或在側邊欄 UI 中創建和編輯任務。 - 持久化與併發:任務數據保存在 Host 平面的 JSON 文件中(
<dshHome>/cron-jobs.json)。具備併發保護機制,若上一次執行未結束,新的觸發週期會自動跳過。 - 執行歷史:記錄每次觸發的狀態(成功/失敗/跳過)、錯誤信息和運行次數,並在側邊欄列表中展示。
- 手動觸發:支持通過列表中的「立即運行」按鈕或對話命令
cron_manage run立即執行一次。 - 側邊欄 UI:
- 註冊在側邊欄底部(
sidebar.footer.action)。 - 任務列表內聯顯示,支持新建、編輯、刪除、啓停、立即運行等操作。
- 採用 ResizeObserver 實現寬度自適應,容器寬度小於 220px 時自動摺疊部分文本並顯示 Tooltip。
- 註冊在側邊欄底部(
- HTTP API:提供
/api/cron/*路由,支持列出任務、新建任務、立即運行以及列出存活會話。
安裝與啓用¶
通過 DSH 的命令行工具安裝:
dsh plugin --profile <profile> add dsh-plugin-cron-scheduler
安裝後重啓 DSH 進程即可生效。任務配置保存後無需重啓,側邊欄 UI 會自動更新。
使用方法¶
對話自然語言¶
在 DSH 的對話窗口中,可以使用 cron_manage 命令創建任務。例如:
阿周:每週一 10:30 幫我導出上一週的 ZDP 數據
小藍:(調用 cron_manage 工具)已創建「每週導出ZDP上週數據」,下次執行:下週一 10:30
支持的操作包括 create / list / update / delete / toggle / run。
Cron 表達式¶
標準 Cron 表達式格式爲 分 時 日 月 周:
* * * * *
│ │ │ │ └─ 周幾 (0-7,0 和 7 = 週日)
│ │ │ └─── 月 (1-12)
│ │ └───── 日 (1-31)
│ └─────── 時 (0-23)
└───────── 分 (0-59)
常見示例:
| 表達式 | 含義 |
|---|---|
0 10 * * * |
每天 10:00 |
30 10 * * 1 |
每週一 10:30 |
*/5 * * * * |
每 5 分鐘 |
0 17 * * 5 |
每週五 17:00 |
會話綁定¶
使用 fixed 策略時,需要綁定一個存活會話。側邊欄 UI 提供下拉選擇,直接列出所有存活會話的標題,無需手動輸入 ID。如果綁定的會話在觸發時已不存在,插件會自動新建一個會話並回寫 fixedSessionId。
配置與注意事項¶
配置項¶
插件的 Host 平面配置主要包含以下兩項:
| 鍵 | 默認值 | 說明 |
|---|---|---|
configFile |
<dshHome>/cron-jobs.json |
任務數據存儲路徑 |
cwd |
process.cwd() |
new 策略新建會話時的工作目錄 |
重要邊界¶
- 進程存活依賴:任務只在 DSH 進程活着時存在。如果進程關閉期間到了觸發時間,該次觸發會被直接跳過,重啓後從當前時間重新計算下一次運行時間(不補跑)。
- 版本兼容性:插件依賴 DSH session format v4(官方 DeepSeek Harness 0.1.7+)。v4 與 v3 白名單互斥,0.2.9 及更早版本在 v4 上會觸發錯誤。請確保 DSH 版本符合要求。
- 配置衝突警告:不要手動往
profile的cordis.patch.yml中寫入insertentry,這會與 bundle manifest 的自動掛載產生衝突,導致啓動失敗。 - 新建會話要求:使用
new策略創建任務時,必須補齊agent preset(工具集)、模型選擇(agentDefaultModel)和cwd,否則 Agent 將無法正常啓動。
結語¶
dsh-plugin-cron 爲 DeepSeek Harness 提供了標準化的定時任務能力,使得 Agent 可以像傳統應用一樣按計劃執行自動化流程。通過側邊欄 UI 和 HTTP API,開發者可以方便地管理任務流。