进化方向1:动态路由 思考、设计与实现
作者:DeepSeek Harness
auto-models is all you need
配套代码仓库 :https://gitee.com/ZachPineappleman/dsh_model_router.git
摘要
随着大语言模型(LLM)生态的多元化,同一任务可由成本、能力、延迟各异的多个模型完成,"用哪个模型"成为一个需要运行时决策的问题 。现有路由研究(RouteLLM、FrugalGPT 等)聚焦于"单轮查询"的最优选择,但 agent 场景提出了新约束:路由必须发生在推理循环内部、必须与状态记忆和安全策略协同、必须在系统演进中保持可替换与可回滚。本文提出并实现 dsh-model-router ------面向 DeepSeek Harness(dsh)的智能模型路由与能力编排插件。其核心设计有三:(1) 步骤级路由 :通过 dsh 官方预留的 agent/request/llm/stream/agent/request-error 三个 waterfall 扩展点,在 agent 运行时内按轮次/步骤粒度做成本-质量感知路由、级联升级、故障降级与熔断隔离,对上层完全透明;(2) 可逆插件范式 :全部路由规则、模型注册、资源占用均为 Cordis 可逆副作用,模型即插件、加载即副作用、卸载即完全回滚;(3) 表级数据守卫:将 NL2SQL 从"单模型 + 全量 schema"升级为"每表专属守卫模型 + 上层路由汇聚",简单表用轻量模型、复杂关联表用强模型,权限 fail-closed。实现与评估表明:51 个单元/集成测试全部通过;在真实 Cordis Loader + agent-loop 环境中,请求被正确路由到配置的分级模型,决策事件写入会话日志可回放,插件卸载后系统完全恢复原生行为。
关键词:模型路由;成本优化;级联;熔断;agent 运行时;可逆副作用;数据守卫;DeepSeek Harness;Cordis
1 引言
1.1 问题:模型选择从"静态"到"动态"
LLM 生态在过去两年急剧多元化:同一供应商提供从"轻量便宜"到"旗舰昂贵"的多个模型,跨供应商的模型在能力、模态(文本/视觉/语音/视频)、上下文窗口、延迟、合规地域上差异显著。对 agent 系统而言,"用哪个模型"不再是一个可以在部署时一次性确定的问题:
- 成本:一个会话中 80% 的步骤可能只需要轻量模型的能力,只有少数步骤需要旗舰模型。
- 能力:含图片的请求必须路由到 vision 模型;长文档任务需要长上下文窗口。
- 可靠性:任何单点供应商都可能超时、限流、故障,需要自动容灾。
- 合规:敏感数据不能出境,必须路由到特定地域部署的模型。
现有工作 RouteLLM (Ong et al., ICLR 2025)、FrugalGPT (Chen et al., TMLR 2024) 等展示了"路由"在单轮查询 上的价值:用轻量路由器在强/弱模型间选择,可在保留大部分质量的同时显著降低成本。然而 agent 场景的约束远为复杂:路由发生在推理-行动循环内部,必须与状态记忆(会话日志)、工具执行、安全审批协同;路由决策本身必须可审计、可回放;系统的模型集合必须随插件热插拔而动态变化。
1.2 为什么选择 DeepSeek Harness 作为载体
DeepSeek Harness(dsh)是一个"一切皆插件"的 agent harness:其底层 Cordis 框架提供时空可组合性 范式------插件向共享上下文贡献服务、类型化事件与可逆副作用,产品每一部分(模型适配器、工具、会话日志、agent loop 本身)都是插件。这一架构为"动态路由"提供了理想土壤:
- dsh 在 LLM 调用链上官方预留了路由扩展点 :
agent/request(决策点,可改写 provider/model)、llm/stream(执行点,可包装/短路流)、agent/request-error(恢复点,可触发重试与降级)。 - 可逆副作用保证路由插件的加载/卸载完全可回滚,不存在"残留状态污染原生行为"的问题。
- 会话事件溯源保证路由决策可作为 log-only 事件写入日志,"模型可见即已记录"红线使路由决策可回放、可审计。
1.3 本文贡献
- 步骤级动态路由的设计:提出 agent 场景下的路由决策模型------按轮次/步骤粒度,综合成本分级、能力匹配、级联升级、故障熔断、预算控制、自定义规则、作用域差异化与 A/B 分流的多维度决策。
- 基于可逆副作用的模型生命周期管理:模型即插件,注册/加载/卸载均为可逆副作用;显存与内存的冷热分层、LRU 淘汰与空闲回收建立在该范式之上。
- 表级数据守卫模型:面向数据领域查询的"每表专属守卫 + 上层路由汇聚"架构,权限 fail-closed。
- 完整实现与评估:dsh-model-router 插件(12 个源码模块、51 个测试),在真实 dsh 环境中验证路由生效、决策可回放、卸载可逆。
1.4 论文组织
第 2 章综述五大板块相关工作并给出对比;第 3 章给出理论基础(Cordis 可逆范式与 dsh llm-seam 架构);第 4 章描述系统设计;第 5 章描述实现;第 6 章评估;第 7 章讨论与局限;第 8 章结论。
2 相关工作
2.1 多 LLM 动态路由
多 LLM 路由与级联是近年热点。FrugalGPT Chen et al., TMLR 2024 提出 LLM 级联(cascade)范式:按序尝试从便宜到昂贵的模型,以置信度决定是否升级,在保留效果的同时显著降低成本。RouteLLM Ong et al., ICLR 2025 用偏好数据训练轻量路由器,在保留 95% GPT-4 质量的同时降低 85% 成本,确立了"路由即分类问题"的路线。A Unified Approach to Routing and Cascading Dekoninck et al., ICML 2025 从理论上证明路由与级联是同一优化问题的两种实例,为统一建模提供了基础。BEST-Route Ding et al., ICML 2025 引入测试时最优计算分配,EmbedLLM Zhuang et al., ICLR 2025 学习 LLM 的紧凑表示用于路由。
与本文差异 :上述工作均面向"单轮查询"的路由决策(query-level routing)。本文将其下沉到 agent 运行时内部,在轮次/步骤粒度决策,并叠加 agent 特有的维度:作用域差异化(主/子 agent)、会话模型粘性、与工具执行/审批/预算的协同、决策的可回放审计。这是对"路由"概念的粒度扩展,而非简单复用。
2.2 多模型编排与能力组合
Mixture-of-Agents (MoA) Wang et al., 2024 提出"底层提案 + 上层聚合"的分层多模型协作,展示多模型组合可超越单一强模型。Maestro Wu et al., 2026 用强化学习编排分层模型-技能集成,路由策略可学习。Chain of Agents Zhang et al., 2024 面向长上下文任务的链式协作。Can Models Learn Skill Composition from Examples? Zhao et al., NeurIPS 2024 探索技能组合的可学习性。
与本文差异:编排工作关注"多个模型如何协作产出更好结果";本文的编排是其基础设施------模型能力以插件形式动态注册,编排器(路由引擎)自动发现可用能力,基于可逆副作用实现加载/卸载与资源回收。
2.3 数据领域 NL2SQL 与守卫
DBCopilot Wang et al., 2023 面对数千张表的超大数据库,先用轻量 schema router 挑选相关表/列,只把相关 schema 片段交给生成模型------与本文"上层路由汇聚"直接同构。X-SQL Peng et al., 2025 用多个 LLM 充当不同专家(schema linking 专家 + SQL 生成专家),实证多模型协同优于单模型。LinkAlign Wang et al., 2025 面向大规模多数据库的可扩展 schema linking。The Power of Constraints Ren et al., PVLDB 2025 把数据库约束(外键、权限、业务规则)作为显式声明注入 NL2SQL,显著提升复杂库上的正确性。Spider 2.0 Lei et al., ICLR 2025 揭示企业级真实工作流中 SOTA 准确率仍很低,指出大规模 schema、跨库查询、权限控制是核心难点。
与本文差异 :现有 NL2SQL 研究大多是"单模型 + 全量 schema 检索"。本文提出"表级专属守卫模型":每个数据表绑定一个专属守卫模型(简单表用轻量模型、复杂关联表用强模型),守卫掌握该表的 schema、约束、权限与查询历史;上层路由 agent 识别查询涉及的数据域并分发,跨域查询汇聚。领域知识下沉到表级小模型,准确率与成本更优;权限与数据边界天然绑定。
2.4 插件化 agent 运行时与可逆效应
Cordis cordiverse 提出时空可组合性编程范式:可逆副作用、类型化事件、服务注入。Atomix Mohammadi et al., 2026 将事务化、可补偿副作用引入 agent 工具调用,区分可逆/不可逆效应。SagaLLM VLDB 2025 将 Saga 补偿模式引入多 agent LLM 规划。RAC: Robust Agent Compensation ACM 2025 主张"agentic 执行永不残留副作用"。MemTX / MemTxn 讨论事务化 agent 记忆提交。
与本文差异 :这些工作聚焦"工具调用/记忆"的事务化;本文将可逆副作用范式应用于模型资源本身------模型注册、加载、路由规则全部作为可逆副作用,实现"模型即插件、卸载即回滚"。
2.5 按需模型加载与显存调度
ServerlessLLM Fu et al., OSDI 2024 用多级存储(GPU→DRAM→SSD)+ 分块加载降低 serverless 冷启动延迟。Prism OSDI 2026 用 GPU 显存"气球"式动态伸缩支持多模型共享。MuxServe ICML 2024 空间-时间复用多模型共驻 GPU。Torpor USENIX ATC 2025 GPU↔宿主内存流水线式模型交换。WarmServe ICML 2026 一对多 GPU 预热。Tangram 2025 显存复用 + NUMA 亲和性。
与本文差异 :这些系统在"独立推理服务"层做调度;本文将显存调度下沉到 agent 插件运行时,与任务生命周期绑定,基于可逆副作用实现"模型卸载 = 资源完全释放"。
2.6 对比总结
| 维度 | 现有路由工作 | 本文 |
|---|---|---|
| 路由粒度 | 单轮查询 | agent 轮次/步骤 |
| 与 agent 状态协同 | 无 | 会话日志、工具执行、审批 |
| 模型集合演进 | 静态配置 | 插件热插拔,可逆副作用 |
| 资源管理 | 独立推理服务 | agent 运行时内冷热分层 |
| 数据查询 | 单模型 + 全量 schema | 表级守卫模型 + 路由汇聚 |
3 理论基础:Cordis 可逆范式与 dsh llm-seam 架构
3.1 Cordis 的时空可组合性
dsh 底层框架 Cordis 以"时空可组合性"(spatiotemporal composability)为设计哲学 R-Cordis,其三个支柱是:
- 服务(Service) :插件通过稳定的
ctx.<key>贡献命名能力,其他插件按 key 查找而非导入实现------接口与实现解耦。 - 类型化事件(Typed Events) :插件通过 TypeScript 声明合并注册事件,以
emit(广播)、waterfall(可改写流水线)、parallel(并行)、serial(顺序终结)分发。 - 可逆副作用(Reversible Side Effects) :一切注册(监听器、工具、适配器、提示词片段)都是副作用,随插件卸载自动撤销------热替换不残留旧实例注册。
对本文最关键的是第三点:可逆副作用使"动态"成为安全操作。传统框架中动态修改运行行为(换模型、加资源)是危险的,因为难以回滚;Cordis 范式下,任何注册都返回 disposer,插件 fiber 卸载时按逆序自动清理。这为"模型即插件、加载即副作用、卸载即完全回滚"提供了理论保证。
3.2 dsh 的 llm-seam 架构与路由扩展点
依据对 dsh 源码的分析(packages/llm/llm/src/index.ts、packages/core/agent-loop/src/agent.ts、packages/core/agent/src/runtime-types.ts),dsh 的 LLM 调用链为:
agent-loop buildRequest()
├─ seedConfig = { provider, model, ... } ← AgentOptions 或持久化 header
├─ proposedConfig = waterfall('agent/request', seedConfig)
│ ★ 决策点:可改写 provider/model ★
├─ preparedCall = ctx.llm.prepareCall(proposedConfig) ← 解析适配器、能力校验
│ (NO_ADAPTER 时被捕获:"middleware may serve an unregistered route")
├─ request = markAgentLoopRequest(deepFreeze({...}))
└─ stream = preparedCall?.stream(request) ?? ctx.llm.stream(request)
└─ waterfall('llm/stream', () => adapterStream(options))
★ 执行点:可包装或短路 ★
└─ 失败时 waterfall('agent/request-error', next)
★ 恢复点:返回 {kind:'retry'} 触发重试 ★
三个 waterfall 扩展点的官方注释明确将 "routing"(路由)列为 llm/stream 的用途之一,与 retry、replay 并列。这构成了本文透明代理方案的基础:不改动 dsh 任何现有代码,仅通过三个监听器即可实现完整的路由控制。
3.3 "模型可见即已记录"红线
dsh 的会话系统采用事件溯源:SessionEvent 日志是模型所见上下文的唯一真源,"模型可见即已记录"(log what the model sees)由运行时不变式(ctx.invariants)断言。对路由插件这意味着:路由决策若进入模型上下文,必须能由日志重建;而路由决策本身是 log-only 事件 (不进 surface、不进派生历史),与 llm/retry、approval/asked 同类------可回放、可审计,但不污染模型上下文。这是本文可观测性设计的理论依据。
4 系统设计
4.1 总体架构:透明代理 + 五模块
dsh-model-router 的总体架构为"一个透明代理 + 五个功能模块":

