前言¶
在 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 並傳入自包含的任務說明後:
- 子代理正常完成:工具返回子代理的最終文本,主 agent 在同一回合繼續後續步驟。
- 等待超時:返回「還在跑」,不取消子代理。子代理繼續執行;完成後通過一條跟進消息寫回主 agent,並自動開啓新一輪。結果不會憑空丟失,也不鼓勵對同一事項重複委派。
- 用戶中斷本輪:工具調用被取消,子代理被停止,避免留下無人接收的結果。
參數¶
| 參數 | 必填 | 含義 |
|---|---|---|
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 建議用一條小任務驗證:
- 任務能在超時內完成 → 同一回合拿到最終文本。
- 故意拉長執行 → 先得到「還在跑」,子代理未被取消。
- 子代理完成後 → 主會話收到跟進消息中的結果。
調用時把複審或分析寫成自包含的 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 插件頁。