DSH Team Flow:Agent Teams 等待期间用 Steer 插话唤醒 Lead

前言

在 DSH 里启用 Agent Teams 后,Lead 代理可能在 wait_agent 中阻塞,等待队友完成工作或超时。此时用户通过 Steer(插话)发来的新消息会进入收件箱,但按默认流程往往要等到 Team 状态变化或 timeout 之后,才会被 AgentLoop 领取处理。若你希望在队友继续运行的前提下,让这一次等待立刻结束、原消息只被领取一次,就需要在宿主能力之外做一层补丁。下面介绍社区插件 DSH Team Flow(团队插话助手)的定位、安装方式与兼容边界。

这是什么

DSH Team Flow 由维护者 jidekaixin2dian 发布,归类为工作流类插件,当前为 alpha 预览版。一句话:主代理停在 Team 等待时,让用户的 Steer 结束本次 wait,再由原生 AgentLoop 按原语义领取那条消息;不取消 Agent,也不改写 Inbox 里的队列逻辑。

实现思路围绕 deepseek-harness Discussion #9214,作为独立插件交付:无需改宿主源码或安装包,但依赖运行时方法装饰,官方尚未将其视为专用扩展 hook。

核心功能

下面行为来自仓库 README 中的「已验证的行为」表,在隔离 Mock runtime 与真实 Node PTC 场景下做过回归。

输入 / 条件 行为
同一 Lead 的 user Steer 本次 wait 返回 {timedOut:false, reason:'user-steer'},原消息恰好一次领取
Queue、user-sourced inject、普通 send、直接 Inbox mutation 不归因为 Steer 唤醒
其他会话 / teammate 输入 不直接结束这里的 Lead 等待
Stop、guard 拒绝、Team-first、原生 timeout 保留各自结果
真实 Node PTC 成功唤醒后,后续程序语句继续执行
禁用插件时仍在 wait 仅取消这个 wait,返回明确的插件禁用错误,队友继续运行

工作机制概要:插件加载宿主当版的 Team 工具(不冻结复制旧工具);在缺少合法 Steer 成功值时扩展 wait 的 schema / render,已支持则保留契约。它临时装饰公开 Agent.steer(),记录原消息 ID,再通过 tools/execute 的派生 signal 结束单次真实 wait,等待底层 promise 收敛。

README 记载:在 DSH 0.2.1-rc.2 上,插件 0.2.0-alpha.5 已通过 18/18 项隔离测试与严格 TypeScript 检查(含真实 Node PTC 与 interrupt=false 下的 Steer 唤醒)。兼容目标从宿主 0.2.0-rc.2 起维护,不强制旧用户升级。

安装与启用

环境要求:DSH >= 0.2.0-rc.2、Node >= 24,并先启用官方 Agent Teams bundle。插件已收录 DSH Market(社区目录,与 DeepSeek / 幻方无官方从属关系);也可从 GitHub Releases 安装 dsh-team-flow-continuous-*.tgz。

  1. 让所有 Agent idle,备份 profile;建议先用新的测试 profile。
  2. 启用官方 Agent Teams bundle。
  3. 在市场搜索 dsh-team-flow,核对来源 jidekaixin2dian/dsh-team-flow 后安装;或在插件管理器安装本地 tgz,或使用 CLI:
dsh plugin --profile <你的测试profile> add <tgz绝对路径>
  1. 确保本插件 bundle 排在 Agent Teams bundle 之后(包声明 dsh.bundle.order.after)。它会停用原 tool-agent-team profile entry 并加载宿主当版官方 Team 工具,避免双重注册。若你曾自定义官方工具的 freshProvider / forkProvider,需在插件配置里使用相同值。
  2. 开新会话,按你的发送设置使用 Steer / 插话。Queue 仍按原语义;普通 Enter 由 DSH 设置决定。

卸载前同样建议 idle,在插件管理器移除,或:

dsh plugin --profile <你的测试profile> remove dsh-team-flow-continuous

主动禁用且仍在 wait 时,可能得到 TEAM_FLOW_RC2_DISABLED;未捕获该错误的 PTC 程序可能停住后续语句。请勿与另一套同名 Team 工具 owner 同时启用。

典型用法

没有单独的「业务 API」示例:用法就是 Teams 场景下的日常 Steer。

  1. Lead 进入 wait_agent,队友仍在执行。
  2. 用户对同一 Lead 发送 Steer(插话),而不是依赖 Queue 或普通 send 去碰 Inbox。
  3. 本次等待以 reason:'user-steer' 结束,AgentLoop 领取那条 Steer 对应消息一次;队友不被这次插话直接打断。

若你使用 Node PTC 驱动 Team 流程,README 标明唤醒成功后后续语句会继续执行,适合在测试 profile 里先跑通再用于正式工作流。

适用场景与注意

适合谁:已经在 DSH 里用 Agent Teams,且经常在 Lead 等待队友时需要用 Steer 改方向或追加指令,又不想等到 timeout 或 Team 事件才处理 inbox 的开发者。

alpha 与验证范围:README 写明尚未验证正式 Desktop UI、SSH、Python PTC 与任意第三方插件组合;请先在隔离 profile 试用。方法装饰可能与其他插件装饰同一方法、或宿主 ABI 变化冲突;不支持时会保留原等待并告警,或加载失败。

权限与信任:插件以当前 DSH 进程权限运行,安装前应阅读 源码 与 MIT 许可证;独立社区项目,不宣称已合并进上游。

版本:package.json 当前公开版本为 0.2.0-alpha.5;engines 要求 dsh >=0.2.0-rc.2、node >=24.0.0。

问题与反馈可走 Issues 或 试用说明与反馈 Discussion,附 DSH / Node / OS 版本与脱敏日志,勿附 API Key 或会话原文。

结尾

DSH Team Flow 针对 Agent Teams 里 Lead 阻塞等待的间隙,用 Steer 结束单次 wait、保留队友运行与 inbox 语义,是对 Discussion #9214 的插件化实现。目录页:https://www.skillhub.cn/plugins/jidekaixin2dian/dsh-team-flow;仓库:https://github.com/jidekaixin2dian/dsh-team-flow。

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

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

Xiaoye