前言¶
在 DeepSeek Harness(DSH)里跑智能体,主模型往往既要写代码,又要在每一轮里判断「这类活该不该交给子代理、交给哪条模型路由」。后者本身也要消耗 token,而重命名、格式化、查资料、修小 bug 等任务,用更便宜的子模型往往就够。社区插件 dsh-jev-subagent-dispatch(维护者 vitas,SkillHub 分类:模型推理)走另一条路:用 TypeSafe 的 Jev 决策模型在几十毫秒内回答若干结构化问题,再按你配置的路由策略给出 dispatch recommendation(建议哪条 subagent 模型接这一棒)。主模型仍通过 DSH 原生的 subagent 工具完成交接;插件本身不实现委派机制,注入的是建议而非强制。
这是什么¶
dsh-jev-subagent-dispatch 是面向 DeepSeek Harness 的 Jev 引导子代理路由插件。Jev 不是聊天 LLM,也不写代码;它对 choice / score / noul 等 typed 问题并行作答,并返回概率与 confidence。插件把当前轮任务摘要发给 Jev,套用 profiles 里的策略,在消息里追加路由建议。当前 npm 包版本为 0.8.0,许可证 MIT,要求 Node ≥ 22。
核心功能¶
分工与前提¶
插件 不负责 提供子代理能力。DSH 需要子代理服务、背后的 child provider,以及 agent 可见的委派工具(如 subagent / subagent_fork)三件套;委派深度为 0 时委派被完全关闭。每次路由请求都会在运行时重新检查上述能力,不依赖安装时的快照。
Subagent 插件需要处于启用状态,否则仍可能得到分类结论,但没有可执行的委派目标。设置卡片会读取 Subagent 相关命名空间并在缺失时警告。
路由里写的模型必须在会话 allowlist 允许范围内;否则分类仍可能「看起来正常」,实际无法派发。设置页为每个 role 提供下拉框,选项仅限 allowlist 中的模型。
任务类别与默认路由(auto profile)¶
| Jev 任务类 | 角色 | 内置示例路由 | auto 是否委派 |
|---|---|---|---|
mechanical |
junior |
openrouter/qwen3.8-flash |
是 |
bugfix |
implementer |
openrouter/deepseek-v4-flash |
是 |
research |
researcher |
openrouter/qwen3.8-flash |
是 |
review |
reviewer |
openrouter/qwen3.8-flash |
是 |
refactor、feature_work、meta_chat |
— | — | 否(未出现在 profiles.*.delegate.taskClass) |
更严格的 careful profile 默认只委派 mechanical。routeFor 把 task class 映射到 role,routes 把 role 映射到 { provider, model };内置路由均为占位,应在卡片里改成你环境中真实可用的模型。
运行模式¶
默认 mode: off,不注册监听、不产生调用。三种模式:
| 模式 | 行为 |
|---|---|
off |
无 pre-step 监听,零 Jev 成本 |
once |
仅带触发前缀的轮次调用 Jev |
auto |
每条普通用户消息都可能分类(适合在 verdict 日志证明有效后再开) |
触发前缀可通过 triggers 配置,默认 ["/route", "/jev"]。示例:
/route fix the failing tests → 一次 Jev 调用 + 路由建议
/jev should I delegate this? → 向 rubric 的自由形式决策请求
/route preview rename everything → 仅评估、不据此委派(preview)
建议 不是强制执行:主模型可以忽略。README 建议先用 Measuring impact 衡量再日常依赖。
能力检查与失败行为¶
能力检查失败时:显式 /route 请求会注入诊断且 不调用 Jev;普通 auto 轮次 完全静默。Jev 调用失败时:/route 注入一行诊断;普通轮次同样静默。会话或插件变更在 下一次请求 生效,无启动缓存。
隐私与观测¶
发往 TypeSafe 的 state 在出机前脱敏:主要是用户轮次文本与截断的 workspace: 行(默认整包上限 stateChars 1200),不含 diff、工具输出或文件全文。内置模式会替换 sk-…、ghp_… 等凭证形字符串;logDir 与 logTurnText 控制是否落盘及是否记录轮次原文。
安装与启用¶
在 web profile 下添加插件(命令来自官方 README):
dsh plugin --profile web add /path/to/dsh-jev-subagent-dispatch # local checkout
# or, once published:
dsh plugin --profile web add dsh-jev-subagent-dispatch
说明:host 侧通过运行中 DSH 解析可选 peer @deepseek-ai/dsh-llm;link: 开发目录无自有 node_modules 时行为与已安装副本一致。
接着按 provider 预设准备 API Key(每次调用前解析:凭证存储优先,其次进程环境变量):
provider |
Jev 端点(预设) | 固定 model | Key 环境变量名 |
|---|---|---|---|
typesafe(默认) |
https://api.typesafe.ai/v1/systemone |
jev-1.13.0 |
TYPESAFE_API_KEY |
openrouter |
https://openrouter.ai/api/v1/systemone |
jev-1.13 |
OPENROUTER_API_KEY |
bai |
https://api.b.ai/v1/decisions |
jev-1.13.0 |
OPENROUTER_API_KEY |
Models 页若已存同名凭证,通常无需再设环境变量;若用环境变量,需对运行 dsh web 的进程可见。once 模式下,在未发送 trigger 前不会向 Jev 发送数据。
无 Key 时可设 mock: true 做接线测试:按关键词返回固定 confidence 的 mock 分类,便于查看注入与阈值,但不应用于真实路由。
典型用法¶
- 启用 Subagent 插件与子代理 provider,确认 agent 可见
subagent(或你在delegationTools中声明的自定义工具名)。 - 安装本插件,在 Plugins 设置页或插件 Configure 表单中把
mode设为once或auto,按 allowlist 为各 role 选模型。 - 在
once模式下先试用:
/route fix the failing tests
- 需要只看分类、不自动委派时:
/route preview rename everything
- 开启
logDir后,每条 verdict 追加一行 NDJSON,便于对照latencyMs、usage与主模型节省的 token 再调confidenceMin与 profile 谓词。
常用配置项(默认值见 README 表格):activeProfile(auto / careful)、timeoutMs(默认 4000)、skipSubagentSessions(默认 true,仅主 agent 轮次路由)。
适用场景与注意¶
适合:已在 DSH 中组合 Subagent 与子模型 allowlist,希望把 mechanical / bugfix / research / review 等可识别任务导向更便宜模型,并愿意用 verdict 日志迭代策略的开发者。
注意:
- 插件以 当前 DSH 进程权限 运行;安装前请阅读 GitHub 源码 与 MIT 许可证,自行评估向 TypeSafe / OpenRouter / B.AI 发送的任务摘要是否符合合规要求;敏感仓库可设
enabled: false或保持mode: off。 - 纯 ESM,运行时无 npm 依赖;开发测试针对 DSH
0.1.5、0.1.7、0.2.0(web profile)。设置 UI 在 0.1.7+ 可在包页内联渲染,0.1.5 使用 Plugins 设置 tab。 - SkillHub(https://www.skillhub.cn)是社区插件目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是其中一条可选路由层。
结尾¶
dsh-jev-subagent-dispatch 用 Jev 替主模型完成「谁来做、用哪条子模型」的轻量决策,把昂贵 token 留给 refactor、feature 等未委派类别;前提是 Subagent 栈已就绪,且你通过日志验证建议质量。进一步了解与 issue 反馈:
- SkillHub 目录页:https://www.skillhub.cn/plugins/vitas/dsh-jev-subagent-dispatch
- GitHub:https://github.com/vitas/dsh-jev-subagent-dispatch