前言¶
DSH(DeepSeek Harness)采用插件化架构,通过扩展插件可以增强工作流的能力。在构建智能体或复杂工作流时,模型请求的并发管理是一个常见痛点。过高的并发可能导致供应商返回 429 错误或触发风控封禁,而缺乏监控则难以定位瓶颈。下面介绍 dsh-concurrency-guard 插件,它通过挂钩 DSH 的模型请求总线,提供并发控制与监控能力。
插件介绍¶
dsh-concurrency-guard 是一个 DSH 并发请求监控与门闩插件。
它解决的核心问题是防止并发超限。插件会统计全部在途模型请求(包括主会话、进程内子代理、workflow 派生代理、会话标题、压缩请求等),并在并发到达上限后对后续请求进行 FIFO 排队,从而从根上避免因并发超限导致的供应商锁号或封禁。
核心功能¶
该插件主要具备以下能力:
- 请求总线挂钩:挂钩 DSH 唯一的模型请求总线
llm/stream瀑布,确保所有模型调用入口都被监控,不存在旁路。 - 全量统计:统计全部在途模型请求,并支持按来源分类(如主会话、子代理、插件、压缩、标题)。
- FIFO 门闩:采用先进先出(FIFO)策略防止并发超限。并发满员后新请求排队,并发位永不超限。
- 会话级并发控制:支持会话级并发控制,允许对特定会话设置并发上限。
- 多接口支持:提供 WebUI 实时面板、HTTP JSON 端点、落盘状态文件与工具。
- 历史与中断处理:支持历史自动清理、持久化统计、回合中断检测以及 fail-safe 机制。
安装与启用¶
DSH 的插件安装在 profile 里,每个 profile 是一个独立的 npm 项目目录。插件管理基于 pnpm,不要直接使用 npm 安装。
- 执行安装命令:
dsh plugin --profile web add dsh-concurrency-guard
(注:此命令会自动写入 dependencies 并将插件加入 `dsh.profile.bundles`)
-
首次安装后,需重启 DSH 宿主进程以使插件生效。
-
重启后,可通过以下方式验证:
- 在会话视图顶部切换到「并发监控」页签。
- 访问
GET http://127.0.0.1:3080/api/concurrency-guard/status返回 200。 - 查看宿主日志是否出现
[concurrency-guard] 已启动。
典型用法¶
插件提供多种方式进行监控与配置:
WebUI 监控¶
在 DSH 会话视图的顶部,将视图切换到「并发监控」页签,即可查看实时的并发水位与在途请求列表。
HTTP 接口¶
通过 HTTP JSON 端点进行操作:
- 查看状态:
GET http://127.0.0.1:3080/api/concurrency-guard/status
- 热改配置:
POST http://127.0.0.1:3080/api/concurrency-guard/config
Body: {"mode": "monitor", "maxConcurrency": 8}
代码调用¶
在 DSH 工作流代码中,可以通过上下文对象调用:
ctx.concurrencyGuard.configure({...})
工具调用¶
插件提供了命令行工具,可以在模型对话中直接调用:
* concurrency_status:查看当前并发状态(支持 {"full": true} 参数查看历史)。
* concurrency_session_list:列出在线会话与限额。
* concurrency_session_set:实时调整某会话上限(如 {"action": "set", "sessionId": "...", "cap": 2})。
适用场景与注意¶
- 适用场景:适用于需要严格控制供应商 API 并发配额的场景,或需要监控大量子代理与工作流派生请求的复杂架构。
- 注意:插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。