在 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 以上。