dsh-session-concurrency:按会话控制 Agent 推理并发

前言

在 DeepSeek Harness(DSH)里跑多 Agent 工作流时,子 Agent 数量可以调,但那只限制「同时驻留的子任务个数」,并不保证主 Agent 与子 Agent 不会在同一时刻各发一路模型推理。本地部署若在当前硬件与推理配置下只能稳定跑单路请求,多路同时打向后端时,请求容易堆在队列里,延迟拉长,个别配置下还会出现 tok/s 明显下降。DSH 宿主侧也有全局调度,但本地单路会话和云端会话往往希望分开管。下面介绍社区插件 dsh-session-concurrency(仓库 MingoYung/dsh-session-concurrency),它在输入框左侧提供原生滑杆,为当前根会话及其子孙 Agent 设置 1–10 的推理并发额度,并在额度为 1 时实现主 Agent 让出通道、子任务按分支顺序执行的串行交接。

这是什么

dsh-session-concurrency 是 DSH 原生插件,维护者为 MingoYung,在社区目录中归类为工作流。英文简介为:Per-session Agent inference concurrency controls for DeepSeek Harness;带原生 Composer 滑杆,并支持 serial parent/child handoff(父 Agent 与子 Agent 的串行交接)。

插件限制的是同一会话内同时运行的模型推理请求数(走当前 DSH 进程的 llm/stream 路径),主 Agent 与子孙 Agent 共用该额度;其他主会话各自独立。它不读消息正文或模型密钥,也不靠模型名决定是否启用。

核心功能

会话级滑杆(1–10)

在发送区输入框左侧出现「并发」控制:可选宿主默认(移除该主会话的自定义额度,恢复 DSH 原有调度)、自定义(1–10 滑杆,应用后持久化)。子会话界面显示「并发 继承」,随主会话统一调整。

额度 1:主 Agent 与子任务串行

选 1 时,主 Agent 在派发子任务后会等待,不再占用推理通道;同一父 Agent 通过原生 subagent 的多次调用会进入派发队列依次启动;工作流经 startActivation 创建的分支也会按生命周期顺序进入推理。超额请求在 DSH 侧异步等待,由程序监听原生事件并周期性读取 Host 任务状态,无需主模型轮询,也无需临时放宽为双通道。

典型顺序如下:

主 Agent 分析并派发
       ↓
主 Agent 等待,不再请求模型
       ↓
子任务 A(含其孙任务)结束 → 子任务 B → 子任务 C
       ↓
所有子任务结束,DSH 送回结果,恢复主 Agent

额度 N(2–10) 表示该根会话及其子孙在本 Host 内最多同时运行 N 条推理流(含主 Agent);工具 I/O 可重叠,仍保留原有推理限流方式。

状态与边界说明

状态面板区分实际推理、排队 Agent、让位等待、未结束子任务与暂停任务。明确暂停且保留待处理输入的子任务不会被插件自动重启。设置仅在后台持久化成功后显示已应用;切换会话时,迟到的旧请求不会覆盖新会话按钮状态。

与原生 子 Agent 驻留容量(默认 8)独立:插件只读取和展示驻留容量,不修改全局设置。外部进程(如 Codex、ACP)自行发出的模型请求不在计数内;两个主会话各设 1 仍可能对同一本地推理端点合计发起两路请求,跨会话共享端点的限流需另做策略。

安装与启用

适配并实测版本:DSH NEXT 2.0.21-next / DSH 内核 0.2.1-rc.4(package.json 中 engines.dsh 为 0.2.1-rc.4)。其他内核版本需自行核对扩展接口。插件当前发布版本为 0.2.0,许可证 MIT。

安装步骤来自项目 README,不是 dsh plugin add github:… 一类命令:

  1. 获取构建产物 local-session-concurrency-0.2.0.tgz(无需解压)。公开发布以 Releases 为准;本地可自行 npm run build && npm pack。
  2. 在 DSH 中打开「插件 → 添加插件」,填入该 tgz 文件的完整本地路径,安装并启用。
  3. 按界面提示刷新或重新加载插件。
  4. 在发送会话第一条消息前,点击输入框左侧「并发 默认」,选「自定义」,调整滑杆并点「应用」。

本地单路模型会话选 1;云端会话可保留宿主默认或设更高额度。会话设置保存在:

$DSH_HOME/plugins/session-concurrency/limits.json

内容为会话 ID 与数字额度。卸载保留该文件,便于重装后恢复;禁用或卸载不会改原生子 Agent 全局配置。

典型用法

  1. 本地 Qwen 等单路服务:新开主会话,首条消息前将并发设为 1,再让主 Agent 派发多个子任务;同会话内推理应依次执行,避免主、子同时占满后端队列。
  2. 本地 + 云端混用:本地会话设 1,另开云端会话用宿主默认或更高 N,避免为迁就本地反复改 DSH 统一设置。
  3. 需要有限并行:在确认后端能承载的前提下,同一会话将滑杆设为 2–10,在并行与排队之间按硬件能力折中。

建议在会话空闲时升级或重载插件;运行中降低额度不会打断已开始的推理,新请求会等存量降到上限以下。

适用场景与注意

适合:本地模型在当前配置下只能高效处理单路推理;多 Agent 工作流下同一会话内需要可控的推理并发;希望按会话隔离额度而非只改全局子 Agent 数量。

注意:

  • 插件以当前 DSH 进程权限运行;安装前应查看 GitHub 源码 与 MIT 许可证,自行评估信任边界。
  • 额度覆盖进程内 Spawn/Fork 子 Agent 等常见路径,不覆盖其他进程自发起的模型请求;延迟与 tok/s 改善取决于模型、硬件与后端,README 中的测试用于验证调度行为,不保证速度提升。
  • 分支串行面向独立委派;若任务必须等另一分支产出再协作,应调整依赖或并发额度,插件不会凭超时猜成功或绕过审核(如 ClearAI 类审核仍走宿主机制)。
  • 运行状态补接依赖 DSH 0.2.1-rc.4 的只读 manager.resident 等接口;升级内核后需重新验证。

社区目录页:skillhub.cn 插件页。目录为社区站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是工作流类扩展之一。

结尾

dsh-session-concurrency 把「每会话推理并发」做成输入框旁的原生控件,并把主 Agent 计入额度,针对本地单路模型下的主/子争用问题给出可操作的调度语义。问题反馈见 GitHub Issues;实现细节与测试说明见仓库 README 与 0.2.0 发布说明。

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

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

小夜