dsh-session-pause:在 DeepSeek Harness 中一鍵暫停與恢復模型活動

前言

在 DeepSeek Harness(DSH)裏跑 Agent、子智能體或 Goal 時,模型調用、工具執行和定時任務可能同時進行。若只想暫時停住整臺主機上的活動,或只停當前 Session 及其子 Session,常見做法是手動停進程或發消息打斷——前者成本高,後者容易破壞進行中的輪次。下面介紹的 dsh-session-pause 是社區維護的工作流類插件,用 Web 按鈕或斜槓命令在主機級或 Session 級暫停模型相關活動,恢復後從停住的位置繼續,不取消已掛起的 Agent,也無需額外發送「繼續」類消息。

這是什麼

dsh-session-pause(GitHub:chilingling/dsh-session-pause)由維護者 chilingling 發佈,分類爲工作流。一句話定位:在 DSH 中支持主機範圍或單個 Session(含其啓動的子 Agent、Goal 輪次,以及由調度或 job 通知喚醒的 turn)暫停模型活動,並在恢復時從暫停點繼續。

插件通過 bundle 的 cordis.patch.yml 掛載,默認將暫停狀態寫入 $DSH_HOME/session-pause.json。設計說明見倉庫內 docs/design.md。

核心功能

兩種暫停範圍

  1. 主機級(Pause all):覆蓋主機上所有 Agent。
  2. Session 級:覆蓋當前 Session 及其作爲 subagent 啓動的 Session(在對應 Agent 仍存活的前提下)。

兩類暫停獨立:執行 Resume all 不會解除仍被單獨暫停的 Session;恢復某個 Session 也不會解除主機級暫停。

暫停時實際攔在哪裏

暫停覆蓋某次操作時,會在三個擴展點等待恢復;若該操作被取消,等待會立即結束,停止按鈕仍可用:

  • agent/pre-step:Agent 下一步之前等待,狀態仍爲 running。
  • llm/stream:模型調用到達 provider 之前等待(含 compaction、Session 標題等非 Agent step 的調用);未綁定 Session 的調用僅受主機級暫停影響。
  • agent/request-error:暫停期間失敗的模型請求(如斷網截斷流)在恢復後重試,不 backoff,且不計入 dsh-llm-retry。

已在跑的模型流和工具會正常結束。暫停期間到達的消息、steering、調度投遞和 job 通知會進入各 Agent 收件箱,恢復後再處理。

Web 客戶端

  • 側欄底部(Settings 上方,摺疊時僅圖標):Pause all / 暫停後變爲 Resume all。
  • 主機暫停時,Session 標題下方出現狀態 pill:開始時間、等待中的操作數、原因、Resume;失敗的主機級暫停/恢復請求也會在此展示。
  • 編寫區工具欄、模型選擇器前:暫停當前 Session 的圖標;暫停後變爲播放圖標以恢復。
  • 編寫區上方條帶:This session is paused,含時間、等待數、原因、Resume。

各界面通過 sessionPause/follow Remote 流與主機同步;命令、其他標籤頁或刷新前的暫停會即時一致。文案支持 zh 與 en。

斜槓命令

命令 作用
/pause-all [reason] 暫停整臺主機;再次暫停保留原開始時間與原因
/resume-all 恢復所有被掛起的操作
/pause-session [reason] 暫停接收命令的 Session 及其啓動的子 Agent
/resume-session 恢復接收命令的 Session
/pause-status 展示主機級暫停、各 Session 暫停及被掛起的操作

/pause-all、/resume-all、/pause-status 無論在哪條 Session 執行都作用於整機;命令輸出爲英文。

供其他插件調用的服務

其他插件可使用 ctx.sessionPause:pause({ source, reason? })、resume()、pauseSession(sessionId, { source, reason? })、resumeSession(sessionId)、status()、follow(signal)、waitForResume(signal, operation),以及事件 session-pause/changed。除 waitForResume 外,這些方法也作爲 sessionPause 命名空間的 Remote 方法暴露(描述符在 src/host/remote.ts,需與服務方法同步變更)。

安裝與啓用

從 GitHub Release 安裝(資料原文命令):

dsh plugin --profile web add github:chilingling/dsh-session-pause#v0.4.0

版本 0.4.0 需要 DeepSeek Harness 0.2.2-alpha.2 或更新的 0.2 系列。若使用 0.2.1,應安裝 #v0.3.0。

安裝時 pnpm 會通過 prepare 腳本構建插件,並在未授權時阻塞。首次失敗時,將 pnpm 打印的 key 加入 profile 的 pnpm-workspace.yaml 的 allowBuilds 後重試;Web Plugins 頁也可點 Allow these scripts and retry。

本地 checkout 開發(需已有 deepseek-harness 環境):

pnpm install && pnpm build
pnpm dsh plugin --profile web add /path/to/dsh-session-pause

修改代碼後需重新 build 並重啓 profile。

配置

字段 含義
stateFile 跨主機重啓持久化暫停狀態的 JSON 文件;省略則僅在當前進程內保持

插件寫入狀態文件版本 2,仍可讀版本 1(僅主機級暫停)。非 JSON 或版本不匹配會導致加載失敗並報告路徑。

典型用法

  1. 臨時讓整機不再發起新的模型 step:側欄 Pause all,或發送 /pause-all 維護窗口。
  2. 只停當前對話及其子 Agent:編寫區暫停圖標,或 /pause-session 先看日誌。
  3. 排查掛起情況:/pause-status。
  4. 恢復:對應 Resume、Resume all,或 /resume-session、/resume-all。

注意:在新 Session 首條消息創建之前輸入的斜槓命令會作爲普通消息排隊,不會執行;此時應使用側欄按鈕。

適用場景與注意

適合:需要在不殺進程的前提下凍結 DSH 上的模型活動;多標籤頁協作時統一暫停狀態;Goal、子 Agent、調度喚醒的 turn 一併掛起後再繼續。

已知限制(來自 README):

  • 主機在 Agent 等待 step 前退出時,該 step 已 claim 的消息會丟失;重啓後 open turn 會被標爲 interrupted,Goal 需 /goal resume。
  • 被掛起的 Agent 在會話與 Session 列表中仍顯示爲 running;以狀態 pill 與編寫區條帶爲準。
  • Session 暫停會留在狀態文件中直至顯式恢復,即使 Session 已刪除;/pause-status 仍會列出。
  • 外部 subagent 提供方(ACP、Codex、Claude Code)在其他產品中運行,不會被本插件掛起。

插件與 DSH 主機在同一進程權限下運行,安裝前請自行審閱源碼與許可證(倉庫以 README 爲準)。DSH 生態強調「一切皆插件」;社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-session-pause 把主機級與 Session 級的模型活動暫停做成可持久、可同步的一鍵操作,並與 Agent step、LLM 流和錯誤重試鏈路對齊。需要安裝命令與行爲細節時,以倉庫 README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/chilingling/dsh-session-pause
  • GitHub:https://github.com/chilingling/dsh-session-pause
羽毛球分组比赛记分
小程序二维码

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

小夜