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

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

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

小夜