dsh-subagent-concurrency-limit:限制 DeepSeek Harness 子代理并发数

前言

在 DeepSeek Harness (DSH) 中,工作流引擎的 maxConcurrentAgents 和 maxTotalAgents 仅作用于工作流内的 agent() 调用。对于工作流之外根级的直接调用,或后台/可继续运行的任务,DSH 缺乏进程级的并发限制。maxParallelToolCalls 限制的是工具调度的并发池,而非活跃运行的任务数。

dsh-subagent-concurrency-limit 插件旨在填补这一空白,它限制同一进程内根级委托准入和本地子代理轮次的并发数。

插件介绍

名称: dsh-subagent-concurrency-limit
作者: blauerberg
定位: DeepSeek Harness 工作流插件
核心功能: 限制同一进程中并发运行的子代理运行和本地子代理轮次,根代理不计入限制。

核心功能

  • 进程级限制: 对同一进程中 delegationDepthOf(agent) > 0 的委托工具和本地子代理轮次进行并发控制。
  • FIFO 队列: 根代理的委托调用按先进先出 (FIFO) 顺序等待。
  • 自定义工具名: 支持通过配置 subagentToolNames 指定非标准委托工具名称。
  • Cordis Patch 集成: 使用 Cordis Patch 方式集成到 DSH。
  • 嵌套与远程支持: 适用于嵌套子代理和远程进程提供商(如 Codex)。

安装与启用

安装插件需要指定 profile(示例中使用 web)和特定的 commit hash:

dsh plugin --profile web add github:blauerberg/dsh-subagent-concurrency-limit#01182275695067510a187cb05b46df49e5fe812c

安装后,将配置添加到 profile 的 cordis patch 文件中:

- id: subagent-concurrency-limit
  name: dsh-subagent-concurrency-limit
  config:
    maxConcurrentSubagents: 2
    subagentToolNames:
      - subagent

启动 profile:

dsh --profile web

使用说明

  • 并发池: 进程内所有符合条件(委托深度 > 0)的代理共享同一个并发池。
  • FIFO 等待: 当并发池满时,根代理的委托调用进入等待队列。
  • 嵌套行为: 嵌套的子代理调用同样消耗并发池。如果池已满,子代理调用会立即失败,不会等待,从而避免阻塞正在等待的祖先代理。
  • Workflow 调用: 工作流中的 agent() 调用和恢复的本地子代理轮次在开始时会使用该并发池。
  • 资源释放: 当子代理轮次变为空闲、运行结束或代理被销毁时,许可 (permit) 被释放。

注意事项

  • 默认限制: 默认并发限制为 2。
  • 配置约束: maxConcurrentSubagents 必须是正整数;subagentToolNames 必须包含至少一个非空工具名称。
  • 根代理不计入: 根代理本身不占用并发配额。
  • 远程进程限制: 对于远程进程提供商(如 Codex, Claude Code, ACP),只能统计配置的根级委托准入,以及可观测的 subagent/start 和 subagent/end 边界。远程进程内部的嵌套执行和重启无法被统计。
  • 独立限制: maxParallelToolCalls 的限制是独立的,它限制的是工具调用,而非活跃运行的任务。

结语

该插件通过控制进程内的并发资源,帮助开发者防止子代理耗尽系统资源。开发者可以在插件目录页查看更多详情,或在 GitHub 仓库查看源码。

目录页: dsh-subagent-concurrency-limit - SkillHub
源码: github.com/blauerberg/dsh-subagent-concurrency-limit

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

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

小夜