前言¶
在 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 插件页。