dsh-context-budget:DSH 模型上下文窗口與壓縮閾值設置

前言

在 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
Google 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 標記的區塊。

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

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

小夜