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 的完整選擇;將 providermodel 顯式設爲 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 經歷 queuedrunning,最終進入 succeededfailedskippedcancelled。每條記錄保留 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 installpnpm 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-onlyworkspace-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

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

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

小夜