DeepSeek Harness 無人值守定時任務調度器:dsh-wb-cron

前言

DeepSeek Harness(DSH)的生態理念是「一切皆插件」。在本地開發或部署場景中,開發者常面臨需要定時執行任務的需求。現有的方案往往依賴操作系統級 cron 或需要單獨維護子進程與憑據,而 DSH 內置的 schedule_create 主要用於會話內的提醒,無法滿足跨會話的無人值守執行。

dsh-wb-cron 是一款針對這一場景的插件,它將調度器集成在 web profile 進程內,到點自動拉起全新的 root agent 執行指令。

功能特性

  • 三種調度形態:支持 Vixie 標準的 5 字段 cron 表達式(支持步長、區間、列表、英文名及 IANA 時區)、固定間隔(最小間隔 ≥5 分鐘)以及一次性絕對時刻。
  • 對話式與 GUI 雙管理:提供 cron_create / cron_list / cron_update / cron_delete / cron_run_now / cron_next / cron_history 等工具,也提供兩級 GUI(側邊欄速覽與設置頁完整管理)。
  • 進程內執行:任務在宿主進程內拉起 root agent,無需子進程,天然繼承宿主 Profile 的模型路由、記憶注入(dsh-wb-memory)、skills 和 hooks。
  • 零依賴與零遙測:自身無 npm 運行時依賴,不向任何外部地址發送統計或心跳,僅執行任務指令時的網絡行爲由 Agent 決定。
  • Agent 預設管理:每任務可獨立釘住預設(如 standard / ptc / minimal),若預設不可用,按三級降級策略執行並記錄錯誤。
  • 會話落盤與續聊:執行產生的會話正常落盤,可通過 Web 側邊欄或歷史記錄進行續聊。

安裝與啓用

插件安裝需分兩步:先通過 DSH CLI 安裝,再手動修改配置文件。

dsh plugin --profile web add dsh-wb-cron

安裝後,編輯宿主配置文件 ~/.dsh/profiles/web/package.json,在 dsh.profile.bundles 數組中追加 "dsh-wb-cron",重啓宿主生效。

核心機制

  • 調度器生命週期:調度器運行在宿主進程內。如果宿主未啓動或處於 headless profile,調度器不會啓動。宿主啓動後,調度器在後臺定期檢查觸發條件。
  • 錯過處理:當任務觸發時間已過,調度器發現 nextFire 超過 2 分鐘容差,會根據配置選擇 skip(默認,記 skipped-missed)或 runOnce(立即補跑一次)。無論哪種方式,最多補跑一次,絕不回放積壓。
  • 停止與超時:當用戶要求停止任務時,調度器會置取消標誌,並盡力調用 agent 的 stop / abort / dispose 方法。由於 agent 尚無公開的 stop 接口,停止操作可能僅釋放資源,任務可能在後臺繼續跑完,但會話會正常落盤。
  • 與內置調度器分工:
    | 特性 | schedule_create (內置) | cron_create (本插件) |
    |—|—|—|
    | 觸發場景 | 會話內提醒 | 跨會話無人值守執行 |
    | 會話關閉後 | 提醒一直逾期,等會話回來 | 照常觸發,會話落盤可續聊 |

Agent 預設降級策略

任務是無人值守的,因此預設不可用時不應中斷執行。插件採用三級降級鏈,並將原因記錄在運行歷史的 error 字段中:

  1. 級 0:嘗試任務釘住的 preset。若失敗,記錄 預設 X 不可用,降級…。
  2. 級 1:嘗試內置標準模式 standard。若失敗,記錄 standard 亦不可用,降級爲全局默認…。
  3. 級 2:嘗試全局默認預設(agentPresets.resolve(undefined))。若失敗,記錄 無任何可用預設,以裸上下文執行。
  4. 級 3:使用裸上下文(meta 不帶 agentPreset)。僅執行本身失敗才向上拋錯。

配置項

通過修改 cordis.patch.yml 或配置文件,可調整以下參數:

{
  "maxConcurrentJobs": 1,        // 全局併發上限,默認串行
  "tickMs": 30000,               // 調度檢查間隔(毫秒)
  "historyLimit": 500,           // history.jsonl 保留條數
  "defaultTimeoutMinutes": 30,   // 單次運行看門狗超時
  "appendMemoryLogDefault": true // 任務頭默認是否帶 wb-memory 收尾指引
}

適用場景與注意

  • 權限審查:安裝任何 DSH 插件都意味着以你的權限運行第三方代碼。本插件源碼結構包含入口、調度解析、存儲、執行和前端模塊,請自行審查。
  • 數據存儲:任務數據與歷史記錄存儲在 ~/.dsh/wb-cron/ 目錄下(jobs.json 和 history.jsonl)。
  • 生態背景:本插件收錄於社區目錄(SkillHub),與 DeepSeek 或幻方無官方從屬關係。

結尾

dsh-wb-cron 提供了在 DSH 生態內實現無人值守定時任務的落地方案,通過進程內執行和完善的降級策略,保證了任務觸發的穩定性與可控性。

  • 倉庫:https://github.com/miseryrua/dsh-wb-cron
  • 目錄:https://www.skillhub.cn/plugins/miseryrua/dsh-wb-cron
羽毛球分组比赛记分
小程序二维码

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

小夜