v1.5.0 会话级并发控制 + 工具渲染契约修复
DSH(DeepSeek Harness)并发请求监控与门闩插件。挂钩 DSH 唯一的模型请求总线 llm/stream,统计全部在途模型请求(主会话/子代理/插件/压缩/标题),并发到达上限后 FIFO 排队,从根上防止并发超限被供应商/中继锁号(429 / 风控封禁)。已发布 npm:npm i dsh-concurrency-guard。
v1.5.0 新特性:会话级并发控制
- 给在线活跃会话实时设置并发数:面板「会话并发」页签 /
POST /api/concurrency-guard/sessions/ctx.concurrencyGuard.setSessionLimit()/ 工具concurrency_session_set四通道热改,无需重启,随 state.json 持久化 - 按顶层会话聚合:请求经
header.parentSession父链归并到根会话(rootId)——限「对话 A」= 主循环 + 全部子代理 + 压缩/标题共用同一把会话锁 - 两道门:会话门(按 rootId 聚合的独立 FIFO,cap=0=暂停)→ 全局门,固定获取顺序无死锁
- 会话标识三行:标题 + 短会话 id + 工作区目录
- 辅助请求(压缩/标题)默认豁免会话门
修复
- 工具 render 契约(ContentBlock[])与 JSON 序列化安全修复:dsh 要求插件工具 output.render 返回 ContentBlock[] 块数组,此前裸对象/字符串会导致会话历史 tool-result 块崩溃(history unavailable)
concurrency_session_set执行报getApi is not defined:registerTool 补 getApi 参数- 会话门计数跨天归档/重启接续丢失修复
此前核心能力
- FIFO 门闩(默认
mode=queue, maxConcurrency=5,排队超时 fail-open) - 来源分类(main/subagent/plugin/compaction/session-title)
- 持久化统计(按天汇总 + 异常分类聚合 + 异常明细双报表,重启不丢)
- 回合中断检测(弃流/停滞/遗留三路兜底)
- WebUI「并发监控」页签 + HTTP JSON 端点 + 状态文件 +
concurrency_status工具 - 零构建链、零依赖、MIT