前言¶
在 DSH Web 界面裏跑長任務時,常見需求是「先停一下,確認方向再繼續」,而不是直接取消整輪對話。手動點停止往往會打斷正在執行的工具調用或模型請求,恢復時還可能重複已完成的步驟。下面介紹維護者 trammels51 發佈的工作流類插件 dsh-pause-button:在 Composer 輸入區右側、發送按鈕左側提供一個小型暫停/恢復控件,並配套 /pause、/resume 命令,區分「安全暫停」(等當前步驟結束再掛起)與「強制暫停」(立即打斷當前步驟)。
這是什麼¶
dsh-pause-button(npm 包名同插件倉庫名,當前資料版本 0.1.0,MIT 許可證)面向 DSH Web 場景:在 conversation.input.right 插槽放置 28×28 px 純圖標按鈕,樣式與 Composer 工具行一致;無運行任務時按鈕變淡,運行中約 68% 不透明度,等待安全暫停邊界時脈衝提示,已暫停時使用低飽和度藍色。插件依賴 DSH 0.2.2-rc.1 至 0.2.x,需要宿主提供 webServer 與 agents 服務,不是無頭或 ACP 專用插件。
核心功能¶
安全暫停(默認:safe / wait)¶
- 不中斷當前步驟:正在進行的工具或模型請求允許跑完。
- 在下一個
agent/pre-step邊界,本輪在發起下一次模型請求前被掛起。 - 恢復時釋放該
pre-step決策,在同一輪內原地繼續;已完成的步驟不會重做,也不會額外插入用戶消息。 - 若任務在抵達下一邊界前已結束,插件會說明未到達暫停點,而不會假裝已暫停。
強制暫停(force / stop)¶
- 立即調用
agent.cancel({ kind: 'user' }, { keepInbox: true }),打斷當前步驟並保留已完成歷史。 - 恢復時發送一條續寫提示,請模型從斷點繼續、不重做已完成工作。
- 因此強制恢復會在界面留下一條可見的用戶角色消息;安全恢復則不會。
界面與命令¶
- Composer 旁按鈕與裸
/pause遵循 Settings → General → Pause granularity 中的默認粒度。 /pause force(或stop)可單次覆蓋默認;若已有待處理的安全暫停,亦可升級爲強制暫停。/pause status可查看階段、當前模式與默認模式。
命令一覽(與 README 一致):
| 命令 | 作用 |
|---|---|
/pause |
按配置的默認粒度暫停 |
/pause force 或 /pause stop |
本次強制暫停 |
/pause safe 或 /pause wait |
本次安全暫停 |
/pause status |
顯示階段與模式 |
/pause resume |
同 /resume |
/resume |
恢復被掛起的任務 |
安裝與啓用¶
插件以當前 dsh 進程權限運行;安裝前請自行查看 GitHub 倉庫 源碼與 MIT 許可證,確認是否符合你的環境策略。
從 GitHub 安裝:
dsh plugin --profile web add github:trammels51/dsh-pause-button
或使用預構建 release 包:
dsh plugin --profile web add https://github.com/trammels51/dsh-pause-button/releases/latest/download/dsh-pause-button.tgz
安裝後若按鈕未出現,刷新 Web 頁面。
默認暫停粒度在 Settings → General → Pause granularity 中設置:
- Safe (wait):完成當前步驟後暫停,原地恢復。
- Force (stop):立即停止當前步驟,從斷點續跑。
選項持久化在 $DSH_HOME/dsh-pause.json。
典型用法¶
- 長任務運行中,在 Composer 右側點暫停按鈕,或輸入
/pause(行爲與當前默認粒度一致)。 - 需要立刻打斷當前工具/請求時,使用
/pause force或/pause stop。 - 確認方向後輸入
/resume,或/pause resume。 - 不確定當前狀態時執行
/pause status。
倉庫 Verification 一節記錄:在 Web GUI 中對子智能體 sleep 8 工具調用做安全暫停時,暫停在工具結束後、下一邊界處掛起,恢復後同一輪繼續並完成——可作爲行爲預期參考。
適用場景與注意¶
適合:在 DSH Web 裏需要可控中斷與續跑、又不想輕易丟歷史的工作流調試與日常對話。
實現要點(便於排錯):
- 主機側
lib/index.js註冊路由與命令,按 Session 維護狀態;客戶端lib/client.js約每 900 ms 輪詢 Session 狀態,頁面隱藏時暫停輪詢。 - 僅暫停當前尋址的 Agent,其 subagents 不會自動暫停。
- 安全暫停期間 Agent 狀態仍可能顯示爲
running(同一輪被掛起);Stop/cancel 會釋放掛起並結束該輪。 - 強制恢復因無「掛起的調用」可釋放,會插入一條可見續寫消息。
社區目錄 SkillHub 插件頁 與 GitHub 爲獨立信息來源,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,安裝來源以你實際執行的 dsh plugin 命令爲準。
結尾¶
dsh-pause-button 用最小 UI 和明確的兩檔暫停語義,把「等一步再停」和「立刻停」分開,減少誤打斷與重複勞動。需要進一步細節或提 issue,可訪問目錄頁與倉庫: