dsh-plugin-continue-on-limit: 自動續寫截斷回答的 DeepSeek Harness 插件

前言

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,可能導致依賴不可達)。

  1. 在 profile 的 package.json 中添加依賴。
  2. 將插件加入到 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"
      ]
    }
  }
}
  1. 在 profile 目錄下運行 pnpm install。
  2. 重啓 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 倉庫。

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

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

小夜