dsh-auto-continue-community:本地模型 max-tokens 截斷時的自動續寫

前言

在 DSH 裏用 llama.cpp 跑本地模型時,單次回覆往往受 max-tokens 限制。流式輸出在 token 用盡處被截斷,agent loop 拿到的 assistant 內容不完整,後續推理或工具編排容易斷在中間。手工讓模型「接着寫」可以補救,但要在每次截斷後重複操作,且和 DSH 的 waterfall、BlockAssembler 約定對不齊。

下面介紹社區插件 @quekenao/dsh-auto-continue-community(維護者 quekenao,分類:模型推理)。它在檢測到 finish 原因爲 max-tokens 時,透明地追加模型調用,把截斷輸出補完,使 agent 側看到相對完整的回覆。

這是什麼

插件全稱 npm 包名 @quekenao/dsh-auto-continue-community,當前資料記載版本 v0.3.2,MIT 許可證,已發佈至 npm。它是維護者自用插件 dsh-auto-continue 的社區可分發行副本,針對可移植配置、雙模式續寫與單測做了整改。

一句話定位:當配置範圍內的 provider 因 max-tokens 截斷流式響應時,按預算與超時規則自動續寫,默認走實時 loop 模式,必要時可回退到緩衝 stream 模式。

核心功能

截斷檢測與續寫

插件監聽 DSH 在 max-tokens 場景下的 finish 語義(loop 模式依賴 agent/assistant-stream 與 agent.steer();stream 模式在 llm/stream waterfall 上緩衝並分析 chunk)。滿足 provider 門控、續寫預算且非重入時,構建續寫 prompt 並再次調用模型。若續寫步仍 max-tokens,可在 maxContinuations 內繼續,直到正常結束或預算耗盡。

雙模式(v0.3.0 起)

加載時通過 mode 二選一,默認 loop:

維度 loop(默認) stream(回退)
UI 流式 原始步與續寫步各自實時推送 緩衝整段上游流,合併後一次性呈現
機制 獨立 agent 步,agent.steer() 注入 waterfall 攔截、重調、mergeChunks
消息條數 兩條 assistant 消息(各實時流式) 一條合併消息

設計取捨:loop 犧牲「單條消息」的展示,換取續寫過程仍能看到 token 實時輸出;若部署中 steer() 等 loop 依賴異常,可設 mode: stream 回退。

可配置項

經 cordis Config(zod)校驗,非法配置在加載階段拋 ValidationError,不會靜默失效:

參數 默認值 說明
providers ["local-vision"] 僅對這些 provider 啓用續寫
maxContinuations 5 單條響應鏈最多續寫次數(1–20)
timeoutMs 120000 單次續寫超時(毫秒),超時則降級爲原始截斷流
mode "loop" "loop" 或 "stream"

環境變量 DSH_AUTOCONTINUE_* 爲 resolveConfig 回退路徑;正常通過 patch 註冊且使用 schema 默認值時,通常不依賴環境變量。

stream 模式下,若截斷時存在未完成的 tool call(JSON 參數被截斷),插件會跳過續寫並原樣輸出,與 DSH 丟棄不完整 tool-call block 的行爲一致。loop 模式下對已完成 tool call 會使用專用續寫提示,避免模型重複發出未執行的 tool call。

安裝與啓用

官方安裝命令:

dsh plugin add @quekenao/dsh-auto-continue-community

安裝後插件通過包內 cordis.patch.yml bundle 自動激活,無需再手工編輯全局配置即可註冊。若需改 provider 列表、續寫次數或模式,在 patch 條目的 config 字段中寫入(見下文示例)。

典型用法

在 cordis.patch.yml 中,config 與 id、name 同級,例如:

- insert:
    - id: auto-continue-community
      name: "@quekenao/dsh-auto-continue-community"
      config:
        providers:
          - local-vision
          - llama-local
        maxContinuations: 3
        timeoutMs: 60000
        mode: loop

不寫 config 塊時,cordis 使用 schema 默認值,等價於僅對 local-vision 啓用、最多 5 次續寫、120 秒超時、loop 模式。

Windows 下也可用環境變量(不改 yml 時的回退路徑):

set "DSH_AUTOCONTINUE_PROVIDERS=local-vision,llama-local"
set "DSH_AUTOCONTINUE_MAX=3"
set "DSH_AUTOCONTINUE_TIMEOUT_MS=60000"
set "DSH_AUTOCONTINUE_MODE=stream"

典型使用路徑:在適用版本棧上安裝插件 → 用 dsh web 的 waterfall 與本地 llama.cpp provider 對話 → 當模型回覆因 max-tokens 截斷時,觀察 loop 模式下第二條實時 assistant 續寫,或 stream 模式下合併後的完整一條消息。

適用場景與注意

已驗證範圍(部署前必讀)

資料明確寫明,本插件僅在下列鏈路下經過驗證(package.json 的 dsh.scope 與 README 表格一致):

維度 範圍
拓撲 DSH + llama.cpp + 本地模型
DSH / dsh-llm / dsh-web-app 0.2.1-rc.5
@deepseek-ai/cordis ~4.0.5
Node.js >= 24(開發測試於 v24.18.0)
運行面 僅 Web(dsh web waterfall)
客戶端 / CLI 未適配,不在支持範圍

更換 DSH 大版本、非 llama.cpp 後端,或 CLI/客戶端場景,均超出當前插件聲明的適用範圍,行爲不保證正確。

誰適合用

適合在 DSH 0.2.1-rc.5 + Web + 本地 llama.cpp 棧上開發智能體、且經常碰到長回覆被 max-tokens 截斷的開發者。不適合指望在 CLI 或未驗證的後端上「開箱即用」。

安全與信任

DSH 生態強調「一切皆插件」;社區目錄站點與 DeepSeek / 幻方無官方從屬關係,安裝前請自行查看源碼與 MIT 許可證。插件以當前 DSH 進程權限運行,續寫會額外發起模型調用,請注意本地算力、超時與 maxContinuations 對成本與延遲的影響。README 稱 v0.3.2 已通過 95/95 單測及多項端到端驗證,可作爲質量參考,但不替代你在自己環境中的驗證。

結尾

dsh-auto-continue-community 針對本地模型 max-tokens 截斷提供了可配置的自動續寫:默認 loop 保證續寫仍實時流式,stream 作回退;配置經 zod 校驗,錯誤配置啓動即失敗。若你的棧落在 README 聲明的版本與 Web + llama.cpp 範圍內,可以用一條 npm 安裝命令接入,再按需調整 providers 與續寫預算。

  • 社區目錄頁:https://www.skillhub.cn/plugins/quekenao/dsh-auto-continue-community
  • 源碼與完整說明:https://github.com/quekenao/dsh-auto-continue-community
羽毛球分组比赛记分
小程序二维码

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

小夜