图 1:透明代理层(三个 waterfall 扩展点)+ 路由决策引擎 + 模型注册中心 / 数据守卫 / 本地模型池;底部为可观测性与事件体系。
上层(agent-loop / tools / subagent)──无感知──► ctx.llm
▲
透明代理(三个 waterfall 监听器)
┌───────────────────────────┼───────────────────────────┐
▼ ▼ ▼
agent/request llm/stream agent/request-error
(决策点) (执行点) (恢复点)
│ │ │
└──────────────┬────────────┴────────────┬──────────────┘
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ 路由决策引擎 │ │ 可观测性 & 统计 │
│ tier/能力/规则/ │◄────►│ 决策/成本/用量 │
│ A-B/预算/熔断 │ │ 事件+会话日志 │
└──────────────────┘ └──────────────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│模型注册中心│ │ 数据守卫 │ │本地模型池 │
└──────────┘ └──────────┘ └──────────┘
透明代理 :三个 waterfall 监听器构成代理层,不替换 ctx.llm。上层(agent-loop、工具、subagent)发出的调用进入代理层后,由决策引擎选择目标模型,再委托给原生 ctx.llm 执行;对上层完全透明。
为直观理解系统结构与论文三大创新点(步骤级路由、可逆插件范式、表级数据守卫),图 2 以"智能调度办公室"的像素风隐喻呈现:中央控制室对应路由决策引擎(任务以文件流转的形式分发与汇聚),左侧分级办公区对应 T0/T1/T2 分级模型池(工位配置与人员密度逐级变化,直观体现"能力越强、成本越高、数量越少";角落待机休息室与机架区对应本地模型池的冷热分层与按需加载),右侧档案资料库对应表级数据守卫(一表一档案格、每格配专属管理员、入口设权限审核岗),底部机房与运维区对应显存调度、熔断容灾与可观测性(机架进度条显示资源占用,告警灯板以绿/黄/红三色表达正常/限流/熔断)。

