前言¶
DeepSeek Harness (DSH) 原生不會自動續寫。當一個 turn 因達到輸出 token 限制(max-tokens)而結束時,harness 會停止會話,UI 上提示「回答被截斷,發送「繼續」可讓模型接着輸出」。這是有意爲之的設計,等待用戶決定是否繼續。
對於需要連續輸出的場景,每次手動輸入兩個字符會增加操作成本。dsh-plugin-continue-on-limit 解決這個問題:它監聽宿主側的 turn/end 事件,當檢測到截斷原因時,自動發送一條 follow-up 提示詞。
核心功能¶
該插件是一個宿主側插件,不涉及客戶端邏輯,不依賴 UI 快照字段。它通過 agent.followup() 發送消息,消息的身份標識爲 cordis-host-runner,在界面中渲染爲插件觸發狀態,而非模擬用戶輸入。
插件受以下機制約束:
* 每會話 burst 上限
* 最小間隔
* 全局開關
安裝與啓用¶
安裝前請確保環境滿足條件:Node.js 版本需大於等於 22,且使用 pnpm 進行安裝(pnpm 在某些沙箱環境下無法創建 junction,可能導致依賴不可達)。
- 在 profile 的
package.json中添加依賴。 - 將插件加入到
bundles列表。
{
"dependencies": {
"dsh-plugin-continue-on-limit": "^0.1.0"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-plugin-continue-on-limit"
]
}
}
}
- 在 profile 目錄下運行
pnpm install。 - 重啓 DeepSeek Harness。
插件通過 cordis.patch.yml 自動掛載,無需手動編寫 patch 列表。安裝完成後,請前往 Plugins 頁面確認該插件已啓用。
配置¶
插件的所有配置項均爲 .volatile() 類型,在 Plugins 頁面修改後無需重載 fiber,且 enabled: false 可以在運行中途切斷正在進行的鏈路。
主要配置項如下:
| 字段 | 類型 | 默認值 | 說明 |
|---|---|---|---|
enabled |
boolean | true |
總開關 |
continueText |
string | 繼續 |
發送的續寫文本,最大長度 200 |
maxConsecutive |
integer | 3 |
單會話一條截斷鏈最多自動續寫次數。設置爲 0 表示無上限(危險選項) |
minIntervalMs |
integer | 1500 |
兩次續寫的最小間隔(毫秒) |
配置值會被鉗制,負數或非法值會回落到默認值。
工作原理¶
檢測機制¶
插件監聽 session/event 中的 turn/end 事件,並檢查 event.data.reason.kind 是否爲 max-tokens。它不使用客戶端 SessionSnapshot,因爲該快照缺少檢測所需的字段。
發送時機¶
插件不能在 turn/end 回調中同步發送消息。這是因爲 Session.append 在廣播期間會開啓重入閘門,而 Agent.followup() 內部需要調用 append,同步調用會導致 “session append cannot reenter” 錯誤。
因此,發送邏輯被推遲到 agent.whenIdle() 之後執行。此時 phase.kind 必爲 idle,wakeDriver 纔會啓動新的驅動循環處理 inbox 中的消息。
消息身份¶
爲了不冒充人類輸入,插件發送的消息 source.kind 被設置爲 cordis-host-runner。這是 harness 爲宿主側行爲預留的 source 類型,確保 approval 等流程不會誤判。
安全與限制¶
三道閘¶
- burst 上限:
maxConsecutive默認爲 3,防止模型反覆溢出佔用過多上下文。設置爲 0 需謹慎。 - 死循環兜底:
minIntervalMs防止無意義的快速重複續寫。 - 輸入校驗:配置值經過嚴格校驗和鉗制,負數不會回落到 0(關閉限制),而是回落到默認值。
安全特性¶
- 排隊優先:當 inbox 中已有用戶排隊消息時,插件會跳過當前續寫,讓用戶的請求先執行。
- 去重:同一 turn 內不重複續寫,發送排隊期間(
pending狀態)也不重複調度。 - 異常隔離:
followup()拋錯只記錄日誌,不向回調冒泡。
測試¶
該插件包含 61 個通過測試。測試覆蓋了純決策邏輯(不依賴 Cordis)、宿主側集成測試(mock ctx 驅動真實 apply)以及加載契約測試。
運行測試命令:
npm test
總結¶
dsh-plugin-continue-on-limit 爲 DeepSeek Harness 提供了自動續寫截斷回答的能力。它通過宿主側事件監聽和精確的時機控制,在不干擾用戶意圖的前提下,自動處理模型輸出上限問題。適合需要長文本生成且希望減少手動交互的開發者使用。
更多信息請參考 SkillHub 插件目錄 或 GitHub 倉庫。