前言¶
在 DeepSeek Harness(DSH)裏,「角色」由原生預設機制管理:提示詞、工具模板、穩定 ID 等都在一套流程裏維護。另一方面,「某個角色能不能被父代理派出去、能用哪些模型、思考強度怎麼限」往往落在另一處設置裏。改一個角色的職責,還要單獨改派遣策略,需要在多個界面來回切;頁面側若只做隱藏,越權寫入仍可能打到服務端。
下面介紹社區插件 DSH-Preset-Dispatch(倉庫 BigRagdollCat/DSH-Preset-Dispatch,維護者 BigRagdollCat)。它把角色預設編輯與子代理派遣授權合併到設置裏的「Agent 管理」分區:一個彈窗、一次保存,並在 Host 側做所有權與授權邊界約束。SkillHub 目錄頁:DSH-Preset-Dispatch(社區站點,與 DeepSeek / 幻方無官方從屬關係)。
這是什麼¶
DSH-Preset-Dispatch(npm 包名 @local/dsh-preset-dispatch,當前版本 0.6.0)是 DSH 的 Web 客戶端插件:在設置中提供原生風格卡片網格,區分「本插件管理」與「其他預設(只讀)」;點開卡片後,上半是預設(名稱、穩定 ID、職責說明、角色提示詞、工具權限模板等),下半是子代理派遣策略,保存走統一協議並在服務端校驗。
主代理通過工具面 preset_list、preset_dispatch 查看可派遣目錄並創建子代理;派遣過程有主對話卡片、子會話配置徽標,以及可選的調用記錄與持久化元數據(最近 50 條)。
它相對原生做法改了什麼¶
| 原本 | 本插件 |
|---|---|
| 角色與派遣設置分散 | 一個彈窗、一次保存 |
| 前端隱藏難以防越權 | 僅受管預設可寫,其他預設服務端只讀 |
| 保存失敗缺少反饋 | 分項結果:已落盤 / 待重試逐項可見 |
| 撤權後已發起的子代理仍可能啓動 | 創建子代理前再次複覈授權 |
| 派遣歷史易隨重啓丟失 | 存儲域 preset_dispatch_history v1,中斷記錄標爲 interrupted |
| 模型目錄頻繁讀提供方 | 目錄可緩存;授權決策不走緩存 |
核心功能¶
預設(角色)管理¶
- 設置 →「Agent 管理」:支持按名稱 / ID / 說明搜索;
↑/↓寫入原生預設order,與 DSH 原生預設列表順序一致。 - 生命週期:新建、複製(獨立 ID 與策略)、刪除(二次確認;默認預設與仍有活躍會話的會被拒;刪除前先停用派遣)。
- 受管預設通過原生
agent-managed-presets組聲明,仍出現在 DSH 原生 Agent 預設列表;內容哈希與版本遞增:新會話用新版本,已綁定會話保留舊版本。
派遣授權與模型策略¶
每預設可配置:
- 「允許作爲子代理派遣」開關。
- 模型範圍:跟隨 Host 授權池 或 僅允許所選模型;未在 DSH 全局授權池中的模型會標註「需授權」,勾選擴權需確認「同時啓用 DSH 全局模型授權」。
- 默認模型(或繼承父代理)、默認思考強度、允許思考強度列表、是否鎖定默認模型。
- 全局項還包括 DSH 子代理模型授權池、最大派遣深度等。
授權分三層且取交集:目錄可見性、全局授權池(subagent-model-selection-settings)、預設允許列表;每次真正創建子代理前都會再複覈一次。
保存、派遣與可見性¶
- 寫入統一端點:所有權、修訂號 CAS、授權池預校驗後,按「授權池 → 定義 → 策略」順序落盤;支持
operationId冪等與草稿保護。 preset_dispatch支持reasoning_effort、run_in_background、可選catalogId與可選selection(主代理自報低 / 中 / 高複雜度與 1–160 字理由,不參與授權)。- 主對話卡片、子會話左下角 / 輸入區徽標區分計劃配置與子會話已提交的實際請求;運行結果寫入
tool/result.meta的運行信封字段。 - 查詢壓縮
compressUsedQueries在 profileconfig中可配,默認關閉;README 明確尚未在真實桌面端驗證 Token / 費用節省,本文不宣稱已降本。
自帶七個受管角色¶
插件預置七個可編輯角色(具體可用模型取決於你實例的提供方與授權池,下表爲 README 中的默認派遣示意):
| 預設 ID | 名稱 | 工具模板 | 默認派遣 |
|---|---|---|---|
planner |
規劃架構 | 只讀 | 6.1 Sol · high |
researcher |
研究檢索 | 研究檢索 | DeepSeek V4.1 Flash · high |
investigator |
根因調查 | 只讀 | 6.1 Sol · high |
reviewer |
代碼審查 | 只讀 | 6.1 Sol · medium |
implementer |
實現開發 | 實現開發 | DeepSeek V4.1 Flash · high |
test-author |
測試編寫 | 測試編寫 | 6.1 Sol · high |
verifier |
測試驗證 | 測試驗證 | DeepSeek V4.1 Flash · high |
安裝與啓用¶
前提:DeepSeek Harness 運行時 0.2.0-rc.2(package.json 聲明 peer:@deepseek-ai/dsh >=0.2.0-rc.1 <0.3.0-0)。若安裝被兼容性閘門拒絕(incompatible-version),可按需執行 dsh plugin allow-version(README 說明:僅當你接受與聲明 peer 不一致的風險時使用)。
從 GitHub 倉庫 取得插件目錄後,在本地指向該目錄執行:
dsh plugin --profile web add ./DSH-Preset-Dispatch
安裝完成後重啓 dsh web。Host 側模塊只在進程重啓時重新加載;僅刷新頁面不會加載新的 Host 代碼。客戶端改動刷新頁面即可。
安裝成功後,打開 DSH 設置應能看到「Agent 管理」分區。
快速上手¶
- 打開頁面:DSH 設置 →「Agent 管理」。
- 編輯角色:點卡片 → 在同一彈窗內設置角色信息與派遣策略 → 保存。打開「允許作爲子代理派遣」後,父代理纔可通過
preset_dispatch調用該預設。 - 模型範圍:選「指定模型」時,需按界面要求處理全局模型授權,避免在頁面上繞過 DSH 全局池。
- 調整順序:卡片
↑/↓直接寫入原生order。 - 調用記錄:頁面頂部「調用記錄」查看最近 50 條派遣元數據(角色、模型、強度、狀態、可選
selection與tokenUsage等),可刷新。
父代理側典型流程:先 preset_list 獲取精簡目錄(需要診斷時可帶 diagnostic: true),再 preset_dispatch 按預設 ID 創建子代理;省略模型時使用預設默認,無默認才繼承父模型。
配置與數據落點(節選)¶
profile patch 中本插件 config 可包含(README / 數據與隱私表):allowedPresets、allowModelSelection、compressUsedQueries,以及 maxDepth、presetPolicies 的初始值。設置命名空間 local-preset-dispatch 存最大派遣深度與各預設派遣策略。派遣歷史在存儲域 preset_dispatch_history v1;存儲不可用時退回內存並上報原因。
適用場景與注意¶
適合:需要在 DSH 里長期維護多角色 Agent 預設,並希望派遣策略、模型範圍、深度限制與原生預設 order 保持一致;希望服務端拒絕對非受管預設的寫入,並在撤權後阻止新子代理啓動的團隊或個人。
務必注意:
- 插件 Host 路由與保存邏輯以當前 DSH 進程權限運行;安裝前應閱讀源碼與 LICENSE,確認符合你的安全與合規要求。
- HTTP API 要求已認證操作者;授權不依賴「藏在界面後面」。
- README 記錄當前 376 項自動測試中 373 通過、3 跳過(與桌面
app.asar內宿主包解析相關);部分真實桌面端與 Flash / Codex 鏈路仍標爲尚未驗證。 - 調用記錄與
selection.reason會落盤爲自由文本元數據;調用方不應寫入密鑰、任務原文或推理過程。
結尾¶
DSH-Preset-Dispatch 把分散的角色編輯與子代理派遣授權收到「Agent 管理」一處,用服務端所有權與三層授權交集約束派遣邊界,並補齊保存分項反饋、啓動前複覈與派遣元數據持久化。若你在 SkillHub 或 GitHub 看到版本 0.6.0,可按上文命令安裝並重啓 dsh web 後從設置頁開始調整七個內置角色或自建預設。
- 目錄頁:https://www.skillhub.cn/plugins/BigRagdollCat/DSH-Preset-Dispatch
- 倉庫:https://github.com/BigRagdollCat/DSH-Preset-Dispatch