DeepSeek Harness 插件:dsh-plugin-subagent-delete

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 中堆积的会话提供了有效的解决方案。开发者可根据上述命令和示例进行集成,确保在会话管理中保持环境整洁。

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

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

小夜