前言¶
在 DeepSeek Harness(DSH)中,模型选择通常发生在 /model 选择器里。手动选择简单模型或高级模型可以工作,但在一轮会话中,请求复杂度会变化:有时只是确认、总结,有时需要多步推理或处理错误循环。对使用 DSH 做智能体、工具链或本地工作流的人来说,反复切换模型会打断流程。
llm-adaptive 针对这个问题提供一个 adaptive(自动路由) provider:每次请求先做复杂度分类,再根据 pool.json 中的路由链选择后端 provider。
这是什么¶
llm-adaptive 是一个 DSH 插件,用于 per-request 复杂度分类和 provider 路由。仓库位于 https://github.com/dylan121322/llm-adaptive,许可证为 MIT。
它把 DSH 的模型选择器扩展出一个 adaptive(自动路由) 入口,并在 low、medium、high、critical 四个级别之间做路由。显式的 low、medium、high、critical 模型也保留在 picker 中,可以直接选择。
核心功能¶
每次请求先分类¶
分类器使用 deepseek-v4-flash,直接调用,不经过 proxy,也不产生递归。
每次请求会被分为 low、medium、high、critical 之一。
结合会话上下文¶
分类 prompt 会注入滚动会话目标摘要和最近几轮对话,并结合 continuation、wrap-up、error-loop 等规则判断当前请求是否需要更高或更低的路由级别。
Sticky level protection¶
当任务进行中,插件不会轻易把当前请求降到低一级。若没有明确的 downgrade 或 wrap-up 信号,请求会保持在上一级别。
配置驱动的路由链¶
路由链来自:
pool.json -> routing.levels
其中 $active 会展开为 active provider。缺失项会回退默认值;transport failures 会沿链向下尝试。
分类器配置来自 pool¶
分类器 URL、模型和密钥引用都来自 pool.json 的 classifier 段:
url
model
key_ref
插件不硬编码凭证。key_ref 会先对照 ~/.dsh/.credentials.yaml 解析,失败时回退到 pool 中的 api_key。
Fail-open¶
如果分类失败,请求会降级到 medium。插件不会因此阻塞请求。
决策可观察¶
每个决策都会写入插件日志,包括 level、cause(llm / sticky / cache)和 chain。
日志路径为:
~/.dsh/hooks/plugin.log
120 秒决策缓存¶
插件维护一个 120s 决策缓存,缓存 key 由 user-text head 和 goal fingerprint 组成。
前置要求¶
使用前需要:
- DeepSeek Harness(dsh)
- 模型池文件:
~/.dsh/tools/cc-switch-sync/pool.json
pool.json中的classifier段:url、model、key_refpool.json中的routing.levels:low、medium、high、critical- 一个用于分类器的 DeepSeek API key
包声明包含:
peerDependencies: @deepseek-ai/dsh-llm >=0.0.1-rc.5
dsh.bundle.patch: ./cordis.patch.yml
pool.json 可以由 cc-switch-sync import tool 生成,也可以手工编写。插件每次请求都会读取它,因此修改 pool 后会立即生效。
安装与启用¶
安装命令:
dsh plugin add llm-adaptive
安装完成后,重启 dsh web 服务,然后在 /model 选择器中选择:
adaptive(自动路由)
典型用法¶
1、打开 /model,选择 adaptive(自动路由)。
2、之后的每次 LLM 请求都会被分类为 low、medium、high 或 critical。
3、请求会被路由到该级别链中的第一个可用 provider。
4、决策会写入日志,形如:
level=… cause=… chain=…
日志位于:
~/.dsh/hooks/plugin.log
显式级别 low、medium、high、critical 也会列在 picker 中,可以直接选择,不依赖自动分类。
适用场景与注意¶
适合希望减少手动切换模型、但仍保留显式级别选择的 DSH 用户。它也适合需要按会话复杂度在不同 provider 之间切换的场景。
需要注意:
- 插件以当前 dsh 进程权限运行,安装前应检查源码、依赖和本地配置路径。
- 插件会读取
pool.json,并通过key_ref解析~/.dsh/.credentials.yaml,密钥引用应只指向你信任的来源。 - 分类失败会 fail-open 到
medium,请求仍会继续。 - 路由链的可用性取决于
pool.json中配置的 provider 和 transport。 - 许可证为 MIT,仓库地址为
https://github.com/dylan121322/llm-adaptive。
结尾¶
llm-adaptive 给 DSH 增加了一个配置驱动的自动路由入口:每次请求按上下文分类,再进入 low / medium / high / critical 路由链;分类失败时保持可用,并把决策写入日志。
GitHub:https://github.com/dylan121322/llm-adaptive
目录页入口可在 GitHub README 中的 “Awesome DSH Plugin” 徽章处找到。