前言¶
在 DSH Web UI 里長時間跑智能體會話時,進程被 kill、崩潰或超時並不少見。這類異常往往發生在某一輪(turn)尚未正常結束的中途。下次恢復時,代理循環會把該輪標記爲 interrupted,側邊欄裏會話會 idle 並帶上失敗提示。常規做法只能逐個打開會話再點 Continue,會話一多就很費事。下面介紹社區插件 dsh-continue-all,用側邊欄裏的一次操作,把符合條件的會話批量續跑。
這是什麼¶
dsh-continue-all 是面向 DSH Web UI 的客戶端插件,由 mkpoli 維護,倉庫地址 github.com/mkpoli/dsh-continue-all。它解決的是:DSH 意外退出後,存儲日誌裏仍留有「未閉合 turn」或最後 turn/end 原因爲 interrupted 的會話,需要人工逐個 Continue 的問題。
插件在側邊欄底部提供 Continue all 入口,掃描本地存儲的會話列表,確認後對每個目標會話依次發送字面量提示 continue,走與 Composer 相同的會話保留與 prompt(..., "queue") 路徑。
核心功能¶
批量續跑¶
點擊 Continue all 後,插件掃描已存儲會話,列出因 mid-turn 異常而停下的條目;確認後按序向每個會話發送 continue。對話框會展示每個會話的進度與失敗信息。
默認時間窗口¶
默認只選中最近 6 小時內被中斷的會話。更早的中斷會話會列在可選勾選項之後,避免一次批量操作誤觸更早崩潰或已放棄的任務。
排除規則¶
以下會話不會進入批量列表:
- 正在運行(turn 仍在進行,不屬於 interrupted 場景);
- 空白會話、子代理會話,或已歸檔會話;
- 正在等待審批或等待用戶回答。
已歸檔會話保持歸檔狀態;若需要續跑,需先取消歸檔。
掃描與檢測(宿主側)¶
宿主通過 DSH 已認證的 /api 通道暴露 POST /api/continue-all/scan。它會列出可見的存儲會話並讀取各會話日誌。滿足條件的情況包括:日誌尾部落在未閉合的 turn 內,或最後一次 turn/end 的 reason 爲 interrupted。響應攜帶該 turn 停止的時間,客戶端據此區分「最近窗口」與更舊會話。
掃描結果按持久化 revision 緩存;後續掃描只讀自上次以來變更過的日誌。進程重啓後首次掃描會讀全部存儲日誌,歷史很大時可能較慢,結果在進程生命週期內保留。宿主加載後會 shortly 啓動一次 warm scan,因此用戶第一次點擊時掃描往往已完成。
客戶端要求掃描響應爲 version 2。更新插件後應重啓一次 dsh web,使宿主與客戶端 halves 一致;否則對話框會提示宿主側版本過舊,而不會開始批量操作。
無法讀取日誌的會話會在宿主側跳過並記錄日誌。
安裝與啓用¶
DSH 生態裏插件通常通過插件管理器或 CLI 加入 profile bundle,再在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 中登記 bundle 名並重啓 Web 服務。本插件屬於 客戶端 類,面向 web profile。
在 DSH 界面中:Plugins → Add plugin,使用下列 spec:
github:mkpoli/dsh-continue-all
或命令行安裝並加入 profile:
dsh plugin --profile web add github:mkpoli/dsh-continue-all
隨後在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 中加入 "dsh-continue-all",並重啓:
dsh web
Release 附帶預構建 tarball,也可直接:
dsh plugin --profile web add https://github.com/mkpoli/dsh-continue-all/releases/latest/download/dsh-continue-all.tgz
本地開發目錄可用 link:/path/to/dsh-continue-all,用法與上述 spec 相同。
安裝前建議瀏覽倉庫源碼與 MIT 許可證;插件以當前 dsh 進程權限運行,與任何 DSH 插件一樣,應確認其 API 與日誌讀取行爲符合你的環境策略。
典型用法¶
- 完成安裝並在
dsh.profile.bundles中啓用"dsh-continue-all",重啓dsh web。 - 在側邊欄底部找到 Continue all,點擊開始掃描。
- 在列表中確認待續跑會話(必要時勾選「包含 6 小時以前的中斷會話」)。
- 確認後等待對話框中的 per-session 進度;失敗項按提示單獨處理(例如先 unarchive 或處理 approval 阻塞)。
無需額外配置字段;行爲由掃描規則與 UI 確認步驟決定。
適用場景與注意¶
適合經常在本地或服務器上跑 DSH Web、且遇到過進程異常退出導致大量 interrupted 會話的開發者。不適合替代對「正在運行」或「等待審批」會話的手動處理——這些會被插件 deliberately 排除。
注意:
- 批量
continue會按序佔用各會話的隊列,會話很多時耗時與模型調用成本需自行評估。 - 首次重啓後的全量掃描在大歷史上可能較慢,屬 README 描述的預期行爲。
- 社區目錄頁 skillhub.cn/plugins/mkpoli/dsh-continue-all 與 GitHub 倉庫爲獨立信息源,與 DeepSeek / 幻方無官方從屬關係;安裝命令以倉庫 README 爲準。
結尾¶
dsh-continue-all 把「異常退出後逐個 Continue」收成側邊欄裏的一步操作,並用 6 小時默認窗口與排除規則降低誤批量風險。若你在 DSH Web 裏維護多會話開發流,可在啓用前讀一遍倉庫 README 的檢測與掃描說明。