DeepSeek Harness (DSH) 的原生子代理控制面僅提供 send_message、interrupt_agent 和 list_agents,缺乏刪除或釋放子代理的接口。這導致一次性子代理和過期的可繼續子代理會在 Web UI 列表中持續堆積。dsh-plugin-subagent-delete 插件填補了這一空白,提供了基於所有權檢查的模型調用工具,以及可選的 HTTP 路由。
安裝與啓用¶
在終端中執行以下命令將插件添加到 Web 配置文件中:
dsh plugin --profile web add github:heiheiha798/dsh-plugin-subagent-delete
安裝完成後重啓配置文件,並在新的會話中啓動。該會話將獲得三個工具。
核心功能¶
list_subagents¶
列出調用會話的後代子代理。返回結果包含子代理的 ID、標籤、模式(one-shot | continuable)、狀態(running | inactive)、深度、父 ID 及是否有子節點。
// 獲取所有後代
list_subagents({})
// 僅獲取正在運行的
list_subagents({ activity: "running" })
// 僅獲取一次性子代理
list_subagents({ mode: "one-shot" })
delete_subagent¶
永久刪除子代理會話並將其從 Web UI 列表中移除。操作包括驗證目標爲調用會話的後代、停止實時代理或排空常駐的 Continuable Activation、從會話管理器中分離會話、刪除磁盤上的日誌目錄、清理數據庫記錄以及更新工作區會計信息。
// 永久刪除指定 ID 的子代理
delete_subagent({ subagent_id: "<id>" })
// 遞歸刪除(目標及其所有後代)
delete_subagent({ subagent_id: "<id>", recursive: true })
release_subagent¶
停止並釋放子代理,但保留其記錄和對話歷史。這使得子代理可以在未來通過 send_message 恢復。
// 釋放而不刪除
release_subagent({ subagent_id: "<id>" })
// 遞歸釋放
release_subagent({ subagent_id: "<id>", recursive: true })
Web UI 自動刷新¶
DSH 原生沒有針對子代理刪除的刷新路徑。該插件通過發佈一個短暫的標記會話來繞過這一限制,並利用官方的 prepare → enter → announce → detach 生命週期接口。客戶端組件監聽 sessions.list 快照,在標記會話被移除後觸發 sessions.refresh() 和 sessions.refreshSubagents(parentId),從而無需手動刷新頁面即可更新子代理計數。
HTTP 路由¶
除了模型調用工具,該插件還註冊了 HTTP 端點,便於客戶端集成和本地調試。
GET /dsh-plugin-subagent-delete/list?parentSessionId=<id>[&activity=…][&mode=…]POST /dsh-plugin-subagent-delete/delete{ "parentSessionId": "<id>", "subagentId": "<id>", "recursive": false }POST /dsh-plugin-subagent-delete/release{ "parentSessionId": "<id>", "subagentId": "<id>", "recursive": false }
權限控制與依賴¶
權限規則¶
- 所有權檢查:僅允許會話樹祖先刪除子代理。嘗試刪除非後代或未知 ID 的子代理會返回
not-your-subagent或not-found錯誤。 - 遞歸刪除限制:若未設置
recursive: true,嘗試刪除擁有後代的子代理將被拒絕。 - 運行等待:運行中的子代理在刪除前會等待 15 秒以確保完全停止。
環境依賴¶
- DeepSeek Harness: 兼容 DSH 0.1.0-rc.8
- Node.js: 需要版本
^22.19.0或>=24.0.0 - 依賴庫: 依賴
@deepseek-ai/dsh-tools,版本範圍爲>=0.1.0-rc.8 <0.2.0-0
總結¶
dsh-plugin-subagent-delete 爲 DSH 提供了完整的子代理生命週期管理能力,特別是針對清理 Web UI 中堆積的會話提供了有效的解決方案。開發者可根據上述命令和示例進行集成,確保在會話管理中保持環境整潔。