中文EN

dsh-auto-model-routing

model已测通过npmMIT

通过 Jev 调整主会话推理投入而不换模型,为 fresh 子任务独立选择并应用能力与投入,展示决策分布并收集逐回复资源分配反馈。

下载量 / Downloads
3,440
依赖体积 / node_modules
27.22 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-auto-model-routing

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

dsh-auto-model-routing

[English](README.md) · 简体中文

上:已应用的 AUTO 决策与投入分布;下:决策服务设置与连接测试成功。截图来自隔离 DSH 宿主,使用回环模拟决策服务与回环模拟模型 provider;端点、账号与任务均为合成数据。

<!-- problem -->

为 DSH 增加 AUTO 模式:主 Agent 自动调 effort,子 Agent 自动选 model + effort。 不必每轮手动选择推理投入,也不必为每个子任务手动挑模型。

  • 主 Agent:保留你选择的模型,按回合调整推理投入(effort)。
  • 子 Agent:按任务独立判断能力需求与推理投入,选择模型与 effort。 不是把“更强模型”和“更深推理”捆成一个档位。
  • 看得见、能反馈: 展示决策分布与实际生效状态,在回复下方提交本机分配反馈。

AUTO 覆盖哪些 DSH 场景?

场景 · AUTO 的作用 · 当前边界

主 Agent 用户回合 · 每个新用户回合判断 effort,主模型不换 · 不逐工具步骤重判;模型必须支持相应 effort

官方 fresh subagent · 首次请求前选择并绑定子 model + effort · Claude/GPT 普通子调用已在真实模型上验证;受目录和允许列表约束

官方 fresh spawn_teammate · 按同一策略绑定新 teammate 的 model + effort · 已有 mock 宿主覆盖,尚未完成真实模型 teammate 验收

已绑定子实例恢复或继续执行 · 重用初始路线,不重新分配 · 依赖插件保持启用及路由记录完整

显式指定 model / effort · 保留已指定维度,仅判断未指定维度 · 两者都指定则只校验,不调用 Jev

fork、第三方或未绑定创建路径 · 不承诺自动选配 · 未绑定子实例(含 fork)原样放行;预览工具对 fork 返回不支持,AUTO 不会静默替换成别的路由

这里是官方接入路径的覆盖说明,不代表所有 DSH 入口、CLI/TUI 界面或第三方插件都已验收。Web UI 是当前验证入口;MANUAL 不做新判断。route_subagent 仅预览,不是必须先调用的派发步骤。

本机反馈 → 未来的学习调整

现在: 在已绑定决策的回复下评价“合适 / 投入偏高 / 投入不足 / 无法判断”,可修改、撤销。反馈与决策快照保存在本机,不会因点击反馈而上传到决策服务,也不会立即改变路由;AUTO 任务判断本身仍按所选服务外发。

未来方向: 增加基于本机反馈与执行结果的学习、评估和策略调整,让 AUTO 更贴合你的任务。尚未实现自动学习或反馈驱动调参,目前记录用于后续评估,不承诺已证明的质量提升或成本节省。

安装:已验证 DSH 0.2.0-rc.2、Web UI,Node.js >=22.19。

dsh plugin --profile web add dsh-auto-model-routing
# 或从源码安装(出现提示时批准本地构建):
dsh plugin --profile web add prgrmrwy/dsh-auto-model-routing

重启 DSH 并刷新页面,到设置 → 自动模型路由选择决策服务、保存对应 API key,点击测试连接发送固定公开样例。新会话缺省 MANUAL,点击芯片切换 AUTO。配套委派 skill 已包含,无需单独安装。

使用

位置 · 操作

AUTO / MANUAL 芯片(模型选择器左侧) · 点击切换;悬停查看判断、候选分布、确定度、模型与投入、生效状态

判档提示 · 短暂显示新决策;关闭设置中的提示开关不会隐藏悬浮面板

