DeepSeek Harness 插件:dsh-plugin-cron

前言

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 中寫入 insert entry,這會與 bundle manifest 的自動掛載產生衝突,導致啓動失敗。
  • 新建會話要求:使用 new 策略創建任務時,必須補齊 agent preset(工具集)、模型選擇(agentDefaultModel)和 cwd,否則 Agent 將無法正常啓動。

結語

dsh-plugin-cron 爲 DeepSeek Harness 提供了標準化的定時任務能力,使得 Agent 可以像傳統應用一樣按計劃執行自動化流程。通過側邊欄 UI 和 HTTP API,開發者可以方便地管理任務流。

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

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

小夜