在 DeepSeek Harness (DSH) 中,当后台子智能体中途失败时(例如遭遇模型 API 429 速率限制),核心生成的通知通常会丢弃具体原因。它仅显示通用的失败描述,随后是空白内容。真正的错误被记录在子智能体会话的终端 turn/end 事件中,但未被传递给父智能体。此插件监听该事件,通过会话存储读取详情,并将具体的失败原因路由回父智能体。
插件定位¶
- 名称:dsh-subagent-error-details
- 类型:DSH 插件
- 维护者:sijie-ni-0214
- 核心价值:当后台子智能体失败时,将具体的失败原因(如
RATE_LIMIT 429)传递给父智能体,而非仅显示通用通知。
核心功能¶
- 监听事件:监听公开的
subagent/end事件。 - 解析详情:在
stopReason === "error"时,通过sessionPersistence.load()解析子智能体会话的终端turn/end失败详情。 - 路由回传:利用子智能体会话头的
parentSession和代理注册表,将真实错误详情路由回拥有该子智能体的父智能体。 - 附加消息:向父智能体发送附带消息,展示具体错误信息(例如
RATE_LIMIT: 429 Rate limit exceeded)。
安装与启用¶
插件通过包管理器安装,挂载到 DSH 配置中。安装后需重启 DSH 生效。
官方安装命令(适用于所有智能体预设):
dsh plugin --profile web add dsh-subagent-error-details
本地开发安装(从本地路径):
cd ~/.dsh/profiles/web
pnpm add file:/path/to/dsh-subagent-error-details
典型用法与输出¶
安装并重启 DSH 后,当后台子智能体因速率限制失败时,父智能体将收到包含具体原因的附带消息:
Subagent <id> failed with: RATE_LIMIT: 429 Rate limit exceeded for api_key ... Limit resets at ...
适用场景与注意¶
- 版本依赖:需要
dsh.engines.dsh: >=0.1.1-rc.2 <0.2。 - 数据读取:持久化读取依赖于会话检查点策略已刷新
turn/end事件。 - 通知文本:官方通知文本由核心生成,保持不变;此插件仅添加附带消息。
- 一次性运行:无会话记录的一次性进程内运行,仅能报告
stopReason,无法获取详情。 - 依赖:插件具有零运行时依赖,仅作为开发依赖引入类型定义。
总结¶
该插件解决了 DSH 中后台子智能体失败信息丢失的问题,通过监听事件链并读取会话持久化存储,将真实的错误原因反馈给父智能体。目前依赖上游 DSH 版本 0.1.1-rc.2 以上。