dsh-session-continue:會話非正常結束時的繼續提示

前言

在 DeepSeek Harness(DSH)裏跑 Agent,一輪對話並不總是以 turn/end 正常收尾。進程崩潰、刷新頁面、斷線、任務報錯或輸出觸頂、以及中途按停止,都會把工作停在半路。宿主自帶的待辦面板能看任務,但不會自動幫你把「接着幹」這件事填進輸入框。下面介紹社區插件 dsh-session-continue(維護者 notpdpton,分類:客戶端):在輸入框上方顯示提示條與「繼續」按鈕,把中斷原因、輪次和未完成任務清單摺疊成可一鍵提交的狀態。

這是什麼

dsh-session-continue 是一個獨立的 DSH 插件:會話非正常結束時,在輸入框上方顯示提示條與「繼續」按鈕。單包自帶 Host 與瀏覽器半邊,無子包、無運行時依賴,也不依賴其他插件。

項 值
npm 包名 dsh-session-continue
插件名(診斷用) dsh-session-continue
投影鍵 sessionContinueInterruption
版本 0.1.1
許可 MIT

目錄頁:https://www.skillhub.cn/plugins/notpdpton/dsh-session-continue
源碼:https://github.com/notpdpton/dsh-session-continue

解決什麼問題

Agent 一輪可能因以下情況未正常結束:

  • 進程被殺或崩潰,日誌尾部缺少 turn/end;
  • 重啓、刷新、斷線導致正在跑的一輪被掐斷;
  • 任務出錯、被阻止,或輸出撞到長度上限;
  • 用戶按停止,但工作尚未完成。

插件把「這一輪如何結束」「停在哪一輪」「當時的任務清單」摺疊成少量狀態,在 conversation.input.dock 槽位(輸入框正上方,排在自帶待辦 dock 之上)顯示提示,並提供「繼續」:點擊後將接續指令填入輸入框並提交,便於模型從上次未完成處接着做。任務清單不在提示條裏重複展示(待辦面板在上方),而是隨「繼續」指令一併發給模型。

界面與行爲

收起時提示條一行:狀態點、標題「會話未正常結束」、一句話原因。展開「詳情」後增加中斷輪次、錯誤代碼、錯誤信息三行;展開區無分割線,在卡片表面向下延伸。右側三個按鈕:詳情 / 繼續 / 忽略。

  • 僅在會話沒有正常結束且 agent 當前不在運行時出現;
  • 「忽略」只對當前這一次中斷生效,下一次中斷會再次出現;
  • 插件頁卡片標題爲「會話中斷繼續」,圖標爲藍底播放三角。

配置

總啓用/禁用由「插件」頁該卡片上的開關控制。詳情頁(plugins.bundle.config)只有兩個偏好開關,不重複總開關;側邊欄不會單獨增加「會話中斷繼續」導航項。

開關 默認 作用
恢復進度與任務清單 開 「繼續」時附帶未完成任務清單與中斷輪次
提示手動停止的會話 開 關閉後只提示非你主動結束的會話

安裝與宿主版本

從 npm 安裝

在 DSH「插件」頁選擇「添加插件」,填入包名 dsh-session-continue,裝好後在 bundle 列表確認已啓用。命令行等價寫法:

npm install dsh-session-continue

從 Git 倉庫安裝

在「插件」頁選擇安裝,填入倉庫地址(<主機>/<賬號>/dsh-session-continue)。資料未給出固定的 dsh plugin add 單行命令,以插件頁填寫的倉庫地址爲準。

宿主版本要求

package.json 中 engines.dsh 爲 ^0.2.1-rc.5。落在範圍外時宿主在導入插件代碼前會拒絕裝載。資料中的兼容表:

宿主 結果
0.2.1-rc.5 放行
0.2.2-alpha.2 / 0.2.2-alpha.3 / 0.2.2 放行
0.2.1-rc.4 及更早 拒絕
0.3.0 及更新 拒絕

範圍外使用需通過宿主版本豁免(compatibility.json / dsh plugin allow-version)顯式授予。

本地開發安裝

將源碼 link 進 profile,並把包名加入 bundle:

// <profile>/package.json
{
  "dependencies": {
    "dsh-session-continue": "link:<本倉庫的絕對路徑>"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "dsh-session-continue"
      ]
    }
  }
}

cordis.patch.yml 插入掛載行;瀏覽器半邊由 package.json 的 dsh.client 聲明發現。

典型用法

  1. 安裝並啓用插件,滿足宿主 ^0.2.1-rc.5。
  2. 正常用 DSH 跑 Agent;若某輪未正常結束且當前沒有在跑,輸入框上方會出現提示條。
  3. 需要接續時點「繼續」,輸入框會收到附帶任務清單(若開關開啓)的接續指令並提交;若只是誤報或暫不需要,可點「忽略」。
  4. 若不想在「自己按停止」時也看到提示,在插件詳情頁關閉「提示手動停止的會話」。

診斷「某會話爲何顯示或不顯示繼續」時,可在插件倉庫 test/ 下用真實會話目錄(默認 $DSH_HOME/sessions,否則 ~/.dsh/sessions)運行只讀腳本,例如:

node explain-session.mjs <sessionDirOrId>

實現要點(選讀)

Host 在 ctx.sessionProjections 註冊投影 sessionContinueInterruption,從完整會話日誌摺疊出 wire 視圖推給客戶端;瀏覽器 client.js 從 wire 讀取 status、turn、reason、abortCause、errorCode、errorMessage、partialMessage、todos 等字段驅動提示條。主動停止與 Workspace 觸發的 agent.cancel({ kind: 'user' }) 在日誌上形態相同,插件藉助是否存在帶 interrupted: true 的 partialMessage 區分;無該消息時默認按中斷處理,避免漏掉崩潰後的提示。設計細節見倉庫 docs/design.md。

適用場景與注意

適合經常在 DSH 里長跑 Agent、又容易遇到刷新、崩潰或中途停止的開發者。插件在當前 DSH 進程權限下運行,安裝前建議閱讀源碼與 MIT 許可證。SkillHub 上的插件目錄是社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-session-continue 把「未正常結束的會話」變成輸入框上方可操作的繼續入口,減少在半截任務裏手動拼提示詞的成本。進一步瞭解可訪問 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