前言¶
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 字段中:
- 級 0:嘗試任務釘住的
preset。若失敗,記錄預設 X 不可用,降級…。 - 級 1:嘗試內置標準模式
standard。若失敗,記錄standard 亦不可用,降級爲全局默認…。 - 級 2:嘗試全局默認預設(
agentPresets.resolve(undefined))。若失敗,記錄無任何可用預設,以裸上下文執行。 - 級 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