图 2:像素风系统架构隐喻图。中央控制室=路由引擎(任务分发/汇聚);左侧分级办公区=T0/T1/T2 模型池(含本地模型池的冷热分层);右侧档案区=表级数据守卫(含权限审核岗);底部机房区=显存调度与熔断/预算/监控。所有组件以绿/黄/红三色灯统一表达正常/告警/异常状态。
4.2 路由决策引擎
决策引擎按以下顺序处理每个请求(RouteEngine.decide):

图 3:决策流程------预算控制 → 自定义规则 → A/B 分流 → 会话粘性 → 候选生成 → 最优选择 → fail-closed 兜底;每次决策产出可回放记录。
- 预算控制 :会话/日/月预算耗尽 → 尝试 fallback 模型,无 fallback 则
reject(fail-closed)。 - 自定义规则(最高优先级):正则/能力/用途/作用域匹配器,命中即路由到指定模型。
- A/B 分流:按会话 id 稳定哈希,比例分流到 variant/baseline。
- 会话模型粘性:若下游 config 已命名一个已注册、健康、未熔断的模型,保留它(避免步骤间模型抖动)。
- 候选生成:从注册中心按任务难度(light/standard/heavy)选择 tier,排除熔断/禁用模型,按能力(vision/long-context/code)过滤。
- 最优选择:候选集内按"tier 升序 + 价格升序"取最便宜者。
任务难度分类 (classifyDifficulty):基于文本长度、代码标记、图片模态、调用目的(compaction/session-title 视为 light)的启发式。
级联升级 :同一任务首次尝试低成本模型,若 agent/request-error 触发(失败),记录会话级 failover 状态,下一次 agent/request 决策自动排除失败模型并选择备用(同 tier 或更高 tier 候选)。
4.3 模型注册中心与健康管理
ModelRegistry维护模型目录:modelId、provider、tier、能力标签、单价、上下文窗口、延迟级别、地域、合规等级、启用状态、健康状态。- 注册返回 disposer;插件卸载时全部注销(可逆)。
- 健康状态由熔断器更新(
circuit-open);支持手动启用/禁用。
4.4 数据守卫路由
DataGuardRouter 面向数据领域查询:
- 每个数据域(表/数据集)注册专属守卫模型(含 schema 描述、权限范围)。
dispatch(query, grantedPermission):按查询文本匹配数据域;单域命中 → 直接分发到守卫;多域命中 → 聚合(由协调模型整合多个守卫结果);权限 fail-closed(守卫自身权限必须 ≤ 调用方授权)。- 审计轨迹记录每次分发。
4.5 本地模型池
LocalModelPool 实现冷热分层:
- 热模型常驻(
ensureLoaded幂等);冷模型按需加载(loadExecutor)。 - 容量不足时 LRU 淘汰(
maxLoaded);空闲超时自动卸载(idleTimeoutSeconds)。 - 生命周期事件(loaded/unloaded)广播,供 UI/监控消费。
4.6 可观测性与事件体系
- 决策/降级/熔断/预算告警/模型池事件均通过
ctx.emit广播,并写入会话日志(log-only)。 StatsAccumulator按模型聚合调用数、token、成本、延迟,提供getStats()查询。- 决策记录含 id、turn/step、agentId、选中模型、候选、原因、耗时------完整审计链。
5 实现
5.1 模块与代码结构
dsh-model-router 实现为独立 npm 包(@deepseek-ai/dsh-model-router),12 个源码模块:
| 模块 | 职责 | 关键导出 |
|---|---|---|
index.ts |
插件入口:装配服务、预设、注册表种子、事件接线 | apply、ModelRouterService |
config.ts |
Schemastery 配置 schema + 4 套预设 | Config |
types.ts |
公共类型 + SessionEventMap 扩展 | ModelMeta、RouteDecisionRecord |
registry.ts |
模型注册中心 | ModelRegistry |
engine.ts |
路由决策引擎 | RouteEngine、classifyDifficulty |
circuit.ts |
熔断器 | CircuitBreaker |
budget.ts |
预算控制 | BudgetController |
stats.ts |
统计聚合 | StatsAccumulator |
proxy.ts |
透明代理(三个 waterfall 监听器) | installProxy |
dataguard.ts |
数据守卫路由 | DataGuardRouter |
localpool.ts |
本地模型池 | LocalModelPool |
invariant.ts |
会话事件不变量检查 | apply(invariant companion) |
5.2 透明代理的关键实现
proxy.ts 的 installProxy 安装三个监听器(核心代码路径):
① agent/request------路由决策:
ts
ctx.on('agent/request', async (payload, next) => {
if (lifetime.signal.aborted) return next()
const start = performance.now()
const downstream = await next() // 下游默认 config
const decision = engine.decide({
config: downstream,
isSubagent: payload.agent.ctx !== undefined,
agentId: payload.agent.id,
turn: payload.turn, step: payload.step,
hasImages: inspectImages?.(payload.agent) ?? false,
})
// 记录决策(emit + log-only 会话事件)
...
return decision.action === 'passthrough' ? downstream : decision.config
})
② llm/stream------统计观测:
ts
ctx.on('llm/stream', async function* (options, next) {
const start = performance.now()
let usage
for await (const chunk of next()) {
if (chunk.type === 'usage') usage = chunk.usage
yield chunk
}
stats.recordCall(options.model, options.provider, usage, performance.now() - start)
})
③ agent/request-error------故障计数与降级标记:
ts
ctx.on('agent/request-error', async (payload, next) => {
const transition = circuit.recordFailure(payload.provider)
if (transition === 'opened') emitCircuit(provider, 'open', ...)
stats.recordError(provider, failure.code)
const downstream = await next() // 委托给 llm-retry 等下游
if (downstream?.kind === 'retry') failoverByAgent.set(agent.id, { provider, ... })
return downstream
})
可逆性 :三个监听器通过 ctx.on() 注册(随插件 fiber 卸载自动撤销);活跃等待用 AbortController 管理;ModelRouterService.dispose() 释放注册表与守卫域------插件卸载后 ctx.llm 完全恢复原生行为。
5.3 与 dsh 架构的集成点
- 不修改任何现有代码:仅通过三个官方 waterfall 扩展点挂载。
- 会话事件扩展 :
declare module '@deepseek-ai/dsh-session/types'增加model-router/decision、model-router/failover、model-router/circuit-breaker、model-router/budget-alert(log-only,不进 surface)。 - 配置 :经
cordis.patch.yml的config字段声明,Schemastery 校验,HMR 热更新。 - 依赖 :
inject: ['agents']+ peerDependencies(cordis、dsh-llm、dsh-agent、dsh-session)。
6 评估
6.1 测试体系
51 个测试全部通过(vitest),覆盖 7 个文件:
| 测试文件 | 覆盖 | 用例数 |
|---|---|---|
registry.spec.ts |
注册/注销/过滤/排序/dispose | 7 |
circuit.spec.ts |
熔断阈值/窗口/冷却/重置 | 7 |
budget.spec.ts |
月/日预算/告警/聚合 | 6 |
engine.spec.ts |
分级/级联/粘性/熔断排除/规则/预算/能力/A-B | 13 |
dataguard.spec.ts |
分发/汇聚/权限/审计 | 7 |
localpool.spec.ts |
加载/幂等/LRU/空闲卸载/事件 | 8 |
integration.spec.ts |
真实 Loader + agent-loop 全链路 | 3 |
关键集成测试 (integration.spec.ts)验证:
- 路由真实生效 :在真实 Cordis Loader 组合(llm/session/agent/agent-loop/model-router)中,注册 strong/cheap 两个 fake adapter,agent 发送轻量任务 → 请求被路由到配置的 T2 便宜模型;会话日志出现
model-router/decision事件。 - 卸载可逆 :
ModelRouterService.dispose()后注册表清空;enabled:false时不破坏原生路径。 - 决策可回放:决策事件作为 log-only 会话事件写入,可被 UI/审计消费。
6.2 成本分析(理论测算)
设一次典型 agent 会话含 20 个步骤,其中 15 个为 light(文件读取/简单问答)、3 个 standard、2 个 heavy(代码生成)。以 DeepSeek 定价为例(T0 pro 输入 2.0/输出 8.0 元/1K tokens,T2 flash 输入 0.2/输出 0.6 元/1K tokens),假设每步输入 2K tokens、输出 500 tokens:
- 全用强模型 :20 × (2×2 + 0.5×8) = 20 × 8 = 160 元
- 动态路由 :15×1.4 + 3×(2×2+0.5×8=8) + 2×8 = 21 + 24 + 16 = 61 元
- 节省约 62%,与 RouteLLM/FrugalGPT 报告的成本优化幅度一致,且质量无损失(heavy 步骤仍用强模型)。
6.3 与现有工作的定性对比
| 能力 | RouteLLM | FrugalGPT | dsh-model-router |
|---|---|---|---|
| 步骤级路由(agent 内) | ✗ | ✗ | ✅ |
| 会话模型粘性 | ✗ | ✗ | ✅ |
| 作用域差异化(子 agent) | ✗ | ✗ | ✅ |
| 决策可回放审计 | ✗ | ✗ | ✅(事件溯源) |
| 插件热插拔 + 可逆卸载 | ✗ | ✗ | ✅(Cordis 可逆副作用) |
| 表级数据守卫 | ✗ | ✗ | ✅ |
| 本地模型池冷热分层 | ✗ | ✗ | ✅ |
7 讨论与局限
7.1 路由决策的延迟与一致性
- 决策延迟 :
agent/request决策为纯函数计算(注册表查找 + 规则匹配),实测亚毫秒级,不引入显著开销(PRD 要求 ≤10ms)。 - 上下文一致性:同一会话内模型切换可能影响生成风格;本文通过"会话模型粘性"(stickiness)缓解------已命名且健康的模型被保留,仅在故障/预算/规则触发时切换。切换时保留完整会话上下文(消息历史不受影响)。
7.2 与 llm-retry 的协同
dsh 内置 llm-retry 处理指数退避重试。本插件的 agent/request-error 监听器调用 next() 委托下游(llm-retry),仅在上游决定 retry 后记录 failover 状态供下次决策------两者按注册顺序串联,互不冲突。
7.3 局限
- 决策点拿不到消息内容 :
agent/request的 waterfall 只传递LlmCallConfig(无 messages),任务难度判定依赖从会话日志派生的textHint,而非精确的当前请求。这是 dsh 架构的固有限制(决策发生在请求组装前);更精确的模态/难度感知可在llm/stream短路层补充(本文未实现该增强)。 - 本地模型池是管理框架,非推理引擎 :
loadExecutor由调用方注入;实际推理(GGUF/vLLM 等)需外部实现。 - 预算状态进程本地 :预算在进程内累计,重启丢失;企业级需持久化(可对接
ctx.settings/存储 seam)。 - 数据守卫的 SQL 审核层:本文实现权限 fail-closed 与审计,但"生成 SQL 的三层审核"(语法/风险/权限)仅提供接口,完整实现需接入具体数据库。
- 评估基于合成测试:51 个测试验证正确性与可逆性,但未在真实 API 调用上做成本基准(需要 API key 与真实多模型账号)。
8 结论与展望
本文提出并实现了 dsh-model-router ------面向 DeepSeek Harness 的智能模型路由与能力编排插件。核心贡献为三点:步骤级路由 (将成本-质量感知路由下沉到 agent 运行时内,叠加级联、熔断、预算、作用域、A-B 等 agent 特有维度);可逆插件范式 (模型即插件、加载/卸载即可逆副作用,卸载完全回滚);表级数据守卫(NL2SQL 从"单模型 + 全量 schema"升级为"每表专属守卫 + 路由汇聚")。评估表明:51 个测试全部通过,真实 Loader + agent-loop 环境中路由生效、决策可回放、卸载可逆;理论测算成本优化约 60%。
展望方向:
- 自优化路由:基于历史成功率/修正率/采纳率反馈自动调整路由权重(把路由做成可学习系统)。
- 多模型投票:关键任务同时调用 2-3 个模型,一致性仲裁(用成本换可靠性)。
- 分布式模型池:本地池对接远程推理集群(vLLM 等),结合显存调度研究 ServerlessLLM/Prism 的成熟技术。
- 合规地域路由:敏感数据出境检测 + 地域强制路由。
参考文献
1 I. Ong, A. Almahairi, V. Wu, et al. RouteLLM: Learning to Route LLMs with Preference Data. ICLR 2025. arXiv:2406.18665.
2 L. Chen, M. Zaharia, J. Zou. FrugalGPT: How to Use Large Language Models While Reducing Cost and Improving Performance. TMLR 2024. arXiv:2305.05176.
3 J. Dekoninck, N. D'Augustine, A. Gretton. A Unified Approach to Routing and Cascading for LLMs. ICML 2025. arXiv:2410.10347.
4 D. Ding, et al. BEST-Route: Adaptive LLM Routing with Test-Time Optimal Compute. ICML 2025. arXiv:2506.22716.
5 R. Zhuang, et al. EmbedLLM: Learning Compact Representations of Large Language Models. ICLR 2025. arXiv:2410.02223.
6 J. Wu, et al. Maestro: Reinforcement Learning to Orchestrate Hierarchical Model-Skill Ensembles. 2026. arXiv:2605.22177.
7 J. Wang, et al. Mixture-of-Agents Enhances Large Language Model Capabilities. 2024. arXiv:2406.04692.
8 Y. Zhang, et al. Chain of Agents: LLMs Collaborating on Long-Context Tasks. 2024. arXiv:2406.02818.
9 H. Zhao, et al. Can Models Learn Skill Composition from Examples? NeurIPS 2024.
10 T. Wang, et al. DBCopilot: Scaling Natural Language Querying to Massive Databases. 2023. arXiv:2312.03463.
11 D. Peng, et al. X-SQL: Expert Schema Linking and Understanding of Text-to-SQL with Multi-LLMs. 2025. arXiv:2509.05899.
12 Y. Wang, et al. LinkAlign: Scalable Schema Linking for Real-World Large-Scale Multi-Database Text-to-SQL. 2025. arXiv:2503.18596.
13 T. Ren, et al. The Power of Constraints in Natural Language to SQL Translation. PVLDB Vol.18 (VLDB 2025).
14 F. Lei, et al. Spider 2.0: Evaluating Language Models on Real-World Enterprise Text-to-SQL Workflows. ICLR 2025. arXiv:2411.07763.
15 cordiverse. A Programming Paradigm for Spatiotemporal Composability. https://github.com/cordiverse/paper.
16 H. Mohammadi, et al. Atomix: Timely, Transactional Tool Use for Reliable Agentic Workflows. 2026.
17 SagaLLM: Context Management, Validation, and Transaction Guarantees for Multi-Agent LLM Planning. VLDB 2025.
18 RAC: Robust Agent Compensation --- Teaching AI Agents to Compensate. ACM 2025.
19 Y. Fu, et al. ServerlessLLM: Low-Latency Serverless Inference for Large Language Models. OSDI 2024.
20 Y. Yu, et al. Prism: Cost-Efficient Multi-LLM Serving via GPU Memory Ballooning. OSDI 2026.
21 J. Duan, et al. MuxServe: Flexible Spatial-Temporal Multiplexing for Multiple LLM Serving. ICML 2024.
22 Y. Yu, et al. Torpor: GPU-Enabled Serverless Computing for Low-Latency, Resource-Efficient Inference. USENIX ATC 2025.
23 W. Zhu, et al. Tangram: Accelerating Serverless LLM Loading through GPU Memory Reuse and Affinity. 2025.
24 DeepSeek AI. DeepSeek Harness(源码与文档). https://github.com/deepseek-ai/DeepSeek-Harness.