前言¶
在 DeepSeek Harness(DSH)裏跑智能體時,一輪對話未必總能正常收尾:你可能誤點停止,網絡或模型請求失敗,或者回復被輸出 token 上限截斷。Harness 往往只留下「已停止」一類標記,接下來要麼自己再打一遍「continue」,要麼重新交代上下文,容易重複勞動,也偏離「從斷點接着幹」的意圖。
社區插件 dsh-continuechat(維護者 CaiBai-Fish,GitHub:CaiBai-Fish/dsh-continuechat)補的是這一步:提供 /continue 命令,並在被中斷的那條助手回覆下方的操作行裏增加 Continue 按鈕,讓會話從停下的位置續跑,而不是從頭重來。在 SkillHub 社區目錄中,它歸類爲「工作流」。
這是什麼¶
dsh-continuechat 的定位是:在 DSH 會話中手動恢復被提前結束的一輪對話。當前 package 版本爲 0.1.1,許可證 MIT,運行環境要求 Node.js >= 22。插件不提供自動續跑;需要無人值守的連續執行時,README 指向使用 goal 工具等其他能力。
核心功能¶
命令 /continue¶
在聊天裏執行:
/continue
/continue also fix the remaining three files
命令名後面的文字會作爲續跑提示裏的「Additional instruction from the user」附加說明。Harness 會在命令平面渲染結果(例如「已請求繼續對話(中斷原因:手動停止)。」),該結果不會作爲模型消息進入對話。
輸入 / 後也可從命令菜單選擇 continue(描述爲 “Continue the interrupted conversation from where it stopped”),用方向鍵和 Enter 即可,不必先敲完整命令。
操作行 Continue 按鈕¶
被截斷的那一輪,在最後一條助手消息下方的操作行(與複製、贊/踩、分支同一行)會出現 Continue:
- 僅在中斷真實發生時出現;正常完成、被
blocked拒絕、或僅爲 fork 收尾的輪次不顯示。 - 只有結束該輪的那條助手消息帶按鈕;Agent 重新運行後按鈕會消失。
- 點擊等價於執行一次
/continue;失敗時操作旁會顯示短錯誤,懸停可看全文。
是否顯示按鈕,取決於會話持久事件窗口裏最新的 turn/end 是否屬於可續跑原因,且該輪是否已有持久化的助手消息。若在產出任何助手輸出之前就中斷(請求直接失敗、進程在流式開始前退出),界面上沒有可掛載按鈕的消息,此時應使用 /continue 命令。
續跑時發給模型的內容¶
插件不會只發一句裸的 “continue”,而是排隊一條結構化的用戶消息,包在 <continue-conversation> 中,說明上一輪爲何結束、要求在同一 session 從斷點繼續、勿重複已有輸出,並附上 Harness 記錄的中斷失敗信息;你在命令後輸入的附加說明也會寫入。觸發消息的 source.kind 爲 continue-chat,在 Chat 裏作爲注入上下文節點處理,普通文本不會出現在可見氣泡裏。
續跑完成後,新回答會作爲新的助手消息出現(DSH 事件溯源日誌不允許把續寫合併進原 assistant 消息);插件會通過 system/message 替換等方式收起觸發用的續跑提示,界面上被中斷的回覆後面直接跟新內容。
哪些中斷可以續跑¶
插件訂閱 session/event,根據 turn/end 的 reason.kind 判斷是否可續跑:
reason.kind |
含義 | 可續跑 |
|---|---|---|
aborted |
運行被取消(含用戶手動停止等) | 是 |
error |
模型請求失敗 | 是 |
max-tokens |
輸出 token 上限截斷 | 是 |
interrupted |
宿主進程中斷後的崩潰恢復 | 是 |
completed |
正常結束 | 否 |
blocked |
進入前被 agent/pre-step 拒絕 |
否 |
forked |
fork 種子關閉繼承前綴 | 否 |
之後若出現新的 user/message,會清空中斷記錄(用戶接管或已續跑)。
安裝與啓用¶
README 給出的安裝方式(需指向插件目錄的絕對路徑):
dsh plugin --profile desktop add <absolute path to this directory>
package.json 中 dsh.bundle.patch 指向 cordis.patch.yml,用於把 continue-chat 寫入 profile;dsh.client.platform = "web" 時由宿主提供 lib/client.js 作爲瀏覽器端 bundle。
卸載:
dsh plugin --profile desktop remove dsh-continuechat
也可在 SkillHub 目錄頁查看該插件的收錄信息與安裝說明:https://www.skillhub.cn/plugins/CaiBai-Fish/dsh-continuechat。SkillHub 是社區插件目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,具體裝哪些插件由你自行選擇。
安裝前建議閱讀倉庫源碼與 MIT 許可證。插件在當前 DSH 進程權限下運行,與宿主共享會話與工具能力,只安裝你信任的來源。
典型用法¶
- 讓 Agent 跑一輪任務,因手動停止、請求失敗或 token 截斷而中斷。
- 若該輪已有助手輸出:在最後一條助手消息操作行點擊 Continue;或在任意時刻執行
/continue,必要時在命令後加補充指令(例如/continue also fix the remaining three files)。 - 若中斷時尚未產生助手消息:只能使用
/continue,不要期待操作行按鈕。 - Agent 仍在運行時不要續跑;應先停止當前輪,再執行
/continue(對運行中的 Agent 執行會報錯)。
對比 README 中的場景:誤點停止時不必自己重打 continue;網絡失敗時插件會把 Harness 記錄的失敗信息交給模型;token 截斷時有一鍵或一條命令的入口,而不只是提示你「發送 continue」卻沒有統一入口。
適用場景與注意¶
適合誰: 經常在 DSH Web 桌面 profile 里長對話、改代碼、調工具,且會遇到人爲停止、Provider 錯誤或輸出被截斷的開發者。
刻意不做的事(README 原文要點):
- 不會自動續跑;所有觸發都來自命令、按鈕或你自己輸入。
- 不會在正常結束的對話下顯示 Continue。
- 不會把新回答合併進舊助手消息。
- 不會在 Agent 運行中插入續跑。
- 不會重寫歷史;續跑只是追加一條新的用戶消息。
- DSH 重啓後首次
/continue可能提示「未記錄中斷原因」(插件只觀察當前進程內追加的事件),續跑仍可進行,但缺少具體中斷原因細節。
宿主側僅依賴 node:crypto,無 runtime peerDependencies;客戶端 bundle 僅要求平臺 seed 中的 react。
結尾¶
dsh-continuechat 把「中斷後的下一步」收成 /continue 與操作行 Continue,並用結構化提示和 Harness 失敗記錄幫助模型從斷點接着做,而不是重開任務。需要查閱分類與收錄信息時打開 SkillHub 目錄頁;需要用法細節、架構說明與開發測試命令時見 GitHub 倉庫: