前言¶
在 DSH 中手動配置第三方網關時,模型 ID(例如 grok-4.6)通常與內置的 pi-ai 目錄(例如 x-ai/grok-4.6)不匹配。這會導致容量解析回退到默認值 defaultContextWindow(262144)。同時,壓縮後端只接受比率格式,這使得直接設置絕對閾值變得困難。
dsh-context-budget 插件解決了這兩個問題:它爲每個 pi-ai 提供商卡片添加了上下文窗口、壓縮閾值和保留預算的配置組,並在編輯器右下角增加了思考努力控制。
安裝與啓用¶
執行以下命令安裝插件:
dsh plugin --profile web add dsh-context-budget
安裝完成後,重啓 dsh web,進入 Settings → Models 頁面,展開任意 pi-ai 提供商卡片,即可看到新增的 “Context budget” 組。
核心功能¶
上下文窗口與壓縮閾值¶
插件將原本難以直接設置的參數轉化爲直觀的數值:
| 字段 | 寫入位置 | 效果 |
|---|---|---|
| Context window | llm-pi-ai settings, providers.<route>.defaultContextWindow |
設置路由上未在目錄中定義的模型的上下文窗口 |
| Compaction threshold | cordis.patch.yml, compaction-basic modelPolicies[].thresholdRatio |
後端計算 floor(contextWindow × ratio) 得到絕對閾值 |
| Retain budget | 同一行, modelPolicies[].retainTokens |
保持原文保留的 Token 數,留空則使用後端默認的 16% |
閾值以比率形式存儲,因此如果後續修改了窗口大小,需要再次點擊 Apply 以重新計算比率。
思考努力控制¶
插件在編輯器右下角(模型選擇器旁邊)添加了一個思考努力選擇器。它會讀取當前會話的模型,並嘗試從目錄中獲取該模型已聲明的級別;如果不存在,則根據模型 ID 識別供應商並使用其配置文件。
支持的供應商及級別如下:
| 供應商 | 匹配關鍵字 | 級別 |
|---|---|---|
| xAI | grok |
off, low, high, max |
| OpenAI | gpt / chatgpt / o1…o9 |
minimal, low, medium, high |
| Anthropic | claude |
low, medium, high |
| DeepSeek | deepseek |
off, high |
gemini / gemma |
minimal, low, medium, high |
|
| Qwen | qwen |
off, low, medium, high |
| Z.ai | glm / z-ai |
off, high |
| Moonshot | kimi / moonshot |
off, high |
| MiniMax | minimax |
off, low, medium, high |
選擇後,插件會將級別寫入 settings.yaml 中對應模型的 reasoningEfforts 字段。如果網關的接口字段拼寫與標準不同,需手動編輯 settings.yaml 中的值。
配置細節與校驗¶
寫入機制¶
插件通過 cordis.patch.yml 進行修改,只操作標記的管理塊。寫入前會將原文件備份爲 cordis.patch.yml.contextbudget.bak,並在磁盤上驗證每一條 provider/model 規則,失敗時立即回滾。
校驗規則¶
在保存前,插件會對配置進行校驗,拒絕寫入的情況包括:
* 窗口和閾值必須爲正整數;
* 閾值必須小於窗口;
* 派生的比率必須大於 0.16(後端默認保留比例)且小於 1;
* 保留預算必須小於閾值;
* 路由必須至少包含一個模型 ID。
爲什麼不替換壓縮引擎¶
compaction-basic 引擎在每一步都通過 llm.resolveModelInfo() 重新解析上下文窗口,並計算 floor(contextWindow × thresholdRatio)。因此,只需提供兩個數字(窗口和比率),引擎已經具備所有必要的功能,插件無需替換引擎。
限制與注意事項¶
- 適用範圍:僅適用於 pi-ai 路由。
- 默認值回退:
defaultContextWindow是回退值,不會覆蓋目錄中已定義的模型條目或模型自身的上下文窗口。 - 最大 Token:
maxTokens字段不受此插件控制,固定爲 32768。 - 成本:壓縮會觸發額外的總結請求,閾值越低,請求次數越多。
- 卸載限制:卸載插件不會撤銷已寫入的持久化配置(如
defaultContextWindow和cordis.patch.yml中的配置),需要手動刪除。
卸載¶
dsh plugin --profile web remove dsh-context-budget
卸載後,持久化的配置依然保留。如需恢復默認狀態,需手動刪除 llm-pi-ai 設置中的 defaultContextWindow 字段,以及 cordis.patch.yml 中 # dsh-context-budget managed block 標記的區塊。