dsh-agent-delegate:在 DSH 子代理之上加委派边界

前言

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 配置为准。

  1. 在主会话中通过 subagent 派 child,并按需指定角色(如 research / reviewer),使 child 策略在 parent 与角色预设的交集中生效。
  2. 对需要改文件的 child,由插件在独立 worktree 中执行写入;主会话继续在项目根操作,减少并行写冲突。
  3. child 结束后到 ~/.dsh/agent-delegate/handoffs/ 查看对应 patch 与 pending 状态。
  4. 父任务审阅 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 目录条目。

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

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

小夜