前言¶
在 DeepSeek Harness(DSH)里同时接 Gemini、Claude、Codex、DeepSeek API 等多路订阅时,常见做法是手动换模型或改配置。某一档额度用尽、鉴权失败或地区不可用时,还要自己重发消息、记上一档用了谁。下面介绍社区插件 dsh-model-rotation(维护者 ZhouXuan-Yu):把多来源模型排成一条可排序的链,失败时自动切下一档并在必要时整步重发,并在界面里标明「这次到底是哪个模型答的」。
这是什么¶
dsh-model-rotation 是面向 DSH 的插件,npm 包名同为 dsh-model-rotation(当前资料中版本 0.8.2,许可证 MIT)。它注册一个虚拟 provider(默认 id rotation),下面只有一个虚拟模型 rotation/auto。插件本身不接外部 API,而是在每次调用时按你配置的链,把请求委托给真实的 provider。
一句话:选中 rotation/auto 后,每一轮对话都按链逐档尝试;前一档在「尚未向会话输出内容」的前提下失败则换下一档;轮询模式下还可配合 agent 层的 autoResend,在额度类失败时自动重跑当前步骤,让下一档自然接上。
核心功能¶
按来源分组,再组成轮询链¶
候选模型按来源分组,例如 README 中提到的:agy 账号池、Codex 订阅、两家 DeepSeek API、内置 DeepSeek 等。组内可先筛选再加进链;同名模型在不同分组下不会混用(例如 Codex 的 gpt-6.1-sol 与 apixiao 的同名模型分开管理)。
默认示例链(内置 example 预设)为:Gemini 3.8 Flash[high] → Codex GPT-6.1 Sol[high] → xiao-DeepSeek Flash → 内置 DeepSeek Flash。具体模型名以你环境中的目录为准。
手动排序与自动排序¶
- 手动(
sortMode: manual):严格按链上序号尝试,第 1 档不行再用第 2 档。 - 自动(
sortMode: auto):按实测成功率、首字延迟等健康度动态调整尝试顺序;冷却中的档永远排到最后。自动模式可选偏好:speed(更快)、balanced(默认)、reliability(更稳)。
预设:模型 + 思考强度¶
可把「链上各档模型及其 reasoning effort」存成预设。README 提到内置 id 如 example、fast、coding、quality,也可自存;设置页或命令一键切换,适合按任务换档。
额度与错误感知、冷却¶
被跳过的候选会进入冷却表:额度、鉴权、地区资格(ELIGIBILITY)类约 15 分钟,其它失败约 30 秒。冷却与链配置、自定义预设等一并落盘(默认路径 <DSH_HOME>/state/dsh-model-rotation/state.json),重启 DSH 后仍生效。
链里所有档都在冷却时,插件 fail-open:仍按顺序试一遍,不会直接把请求打死。
看清「谁答的」¶
- 模型选择器:composer 右下角菜单第一行固定 「⚡ 自动轮询(Auto)」,选中即本会话使用
rotation/auto;显示轮询模式时为品牌色「⚡ 自动轮询」。选普通模型则退出轮询、直连该模型。 - 会话头徽章:轮询成功时显示实际应答档,例如
⚡ Codex GPT-6.1 Sol · high · 7.6s · ↻1(↻N 表示本次前有 N 档失败被切换)。直连调用也会显示「直连」样式。标题生成、上下文压缩等后台调用不参与,避免误改徽章。 - 设置 → 模型轮询:顶部状态条含排序模式、预设、冷却档数、上次回答模型等;页面约每 5 秒刷新状态。
失败后的整步重发(autoResend)¶
适配器内切换只对「还没吐出任何内容」的失败安全。插件还监听 agent/request-error:轮询模式下某步失败且失败档已进入冷却后,可让 agent 循环重跑该步(最多 maxAutoResends,默认 2),下一次自然落到链上下一档。链内全部冷却时不重发,避免空转。
安装与启用¶
资料中的安装方式针对 DSH desktop(本地已有插件目录):执行安装脚本后重启应用,再在设置里打开对应页面。
node scripts/install.mjs
完成上述步骤后:重启 DSH 桌面端,打开 设置 → 模型轮询 进行配置。插件要求 Node >= 20.0.0(见 package.json 的 engines)。
插件会在 DSH 进程内加载;安装或使用前请自行查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境与安全要求。社区目录页:skillhub.cn 插件页(与 DeepSeek / 幻方无官方从属关系,DSH 生态为「一切皆插件」的独立社区形态)。
典型用法¶
1. 进入轮询模式¶
在 composer 模型选择器点 「⚡ 自动轮询(Auto)」,或与会话模型目录等价的方式选中 rotation/auto。之后每轮按设置中的链尝试。
不确定从哪配链时,可在 设置 → 模型轮询 引导卡点击 「一键:推荐链」,套用内置 example 预设。
2. 命令与 GUI 等价¶
设置页按钮与 /rotation 子命令行为一致;改动经 POST /plugins/model-rotation/command 落盘,一般无需重启。
排序与链维护示例(摘自 README):
/rotation sort manual # 手动排序
/rotation sort auto balanced # 自动排序,均衡偏好
/rotation order 2,1,3 # 按序号重排
/rotation move 3 1 # 把 #3 移到 #1
/rotation add openai-codex/gpt-6-astra high # 链尾追加一档
/rotation set 3 apixiao/gpt-6-sol high # 更换 #3 的模型与强度
/rotation remove 4 # 删除 #4(至少保留一档)
查看分组与模型列表:
/rotation groups
/rotation models
/rotation status
/rotation probe
3. 诊断¶
若模型选择器接管失败,插件会在控制台 warn,并可通过 client 上报写入状态目录下的 client-report.jsonl;README 提到可用 _probe_rotation_live.mjs 查看运行 state / clientReports。座位渲染崩溃时会兜底为「⚡ 自动轮询」按钮,仍可切入轮询模式。
适用场景与注意¶
适合:同时维护多路 LLM 订阅、希望「主模型挂了自动换备胎」、需要按任务切换「模型 + 思考强度」预设、且希望在会话里核对实际应答模型的 DSH 用户。
注意:
- 已在流式输出中途的失败不能安全换模,否则会话内容错乱;整步重发仅覆盖「步骤级失败且尚未产出内容」等插件已声明的场景。
- 用户主动 abort 不算失败,不切换、不冷却。
- 与官方
ModelDirectory共用 per-session 选择语义;本插件用较低 slot priority 替换 composer 的 single 槽选择器,若 DSH 官方结构调整可能导致接管失败,但/rotation与设置页仍可用。 - v0.6.1 起将 Auto 选择器 priority 调整为 -20,避免与其它插件
-10冲突;资料中最新包版本为 0.8.2,以 npm / 仓库为准。
结尾¶
dsh-model-rotation 把多来源模型收成一条可排序、可预设、可统计的链,并在额度与硬错误场景下自动降级与有限次重发,同时在选择器、会话头与设置页标明真实应答模型。需要细节命令与界面说明时,以仓库 README 为准。