在 DeepSeek Harness 的开发中,如何根据任务复杂度在“经济模型”和“高质量模型”之间切换是一个常见需求。手动实现分类逻辑会增加系统的复杂度,且难以保证一致性。dsh-adaptive-model-router 插件提供了一套确定性、本地化的路由方案,通过简单的配置即可实现按需切换。
这是什么¶
dsh-adaptive-model-router 是一个 Deterministic per-turn adaptive model routing 插件,由 icyaaaww 维护。它针对 DeepSeek Harness 0.1.1-rc.2 版本设计。
该插件的核心价值在于它不通过调用另一个模型来分类请求,而是通过本地、同步、可复现的计算来决定路由。它会在单次会话中根据任务特征自动升级模型,但不会降级,从而在保证成本控制和响应质量之间取得平衡。
核心功能¶
- 确定性逐轮路由:在每轮对话开始时,根据输入字符数和关键词判断是否需要切换到高质量模型。
- 本地同步执行:路由逻辑完全本地化,不发起额外的模型调用,因此不会增加 token 消耗或产生额外的 provider 请求。
- 迟滞行为:在单次会话(turn)中,路由可以升级但不会降级。只有当进入新的一轮对话时,才可能重新评估并降级到经济模型。
- 灵活的升级条件:支持基于步骤数(
upgradeAfterStep)或工具失败次数(upgradeAfterToolFailures)来触发升级。 - 参数控制:支持在路由中显式设置
reasoningEffort和maxTokens,并允许通过preserveUnknownSelection保留未配置的路由选择。 - 透明化:插件会记录请求配置的变更,保持
provider和model变量的一致性,便于调试和回放。
安装与启用¶
安装该插件需要使用 DeepSeek Harness 的插件安装命令。请确保你的环境已满足 Node.js ^22.19.0 || >=24.0.0。
dsh plugin --profile web add github:icyaaaww/dsh-adaptive-model-router
配置与典型用法¶
安装后,需要在 Harness 的配置中定义经济模型和高质量模型,并设置路由规则。
基础配置示例¶
在配置文件中定义路由器,设置经济模式和高质量模式的提供商及模型,并设定触发升级的阈值。
- id: adaptive-model-router
name: dsh-adaptive-model-router
config:
economy:
provider: deepseek-official
model: deepseek-v4-flash
quality:
provider: deepseek-official
model: deepseek-v4-pro
inputCharsThreshold: 1200
complexityKeywords: [architecture, migration, security, 架构, 迁移, 安全]
upgradeAfterStep: 2
upgradeAfterToolFailures: 1
failureExclude: [todo_write, job_output, job_list]
preserveUnknownSelection: true
配置项说明¶
- economy / quality:定义低成本模型(如 flash)和高成本模型(如 pro)的提供商和具体模型名称。
- inputCharsThreshold:输入字符数达到此值时触发升级。
- complexityKeywords:包含这些关键词(不区分大小写)时触发升级。
- upgradeAfterStep:从 0 开始计数,达到该步数时触发升级。
- upgradeAfterToolFailures:连续未排除的工具失败达到该次数时触发升级。
- failureExclude:指定在统计工具失败次数时需要排除的工具列表。
- preserveUnknownSelection:如果为
true,未匹配到路由的请求保持原样;如果为false,插件将接管所有请求。
参数调整¶
路由配置支持可选参数。在路由中指定 reasoningEffort 会清除之前模型的设置;不指定 maxTokens 则保留显式的请求限制。
注意事项¶
- 复杂度估算:关键词和长度规则仅用于估算复杂度,不能直接衡量回答质量。
- 工具失败统计:除非在
failureExclude中排除,否则策略拒绝产生的工具失败也会计入升级条件。 - 并行工具:如果路由在工具执行中途升级,已并行运行的工具可能仍在使用旧模型运行。
- 模型目录验证:插件不验证模型是否在目录中,由选定的 provider 负责处理可用性诊断。
- 成本报告:插件不包含成本报告功能,需要通过对比部署前后的遥测数据来评估效果。
适用场景¶
该插件适合需要在对话过程中动态调整模型复杂度的场景。例如,简单的问答使用 flash 模型降低成本,遇到复杂的架构设计或工具调用失败时自动切换到 pro 模型,从而在保证最终质量的同时控制推理成本。