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 标记的区块。

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

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

小夜