dsh-automation:在全新 Agent Session 中按計劃運行 Coding 任務

前言

在 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;
  • 帶來源標識的 automation message 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 創建

  1. 打開一個已連接目標 workspace 的 Session。
  2. 從側欄打開「自動化」,或在 Chat 與 Trajectory 旁選擇它;新建對話頁爲空白時,先開始對話。
  3. 填寫可獨立理解的任務、schedule、IANA 時區、model target 與 permission boundary。
  4. 正式依賴定時運行前,先點「立即運行」,檢查結果 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。

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

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

小夜