前言¶
DeepSeek Harness(DSH)通过 ctx.subagents 可以派生子代理做并行或分工任务。子代理一多,容易出现委派链过深、角色权限过宽、多个写入型 child 同时改同一工作区,以及子任务结果难以按代次回收等问题。社区插件 dsh-agent-delegate(GitHub:xingyingyuzhui/dsh-agent-delegate)定位为治理套件 Phase 3 的委派 Broker:在官方子代理能力上加一层策略与隔离,不提供控制面 UI。卸掉插件后会回落到 DSH 原有子代理行为(以及仍安装的 dsh-agent-gate 等)。
这是什么¶
dsh-agent-delegate 由维护者 xingyingyuzhui 发布,MIT 许可证,当前 package 版本 0.2.10,要求 Node >= 20。一句话:在 Harness 里按真实父链计数委派深度、按角色收窄 child 策略、限制并行 child 数量,并为写入型 child 分配独立 Git worktree,父任务通过 handoff 验收后再合入 patch。
SkillHub 等社区目录可能以不同 slug 展示同一插件;安装与行为以 GitHub README 与仓库源码为准。
核心功能¶
委派深度与拒绝策略¶
插件按父链真实计数委派深度。超过配置项 policy.delegation.maxDepth 的 subagent 调用会被直接拒绝,避免无限套娃委派。
角色与策略交集¶
可点名角色:通过 role、[research] 标签或 role: reviewer 等提示词。child 的有效策略为 parent ∩ 角色预设;不在 delegation.roles 里的角色直接拒绝。README 说明 developer 默认只能派 research / reviewer。
并发与 handoff 体积¶
默认最多 4 个未结束的 child / 并行写入任务;超出 delegation.maxChildren 会拒绝。handoff 默认截断到 64KiB。
按 task + generation 收结果¶
Parent 按 task + generation 收集子代理结果。同一任务更新一代之后,旧 child 的 report / 返回值作废,避免混用过期结论。
child 策略与 sandbox¶
child 策略 = parent ∩ child(更严的一侧生效)。写入型 child 若具备 files.write: all,会收到 workspace 上下文。
对 research / reviewer / public(或 sandbox.requireEnforcement: full),当 sandbox 报告 partial 时会拒绝文件动作,不降级放行。
写入型 child 与 Git worktree¶
仅写入型 child 与后台写入任务会分配独立 Git worktree;主会话和前台 bash 仍写项目根。
创建 worktree 时,会把父工作区未提交改动和非忽略的未跟踪文件拷进 worktree。child 结束前,会把 child 相对种子提交的 diff 写到:
~/.dsh/agent-delegate/handoffs/<id>.patch
状态为 pending。不会自动 merge。
父任务验收后调用 delegate_handoff,支持 accept / reject / list:
accept:对父仓执行git apply(必要时--3way)- 合并不上则标
conflicted,父工作树保持原样
安装与启用¶
Web 配置档下,官方安装命令如下:
dsh plugin --profile web add github:xingyingyuzhui/dsh-agent-delegate
README 建议同时安装 dsh-session-permissions 与 dsh-agent-gate。装完后重启 dsh web。
本地开发可链接本地目录(路径换成你的绝对路径):
dsh plugin --profile web add link:/abs/path/to/dsh-agent-delegate
卸载:
dsh plugin --profile web remove dsh-agent-delegate
典型用法(工作流层面)¶
下面介绍与 README 一致的使用思路,具体提示词与策略字段以你当前的 DSH 配置为准。
- 在主会话中通过
subagent派 child,并按需指定角色(如 research / reviewer),使 child 策略在 parent 与角色预设的交集中生效。 - 对需要改文件的 child,由插件在独立 worktree 中执行写入;主会话继续在项目根操作,减少并行写冲突。
- child 结束后到
~/.dsh/agent-delegate/handoffs/查看对应 patch 与pending状态。 - 父任务审阅 diff 后调用
delegate_handoff:list查看待处理项,accept合入或reject丢弃;若 apply 冲突,按conflicted状态在父仓手动处理。
经过上面的步骤,委派深度、角色和并行写入由 Broker 拦截,合入由你显式验收,而不是子代理结束后自动改主树。
适用场景与注意¶
适合谁:已经在 DSH Web 或多子代理工作流里跑开发 / 调研 / 审查分工,需要深度上限、角色衰减、写入隔离和 patch 式合入的团队或个人。
务必注意:
- 插件以当前 dsh 进程权限运行;安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认策略字段与 handoff 路径符合你的安全预期。
- 社区目录(如 SkillHub 插件页)与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,版本与命令以 README 为准。
- 卸掉本插件后不再创建 worktree、不再做深度/衰减类拦截,行为回到 DSH 默认子代理(及仍安装的其他治理插件)。
结尾¶
dsh-agent-delegate 在 ctx.subagents 之上补了委派深度、角色、并发预算与写入 worktree,并把合入变成父任务可控的 handoff 流程。若要安装或查变更,见 GitHub:xingyingyuzhui/dsh-agent-delegate;社区索引可参考 SkillHub 目录条目。