回复下方的仪表按钮 · 评价分配合适、投入偏高、投入不足或无法判断,支持修改和撤销;仅对绑定已应用主决策的回复显示

设置 → 自动模型路由 · 选择服务与模型、管理独立 key、测试连接、设置模式/强度上限/等待时间;展开查看决策策略查看实际判据与模型槽

主模型不换,子任务独立选配

  • 主会话:lower / baseline / higher 相对于具体模型已验证的推荐起点,在受支持序列降低一档、保持或提高一档。缺省上限 xhigh,自动不选 max;主 provider/model 不变;通过官方 selectModel 同步选定 effort,同时保存全局默认值。同步失败会记录告警,本次请求保留官方原有 effort;MANUAL 请求原样通过,已绑定子会话不写主选择。
  • 只管理已注册家族:主模型的家族有注册策略时 AUTO 才接管;内置 claude- 与 gpt- 两个家族,id 在去掉 transport 前缀后匹配。切换到其他主模型(DeepSeek、GLM、Grok、Gemini、Kimi、Qwen 等)会自动落为 MANUAL 并锁定芯片:芯片显示描边 info 图标,悬停整个按钮说明支持范围并提供仓库的 issue/PR 链接。切回受支持模型后芯片恢复可点击且保持 MANUAL,不会自动重新启用 AUTO。新增家族属于数据变更而非引擎变更,见[自定义模型家族](#自定义模型家族)。
  • fresh 子任务:能力需求为 bounded / analytical / frontier,推理投入独立判断。Claude 能力槽为 Haiku / Sonnet / Opus 5.5;GPT 为 Luna / Sol / Sol。实际路由必须同时满足当前目录、支持的 effort 和官方子智能体允许列表。路由保留父会话精确 provider 与完整 model ID(含 transport 前缀),不回退到其它 provider。
  • 尊重显式选择:只指定模型或投入时,仅判断另一维;两者都指定则不请求 Jev,只校验路由。缺少任务目标或范围时停止委派,不猜。
  • 官方创建绑定路由:fresh subagent 和 fresh spawn_teammate 在子任务首次请求前绑定精确身份。route_subagent 只是可选预览,不代表已应用,也不能把推荐复制成用户约束;根会话为 MANUAL 时它直接返回 routed: false,不判断、不写状态。fork 和未绑定创建路径暂不支持,不静默替换。
  • 恢复保持初始路线:根会话改为 MANUAL 后停止新判断,已有绑定子实例维持原路线。applied 只证明实际请求配置匹配,不代表任务成功。Claude/GPT 普通子调用已在真实模型上验证;fresh teammate 路由及冷恢复有 mock 宿主覆盖,不等于真实模型 teammate 已验收。

选择决策服务

服务 · 接口 · 缺省模型 · 凭据引用

OpenRouter(默认,兼容已有安装) · https://openrouter.ai/api/alpha/decisions · typesafe/jev-1.13 · OPENROUTER_API_KEY

TypeSafe 官方 · https://api.typesafe.ai/v1/systemone · jev-1.13.0 · TYPESAFE_API_KEY

Concentrate · https://api.concentrate.ai/v1/systemone · jev-1.13.0 · CONCENTRATE_API_KEY

自定义 System One · 完整接口地址 · 可编辑 · AUTO_DECISION_CUSTOM_API_KEY

预置模型菜单列出文档确认的版本,不保证实时可用。自定义服务可填写自己的模型 ID,但必须兼容 state + questions → answers;只有 OpenAI chat-completions 接口并不兼容。自定义端点限 HTTPS(回环可 HTTP),禁止 URL 凭据、查询参数、片段及重定向。只配置你信任且适合使用该专用 key 的地址。TypeSafe、Concentrate 目前有协议/mock 覆盖,未在本次验证其真实凭据与地区可用性。失败不自动切换服务。

判定确定度不等于选中概率:Choice 公式为 (pmax − 1/n) / (1 − 1/n),三个候选中最高概率 70% 对应确定度 55%。面板分别显示服务返回的确定度和完整分布,保留返回的 0%,缺值标未提供。两者都不是任务成功率。

判档预设

AUTO 向 Jev 提的问题来自一个包内置、有名字、有来源的判档预设,在「设置 → 自动模型路由 → 判档预设」里选择。预设只改变 Jev 如何选 lower / baseline / higher(子任务还有 capability);effort 序列、单档偏移、上限、不自动选 max 以及子模型能力槽都不变。

预设 · depth 衡量什么 · 来源

reasoning-depth(缺省) · 推理难度;即 0.6.6 及以前的规则文件,逐字节相同 · 本项目的合成核对

effort-as-verification · 下一步需要多少验证、边界情况测试与自主判断;加一行固定的 Execution: 调用路径 · Anthropic《Spending your effort》(厂商内部数据;用于 GPT 属于未经验证的外推)

新增自己的预设。 预设是包内置的,新增一个只需在本包里做一次小改动:新建 src/presets/<id>/rubric.json(标签与现有预设一致),在 src/presets/index.ts 的 PRESETS 末尾追加元数据(标题、摘要、证据、来源、context),在 test/presets.test.ts 的锁定表追加哈希,写 docs/presets/<id>.md,然后 npm test、构建并重启。新预设会自动出现在设置页选择器和决策提示里;effort 序列、上限和模型槽不受预设影响。详细步骤见 [docs/presets](docs/presets/README.zh.md#新增一个预设)。

已发布的预设不会原地修改:新的思路会作为新的预设 id 加入,所以升级后所选预设的判断方式不变。每条反馈绑定的快照都记录作出决策的预设。详见 [docs/presets](docs/presets/README.zh.md)。降级到 0.6.6 时,preset 设置会被忽略;带 snapshot.preset 的绑定会被旧版跳过,账本不被改写,重新升级后恢复显示。

自定义模型家族

AUTO 关于一个模型家族的全部知识都是 [src/strategies/](src/strategies/index.ts) 中的数据:每个家族一个文件,加一张 BUILTIN_STRATEGIES 列表。接入 DeepSeek、Qwen、Gemini 或自研家族,就是新增一个策略文件并注册;引擎本身不认识任何家族,provider 也从不写进策略。AUTO 也没有任何网关专属代码或配置,会话当前使用哪个 provider 就在哪个 provider 上工作。

字段 · 含义与约束

id · 家族 id,全局唯一。子路由记录与反馈快照都会保存它,用量报告也按它分组,改名会让这些旧记录读不出来(fail closed)。

label · 显示在芯片锁定提示与设置页策略面板。

modelPrefixes · 与主模型 id 最后一个 / 之后的部分做大小写不敏感的前缀匹配,网关的 family/ 前缀不算家族名。不属于任何家族的主模型会把会话锁为 MANUAL。

effortStarts · 精确裸模型 id(区分大小写)→ low、medium、high 或 xhigh 推荐起点,供 lower / baseline / higher 偏移与上限计算。没有起点的模型,在该 effort 也受支持时改用目录默认 effort(面板标「目录默认」);两者都不可验证时自动 effort 不可用:主请求保持自身配置,子任务路由走退化链。

childModels · 每个能力槽一个裸模型名,bounded / analytical / frontier,不能含 /。只有位于父会话 provider 内、与父模型 transport 前缀相同、且目录中恰好匹配到一条时,槽位才生效。

createRegistry 在插件加载时一次性校验整张列表,任何冲突都会让插件加载失败、不会以部分策略运行:id 缺失或重复;不同家族的 modelPrefixes 忽略大小写后互为前缀;起点不属于四个取值;同一模型起点键出现在两个家族;缺少某个能力槽;槽位含 /

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:19,最后更新 2026-11-06

链接

GitHub · Homepage · npm

同类插件