dsh-subagent-forge:可配置的子智能體委派

前言

在 DeepSeek Harness(DSH)裏做多步任務時,主智能體常常需要把子任務交給另一個會話處理。內置委派工具能起子 agent,但父 agent 對「子角色怎麼寫、用哪條模型路由、能否繼續委派」的控制粒度有限。若你希望每次啓動子會話時都顯式指定 system prompt、首條用戶消息、模型白名單中的一條路由、reasoning effort,以及子智能體是否還能再開 subagent,00wz/dsh-subagent-forge 針對的是這一類需求:用一對可配置工具替代內置委派,並通過設置頁維護模型 allowlist。

這是什麼

dsh-subagent-forge 是維護者 00wz 發佈的 DSH 插件(MIT 許可,當前包版本 1.2.2)。它不要求構建步驟,以純 ESM 分發,未聲明運行時或 peer 依賴。插件需要 DeepSeek Harness >=0.2.1(engines.dsh)。

定位可以概括爲:用 spawn_agent / fork_agent 取代內置的 subagent / subagent_fork 一對工具;父智能體在調用時寫入子會話的 system prompt(僅 spawn)、可選的首條 prompt、從 allowlist 中選定的 provider/model、reasoning effort,以及必填的 can_delegate(子智能體是否允許再委派)。

社區目錄頁:https://www.skillhub.cn/plugins/00wz/dsh-subagent-forge。源碼與說明:https://github.com/00wz/dsh-subagent-forge。SkillHub 爲獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係。

核心功能

兩個對稱工具

工具 Provider 子會話行爲
spawn_agent spawn 新會話,使用你提供的 system_prompt
fork_agent fork 帶入當前對話已完成的輪次;繼承 system prompt 與工具集,因此不需要 system_prompt

共享參數(含義以 README 爲準):

參數 含義
description 短標籤,必填
prompt 首條用戶消息 / 任務;省略時使用 emptyPrompt
system_prompt 僅 spawn_agent:子會話的持久角色與規則
model provider/model,須爲 allowlist 中的恰好一條路由;allowlist 及描述會渲染進工具說明供模型閱讀。省略則繼承父路由
reasoning_effort 該模型 advertised 的 reasoning effort(effort 爲別名)
can_delegate 必填:子智能體是否可再啓動 subagent
cwd 子會話初始工作目錄

遞歸與委派門控

插件沒有固定的委派深度計數。每一層由父智能體在每次調用裏通過 can_delegate 決定子智能體能否繼續委派;未獲授權的子智能體也會失去 workflow(因其可間接啓動 agent)。在運行時允許的情況下,插件會對無授權子智能體隱藏委派類工具;否則拒絕調用。

屏蔽內置委派

內置委派被阻止兩種方式並用:

  1. tools.guard 在所有 scope 拒絕執行 subagent / subagent_fork(包括在本插件加載前已解析工具列表的步驟)。
  2. tools.restrict 從各 agent 工具列表中隱藏上述工具,避免模型看到無法使用的項。

相關列表可通過配置項 blockedTools、blockBuiltinDelegation 調整。

設置頁與模型 allowlist

設置入口:Settings → Built-in plugins → Subagent forge(Plugins 設置區中的一個標籤頁)。頁面用於編輯模型 allowlist:每行一條路由,以及 agent 選型時閱讀的 description。

首次啓動時,allowlist 由當前 profile 已配置的 providers 種子生成,保證新安裝即可選模型且不會提供本機不存在的路由。該快照會持久化:可在頁面編輯;點 Add models from my providers 重新讀取線上目錄;或刪除 $DSH_HOME/subagent-forge/config.json 以便下次啓動重新種子。空行會被丟棄;重複路由保留首行。

校驗通過後立即作用於 live tool,並寫入 $DSH_HOME/subagent-forge/config.json;下次啓動時該文件優先於 bundle patch。已保存文件恒生效——包括空列表:此時工具只能繼承父路由。數據路徑概要:

page → POST /subagent-forge/config(僅 loopback)
     → reconfigure(value):sanitize → 寫文件 → 重新註冊 tool
page → GET /subagent-forge/catalog
     → discoverModels(ctx):llm.listProviders → llm.listModels

路由由插件通過可選 webServer 服務自行註冊;無 UI 的 headless profile 仍保留工具,但沒有設置頁。

子會話規格持久化

每個子智能體的 spec 以 JSON 保存在 $DSH_HOME/subagent-forge/children/<sessionId>.json,子會話恢復時會重新應用(插件在 agent/created 上重新註冊 persona 段與限制,恢復時也會觸發)。丟失該目錄不會立刻打斷正在運行的子會話,但後續恢復會丟失自定義 persona。

安裝與啓用

依賴 DSH >=0.2.1。README 給出的安裝方式如下。

從 GitHub 倉庫安裝(將 <owner> 換爲實際所有者,例如 00wz):

dsh plugin --profile <profile> add "github:<owner>/dsh-subagent-forge"

從本地檢出安裝:

dsh plugin --profile <profile> add /absolute/path/to/dsh-subagent-forge

安裝後瀏覽器需重新加載一次以加載客戶端一半;設置頁在安裝後也可能需要刷新一次。修改已安裝包代碼後需重啓應用。插件在註冊 webServer 的 profile 上提供設置 UI;僅以 headless 使用時仍可調用 spawn_agent / fork_agent。

安裝前建議自行審閱倉庫源碼與 MIT 許可證;插件與當前 DSH 進程同權限運行。

典型用法思路

README 未給出完整對話示例,但調用形態由工具參數固定。可按下列順序理解一次 spawn_agent 委派:

  1. 在設置頁確認 allowlist 中各 provider/model 的 description,便於主智能體在工具說明裏選型。
  2. 主智能體調用 spawn_agent,填寫 description、system_prompt、prompt(可選)、model(可選,省略則繼承父路由)、reasoning_effort(可選)、can_delegate,以及需要時的 cwd。
  3. 若要從當前對話分叉而非空白 spawn,改用 fork_agent:不傳 system_prompt,其餘共享參數同樣適用。

需要與 provider 配置同步 allowlist 時,在設置頁使用 Add models from my providers,或刪除 $DSH_HOME/subagent-forge/config.json 後重啓以重新種子。

適用場景與限制

適合:需要在每次委派時自定義子角色 system prompt、限定可選模型路由、控制 reasoning effort,並顯式關閉或開啓「子智能體再委派」的團隊式 Harness 工作流。

已知限制(來自 README):

  • 子智能體的工具組成繼承自父智能體;僅 persona 與委派授權按子會話覆蓋。
  • 持有委派授權的 agent 不會被屏蔽 workflow。
  • 種子 allowlist 是註冊 moment 的快照;變更 provider 配置後需重新發現或刪除 config.json。
  • 修改安裝包代碼需重啓應用;安裝後瀏覽器與設置頁各可能需要一次 reload/refresh。

倉庫內自檢命令(發佈包不含 test/、scripts/):

npm run check   # 對已發佈文本文件的 encoding 檢查
npm test        # 插件行爲測試

結尾

dsh-subagent-forge 把 DSH 子智能體委派收斂到一對參數齊全的工具,並用設置頁維護模型 allowlist,同時用 guard 與 restrict 阻斷內置委派,避免混用兩套 API。若你在 SkillHub 或 GitHub 看到更新,以倉庫 README 與 package.json 中的 engines.dsh、版本號爲準。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