DeepSeek Harness Hub
← 返回列表

sijie-ni-0214/dsh-subagent-error-details

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DSH 插件:告诉父 agent 为什么 后台子 agent 失败了。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/16 · 已提供中文文档

DSH 插件:当后台子代理失败时,将真实失败原因(例如 RATE_LIMIT 429)传递给父代理

综合分
30.5
GitHub 分
30.5
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add sijie-ni-0214/dsh-subagent-error-details
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence@deepseek-ai/dsh-subagent
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-subagent-error-details

DSH 插件:告诉父 agent 为什么 后台子 agent 失败了。

问题

当后台子 agent 在回合中途死亡时(例如模型 API 429 速率限制),官方结算通知内容如下:

Background subagent  failed before it finished.
Its closing message:

然后就什么都没有了。失败原因被核心 dsh-subagent 丢弃了(notifySettlement 将 stopReason 映射为一句固定的话,并拼接子 agent 最后的部分输出,而对于回合中途死亡的情况,那只是推理 + 工具调用块)。真正的错误记录在子会话的终止 turn/end 事件中——但没有任何东西把它传递给父 agent。

上游讨论:deepseek-harness#4334。

这个插件做什么

1. 作为 host-plane bundle 监听公开的 subagent/end 事件:携带作用域的事件沿作用域链向上冒泡,因此一个实例可以观察到每个父 agent 的委派,无论每个会话运行在哪个预设上。
2. 当 stopReason === "error" 时,通过 sessionPersistence.load()(优先使用实时会话存储,其次使用持久化 JSONL 日志)解析子会话的终止 turn/end 失败详情,并通过子会话头部的 parentSession 和 agent 注册表路由回所属的父 agent。
3. 向父 agent 投递一条简短的伴随消息,镜像核心的 followup/steer 拆分:

Subagent  failed with: RATE_LIMIT: 429 Rate limit exceeded for api_key ... Limit resets at ...

一旦核心自身在官方通知中包含失败文本(上游修复),收件箱监视器会检测到它并自动抑制这条伴随消息。

安装

一条命令,适用于所有 agent 预设——无需编辑组合:

dsh plugin --profile web add dsh-subagent-error-details

(该 CLI 命令是 pnpm 包装器;cd ~/.dsh/profiles/web && pnpm add dsh-subagent-error-details 是等效的)。bundle 补丁将插件挂载到 profile 组合中,该组合在启动时重建,因此重启 dsh 以激活。

新版本发布注意事项(pnpm ≥ 11):pnpm 11 启用了一项供应链默认设置,会拒绝发布时间不足 24 小时的包版本(minimumReleaseAge)。在发布后的第一天内,安装可能会失败并报 "minimumReleaseAge" 策略错误。要么等待 24 小时,要么仅对这一条命令绕过它:

dsh plugin --profile web add --config.minimumReleaseAge=0 dsh-subagent-error-details

本地开发则从检出目录安装:

cd ~/.dsh/profiles/web
pnpm add file:/path/to/dsh-subagent-error-details
restart dsh

设计保证

- 绝不破坏父循环:每条路径都被包裹;插件 bug 会降级为“无详情”,而不是报错。
- 零注入、惰性服务查找:服务在处理器内部通过 ctx.get 解析,任何缺失都会优雅降级,因此激活永远不会导致会话挂载失败。
- 防御性解析:会话 schema 漂移会优雅降级;遇到未知结构时绝不崩溃。
- 版本契约:dsh.engines.dsh: ">=0.1.1-rc.2 <0.2",其中 @deepseek-ai/cordis 是唯一的 peer 依赖(harness 包作为其类型的 dev 依赖出现;该插件零运行时依赖)。由于 dsh 是预发布版本且不承诺兼容性,请针对每个新的 dsh rc 重新验证。

已知限制

- 官方通知文本本身保持不变(由核心生成);此插件添加一条伴随消息。
- 没有会话记录的一次性进程内运行只能报告 stopReason,没有详细信息。
- 持久化读取依赖于会话检查点策略已刷新 turn/end 事件;有界重试覆盖常见窗口。

开发

pnpm install
pnpm build      # tsc
pnpm test       # node --test test/extract.test.mjs

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群