dsh-plugin-sync-delegate:在 DSH 裏同步委派並等待子代理結果

前言

在 DeepSeek Harness(DSH)裏,主 agent 常把複審、專項分析交給子代理。內置的 subagent 工具只登記任務並立即返回;要拿到結果,往往得結束本輪、等完成通知。若交付門禁要求「複審完成纔算交付」,模型在單輪內沒有可阻塞等待的手段,只能反覆查 list_agents。該列表不帶耗時,模型容易按感覺估時間——例如把約 2 分鐘當成 20 分鐘,進而打斷仍在執行的子代理。

下面介紹社區插件 dsh-plugin-sync-delegate(維護者 tf961656585,分類:工作流):爲 agent 增加 delegate_sync,實現「派活並在本回合內等結果」,超時也不取消子代理,結果通過跟進消息送回。

這是什麼

dsh-plugin-sync-delegate 是 DSH 的工作流類插件,在工具列表中提供 delegate_sync。一句話:同步委派——委派一項任務、等待答案,避免因內置超時或誤判耗時而丟掉慢子代理的結果。

插件無側欄入口,僅擴展工具契約;協作原則(例如門禁場景應使用同步委派、不得憑自估耗時打斷)寫在 master-subagent skill 中,README 明確插件不重複承載這些內容。

當前 package.json 版本爲 0.1.0,協議 MIT。

核心功能

delegate_sync 的三種結局

模型調用 delegate_sync 並傳入自包含的任務說明後:

  1. 子代理正常完成:工具返回子代理的最終文本,主 agent 在同一回合繼續後續步驟。
  2. 等待超時:返回「還在跑」,不取消子代理。子代理繼續執行;完成後通過一條跟進消息寫回主 agent,並自動開啓新一輪。結果不會憑空丟失,也不鼓勵對同一事項重複委派。
  3. 用戶中斷本輪:工具調用被取消,子代理被停止,避免留下無人接收的結果。

參數

參數 必填 含義
prompt 是 完整、自包含的任務說明。子代理看不到當前對話。
label 否 列表裏顯示的短標籤,默認取任務第一行。
timeout_ms 否 等待上限,默認 180000(3 分鐘),範圍 5000–600000。

實現要點(便於理解邊界)

  • 使用 ctx.subagents.startActivation({ delivery: 'caller' }),面向「調用方等待結果」的工作流,不與內置父級完成通知重複。
  • 子代理繼承父級模型設置、當前目錄與委派深度上限;不提供額外模型或 preset 選擇。
  • 超時後通過 followup 將結果寫回父會話;父級空閒直接喚醒,繁忙則排隊到下一輪。超時後子代理仍會 dispose,不常駐佔用名額。

安裝與啓用

需要已安裝 DSH。在 DSH 的插件安裝界面填寫倉庫地址:

github:tf961656585/dsh-plugin-sync-delegate

也可填寫該倉庫在本機的絕對路徑。安裝完成後重啓 DSH,在工具列表中應出現 delegate_sync。

可選全局配置:在 cordis.patch.yml 對應插件條目的 config 中調整默認值,例如:

- insert:
    - id: sync-delegate
      name: dsh-plugin-sync-delegate
      config:
        timeoutMs: 180000
        maxTimeoutMs: 600000
        maxOutputChars: 20000
        toolName: delegate_sync
        provider: spawn

不寫則使用上述默認項。

插件在本機 DSH 進程內以當前進程權限運行;安裝前建議閱讀倉庫源碼與 MIT 許可證,確認是否符合你的環境策略。

典型用法

驗證是否加載

安裝重啓後,可用 cordis_inspect_query 的 Tool.listTools 確認列表中出現 delegate_sync。

實測三種路徑

README 建議用一條小任務驗證:

  1. 任務能在超時內完成 → 同一回合拿到最終文本。
  2. 故意拉長執行 → 先得到「還在跑」,子代理未被取消。
  3. 子代理完成後 → 主會話收到跟進消息中的結果。

調用時把複審或分析寫成自包含的 prompt(子代理無當前對話上下文),必要時用 label 便於在 agent 列表中區分任務。

適用場景與注意

適合:交付或門禁要求「必須拿到子代理結論再繼續」的流程;需要在本輪阻塞等待、又不能讓慢任務被誤殺的場景。

邊界與限制(均來自 README):

  • 僅提供工具契約;流程紀律依賴 skill,不由本插件單獨約束。
  • 默認僅支持進程內 spawn 後端(可通過 provider 修改,但外部後端是否支持 delivery: caller 未驗證)。
  • 不支持爲子代理指定模型或 preset。
  • 應用重啓會丟失「超時後待送達」的那次結果(activation 不跨進程);子代理會話仍在,可用 send_message 續跑。
  • 阻塞期間該輪次不結束,這是同步語義;因此默認等待 3 分鐘、上限 10 分鐘。

DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-plugin-sync-delegate 用 delegate_sync 補上「派活並等結果」這一環,緩解內置異步委派與無耗時列表帶來的誤判打斷問題。倉庫與說明見 GitHub,目錄入口見 SkillHub 插件頁。

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

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

小夜