DSH 智能體在長對話場景中常面臨上下文窗口限制或 API 調用成本的問題。dsh-force-compact 通過在本地 llama.cpp 上運行 Qwen3.8‑27B,並在對話歷史本身上執行壓縮邏輯,在保持常駐 Prompt 小而快的同時,提供“大窗口”的體驗。
核心定位¶
這是一個 DSH Cordis 插件,旨在通過“收縮歷史”而非單純依賴超大上下文窗口來維持智能體運行。它默認運行在本地環境,數據不出本機,無 API 成本。
工作機制¶
插件在 resolveCompaction 這一單一接口下提供雙引擎支持,自動切換:
- 官方引擎:當
compaction服務在智能體域中可解析時優先使用,委託給compaction/basic。 - 內置引擎:作爲回退方案。當官方服務不可用(如標準預設隔離了該服務)時接管。它直接操作
ctx.sessions/ctx.llm.stream/ctx.tokenMeter,複用官方的事件詞彙,確保安全回放。
觸發機制¶
壓縮通過以下路徑觸發:
- 請求前守衛 (
agent/pre-step):讀取會話的projectedTokens(即 UI 右下角顯示的數字)。當達到autoThresholdTokens時,拒絕當前請求,轉而執行壓縮,保留最新的retainLatestTokens。低於閾值則放行。 - 回合結束/空閒 (
agent/status→idle):智能體靜止時,通過compactNow觸發壓縮(需開啓turnEndForceCompactionEnabled)。 - 手動命令 (
/force-compact):僅在空閒時立即壓縮;若智能體忙碌,則設置本地標誌,在下一模型步執行。 - 會話刷新 (
session/flush):在持久化檢查點觸發壓縮。
所有路徑最終都匯入“壓縮結果寫入會話”這一邊界,並觸發 LiveUI 狀態更新。
思考控制¶
默認設置 disableThinking: true,該控制僅對壓縮調用生效。
- 壓縮調用:攜帶
reasoningEffort:'off'(或 llama.cpp 的reasoning_effort:"none"),強制關閉思考。 - 其他請求:機器的
LlmCallConfig保持不變,不受影響。 - 兼容性:如果模型不支持
off級別,插件會探測路由能力並自動降級到最低支持的級別(如low),而非直接報錯。對於完全不支持推理的模型,則不添加該字段。
LiveUI 狀態¶
插件通過 LiveUI 發送實時狀態文本:
* [強制壓縮中>>>]:壓縮提交前。
* [壓縮完成!]:壓縮完成後。
依賴與安裝¶
插件作爲 DSH Cordis 插件運行,需滿足以下 peer 依賴:
{
"@deepseek-ai/cordis": ">=4.0.4",
"@deepseek-ai/dsh-agent": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-compaction": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-commands": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-client-store": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-client-ui-primitives": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-client-ui-settings": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-client-locale": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-llm": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-session": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-session-projection": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-settings": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-token-meter": ">=0.2.0-rc.1",
"@deepseek-ai/schemastery": ">=3.18.4"
}
注:安裝方式通常通過包管理器或 DSH 插件機制,具體需參考該插件在 package.json 中的 exports 與 files 字段(包含 index.js、src/、web/、cordis.patch.yml 等)。
適用場景¶
適合需要在本地運行大模型、對上下文窗口敏感且希望零 API 成本的場景。由於插件運行在當前 DSH 進程權限下,安裝前建議檢查源碼與許可證。