前言¶
在 DeepSeek Harness(DSH)裏做開發,常見兩類「稍後執行」的需求:一類是在當前對話裏設個提醒,過一會兒回到同一條 Session 繼續;另一類是讓一份完整的 Coding 任務在固定時間或間隔裏獨立跑完,並且能查清每次用了什麼配置、結果如何。
DSH Core Schedule 面向前者。若你需要後者——每次在全新 root Agent 與 Session 中執行已保存任務、留下可審計的運行記錄——社區插件 titanwings/dsh-automation(GitHub 約 78 stars)提供了一條專門的工作流路徑。下面按安裝、配置與使用順序介紹。
這是什麼¶
titanwings/dsh-automation 由維護者 titanwings 發佈,分類爲工作流,當前版本 0.1.7,MIT 許可。插件把「完整任務 + 運行計劃 + 權限邊界」綁定在一起:用戶或 Agent 在 DSH Web 或對話中創建、管理定時規則;每次真正 dispatch 的 occurrence 都會在全新 Session 中啓動,不繼承來源對話的歷史,並寫入持久的 run history。
與 DSH Core Schedule 的對比如下:
| DSH Core Schedule | dsh-automation | |
|---|---|---|
| 執行上下文 | 回到同一個 live Agent | 創建全新的 root Agent 與 Session |
| 輸入 | 已有上下文中的 follow-up | 已保存、可獨立理解的完整任務 |
| 範圍 | 當前 Session Log | 一個 canonical DSH workspace |
| 歷史 | 對話事件 | Definition revision 與 durable run record |
| 最適合 | Reminder、同對話繼續處理 | 重複或單次的獨立 Coding 任務 |
若任務依賴未寫出的對話歷史、中途必須等待人工批准,或應由文件、HTTP、進程狀態而非時間觸發,目前還不適合做成 automation。
核心功能¶
一個控制面,兩種入口¶
DSH Web: 從側欄或對話裏的「自動化」Tab 打開控制面,可創建規則、暫停或恢復、立即運行、刪除,並查看最近運行。新建對話頁仍爲空白時,側欄會提示先開始對話,避免靜默失效。
符合條件的 root Agent: 用自然語言描述需求即可。插件提供六個 scoped tools,Agent 只能管理自己當前工作區內的 automation,不能越界操作其他 workspace。
不需要單獨維護 bot、daemon UI 或第三方 scheduler。
可讀的運行計劃¶
支持單次、固定間隔、每天和每週。每天與每週規則使用 IANA 時區;表單輸入會規範化爲經過校驗的 RFC 5545 RRULE 後持久化。間隔調度最短五分鐘,第一次運行在一個完整 interval 之後,不會在創建後立即觸發。
獨立的模型目標¶
Web 表單可跟隨運行時全局模型,也可固定 provider/model 組合;固定時可使用該模型默認推理程度,或選擇該模型公佈的 effort 值。每次 run 的快照會保留創建時的 model target。
Agent tools 暴露相同字段:創建時省略模型字段會捕獲創建 Session 的完整選擇;將 provider 和 model 顯式設爲 null 則在每次運行時讀取當時的全局選擇。
乾淨的執行邊界¶
每個 dispatch 的 occurrence 獲得:
- 新的 Session ID 與 fresh root Agent;
- 保存的 prompt,而非來源對話歷史;
- 創建時捕獲的 workspace、cwd、Agent preset、permission preset 與 model target;
- 帶來源標識的
automationmessage source(含 automation ID、run ID、scheduled time); - 基於真實 DSH turn end 的終端結果,而非僅「消息已送達」。
可解釋的運行歷史¶
Run 經歷 queued、running,最終進入 succeeded、failed、skipped 或 cancelled。每條記錄保留 definition revision、prompt 與 target 快照、計劃時間、結果 Session ID、summary 與結構化 error。修改 definition 會遞增 revision;刪除 definition 不會立刻抹掉 run records。
Agent 側六個管理工具如下:
| Tool | 用途 |
|---|---|
automation_create |
創建綁定當前 workspace 的規則,可固定模型與推理程度 |
automation_list |
讀取規則、下次 occurrence 與最近歷史 |
automation_update |
修改名稱、prompt、cadence、model target、permission 或 active/paused 狀態 |
automation_run_now |
使用相同邊界排隊一次手動 occurrence |
automation_runs |
讀取有限數量的 run history、error、summary 與 Session ID |
automation_delete |
刪除 definition,保留 durable run records |
當 Agent 創建或擴大未來無人值守工作時,插件會要求人工確認;只讀查詢與僅暫停規則的更新不增加此步驟。
安裝與啓用¶
插件面向 DSH Web profile,要求 Node.js 22.19 或更高版本。官方安裝命令如下:
dsh plugin --profile web add github:titanwings/dsh-automation#v0.1.7
安裝後重啓 dsh web。若從 DSH 源碼目錄運行,將 dsh 替換爲 pnpm dsh。版本 tag 保證可重複部署;使用已審閱的 commit SHA 亦可。
從本地 checkout 安裝時,需先 pnpm install 與 pnpm check,再以絕對路徑執行 dsh plugin --profile web add /absolute/path/to/dsh-automation。倉庫已附帶構建完成的 Host 與 Web bundle,Git 安裝無需額外構建步驟。
典型用法¶
從 DSH Web 創建¶
- 打開一個已連接目標 workspace 的 Session。
- 從側欄打開「自動化」,或在 Chat 與 Trajectory 旁選擇它;新建對話頁爲空白時,先開始對話。
- 填寫可獨立理解的任務、schedule、IANA 時區、model target 與 permission boundary。
- 正式依賴定時運行前,先點「立即運行」,檢查結果 Session 與 run record。
讓 Agent 創建規則¶
安裝後,可向 root Agent 發出類似請求:
給當前工作區創建一個只讀 automation,名字是「工作日迴歸分診」。
每週一到週五 09:30 在 Asia/Shanghai 運行。檢查最新本地測試證據,
識別迴歸並返回簡短報告。不要修改文件。
README 中列出的適用場景包括:工作日迴歸分診(read-only)、每週倉庫健康報告(read-only)、單次延遲驗證(read-only)、生成代碼刷新(workspace-write)、維護修復窗口(workspace-write)。一條高質量任務應寫清目標、證據來源、允許修改的範圍、驗證方式與停止條件,避免「繼續剛纔討論的內容」這類依賴上下文的表述。
可選配置¶
cordis.patch.yml 提供保守默認值,可在 deployment profile 的 plugin row 中調整:
| Option | 默認值 | 含義 |
|---|---|---|
maxConcurrentRuns |
2 |
當前 Host 的全局執行容量 |
runTimeoutMinutes |
60 |
單次 run 的最大 wall-clock 時間 |
misfireGraceMinutes |
15 |
Host 停機後允許 catch up 的最大延遲 |
historyLimit |
200 |
每條 automation 持久保留的 terminal runs |
archiveRunSessions |
false |
是否從普通會話列表歸檔 terminal run Session |
將 archiveRunSessions 設爲 true 後,terminal run Session 會從普通列表歸檔,但 Automation 運行歷史仍保留 Session ID、summary 與 error。當前 Harness 尚未提供 unarchive API,已歸檔結果只顯示狀態,不提供 Session 打開入口。
適用場景與注意¶
適合誰: 需要重複或單次、可獨立表述的 Coding 任務在無人值守下執行,且希望每次運行在明確 workspace 與權限邊界內、並留下可複查歷史的開發者。
安全邊界: Schedule 不是授權。Run 不繼承來源對話的 history、inbox、grant 或歷史 approval;規則僅支持 read-only 或 workspace-write,不接受無人值守 danger-full-access。每個 fresh Session 的 approval policy 爲 never,需要交互式批准的工具會直接失敗。Agent tools 綁定調用者的 canonical workspace,fresh Agent 僅允許一組精簡的 Coding tools;管理 RPC channel 只接受 loopback authority。啓用無人值守寫入前,務必先用「立即運行」審閱真實行爲。
運行權限: 插件以當前 dsh 進程權限運行,安裝前應閱讀源碼與 MIT 許可證,確認任務描述與 permission boundary 符合你的安全預期。
當前版本邊界(0.1): 不提供同 chat heartbeat、raw cron、無人值守 full access、對已有副作用 run 的自動重試、Git worktree 管理、多 workspace target、外部通知,以及外部副作用 exactly-once 保證。任務啓動時 DSH Host 必須正在運行;0.1 不是操作系統 daemon,也不協調多 Host 爭搶同一 storage directory。
結尾¶
dsh-automation 把「定時執行獨立 Coding 任務」收進 DSH 插件體系:Web 與 Agent 共用一套控制面,每次運行在全新 Session 中完成,歷史可查、邊界可配。DSH 社區目錄 SkillHub(skillhub.cn)收錄了該插件條目;完整文檔、設計與 issue 見 GitHub 倉庫 titanwings/dsh-automation。