前言¶
在 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