前言¶
在 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)。在運行時允許的情況下,插件會對無授權子智能體隱藏委派類工具;否則拒絕調用。
屏蔽內置委派¶
內置委派被阻止兩種方式並用:
tools.guard在所有 scope 拒絕執行subagent/subagent_fork(包括在本插件加載前已解析工具列表的步驟)。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 委派:
- 在設置頁確認 allowlist 中各
provider/model的description,便於主智能體在工具說明裏選型。 - 主智能體調用
spawn_agent,填寫description、system_prompt、prompt(可選)、model(可選,省略則繼承父路由)、reasoning_effort(可選)、can_delegate,以及需要時的cwd。 - 若要從當前對話分叉而非空白 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、版本號爲準。