前言¶
在 DSH 環境中,實現週期性任務調度通常需要大模型介入決策,這會產生 Token 消耗並增加延遲。dsh-task-dispatch-table 插件通過將調度邏輯與執行邏輯分離,提供了一種基於表驅動的調度方案,由宿主進程直接管理調度,不消耗大模型資源。
插件介紹¶
這是一個 DSH Host 層插件,由 cq-guojia 維護。它通過一張任務定義表驅動週期性工作流,當任務到達時間窗或滿足依賴條件時,將其派發爲獨立的 DSH 會話執行。調度本身使用純程序邏輯,不涉及大模型調用。
核心功能¶
調度邏輯¶
調度器按固定 Tick 間隔運行。它檢查任務定義表,判斷任務是否在時間窗內以及是否滿足依賴條件。只有當任務真正需要執行時,纔會創建會話。
調度模式¶
支持三種模式:
1. 單次:在指定時刻運行一次。
2. 週期性:按每日、每週或每月的固定時刻運行。
3. 間隔:按 N 小時或 N 天的間隔運行。
每種模式均支持“允許延遲窗口”。如果宿主繁忙或宕機,任務會在窗口內補跑;超過窗口則記錄爲 skipped。
任務依賴¶
依賴關係由下游任務聲明(類似於 Airflow 的 needs 模型)。當任務觸發時,插件會凍結上游實例及其輸出,並將其傳遞給下游會話,確保下游獲取的數據與觸發時刻一致。
會話與狀態¶
每次運行生成獨立的會話,包含狀態、Token 使用量、產物和事件日誌。會話執行後會被歸檔,可查看日誌、提取產物或繼續對話。
任務管理 UI¶
提供任務列表、運行記錄、日誌、執行時間線和日曆視圖,支持雙語顯示。
安裝與啓用¶
安裝後無需額外配置或本地構建,直接通過 npm 運行。安裝命令如下:
dsh plugin --profile web add dsh-task-dispatch-table
使用流程¶
1. 創建任務¶
在編輯器中創建新任務。設置標題、提示詞、調度方式(單次、週期性或間隔)以及附件。附件支持鏈接或上傳(單個文件最大 20MB)。
2. 配置與觸發¶
通過設置面板配置插件參數(如 Tick interval, Run log retention)。點擊任務卡片上的“Run now”按鈕可手動觸發執行。
3. 追蹤執行¶
在任務詳情中展開查看運行歷史、日誌及歸檔會話。通過日曆和執行時間線追蹤所有任務的執行情況。
配置項¶
插件配置存儲在自身的狀態數據庫中,主要參數如下:
- Tick interval: 調度器掃描頻率,默認 60 秒。
- Run log retention: 運行日誌保留天數,默認 30 天。
- Temp attachment retention: 臨時附件保留天數,默認 7 天。
- Default model: 任務未指定模型時使用宿主默認模型。
- Dispatch grace: 等待派發會話出現的最大時長,默認 60 秒。
- Run lease: 靜默會話的租約時長,默認 1800 秒。
- Observation window: 監控未知狀態會話的時長,默認 300 秒。
注意事項¶
- 無需構建:安裝後無需本地構建,直接運行即可。
- 數據持久化:配置存儲在插件自身的狀態數據庫中,不會隨宿主配置重置而丟失。
- 附件限制:單個文件上傳最大 20MB。
- 語言切換:UI 支持雙語,隨 DSH 界面語言設置自動切換。
- 許可證:MIT 許可證。
結語¶
該插件通過將調度層與執行層解耦,爲 DSH 提供了零大模型介入的週期性任務管理能力。適合需要嚴格依賴管理、執行狀態追蹤和週期性工作流編排的場景。