dsh-plugin-team-group:DSH 上的团队群聊与导演式多角色发言

前言

在 DSH 里跑多智能体时,常见做法是各自独立会话、人工轮流 @,或用外部脚本拼上下文。成员一多,谁该说什么、何时落账到同一条「房间历史」,很快变成胶水代码。社区维护者 DandanLLab 提供的 dsh-plugin-team-group 把「角色卡 + 房间 + 导演发言规划 + 逐角色执行」做成 host 插件:Web 侧 QQ 式气泡流与 SSE,host 侧持久会话与七把 team_group_* 工具,思路参考 Operit 的 group-execution(规划器返回 JSON rounds,再逐轮 followup)。下面按定位、能力、安装、配置与典型用法说明。

这是什么

dsh-plugin-team-group 是 DSH 的团队群聊 host 插件(main: ./lib/index.js,当前包版本 0.1.0,MIT)。维护者为 DandanLLab,在 SkillHub 目录中归类为工作流。它解决的是:在同一「房间」里混编角色卡成员与渠道会话成员(QQ 私聊/群、飞书等),由导演会话规划发言轮次,各成员通过工具发言并写入历史,前端实时 SSE 推送。

核心功能

角色卡与群组

  • 角色卡:每名成员一张卡——名字、头像、主题色、人格基底(registry 预设)、附加人设、可选专属模型;每卡对应一个持久 agent 会话(tg-<room>-<card>)。
  • 群组(房间):成员可混编角色卡与任意渠道会话;渠道会话本身即团队成员(「一个会话即一个角色」),收到房间上下文后调用团队工具发言,不桥接外部消息流。
  • 数据默认落在 ~/.dsh/team-group 的 cards.json、rooms.json(可通过 stateDir 配置)。

导演发言规划与执行

一轮典型流程:输入或工具触发 → 导演规划 JSON rounds → 逐轮逐成员 followup(带房间上下文)→ 成员调 team_group_speak 落账 → SSE 推流。

  • 导演发言规划器:独立导演会话(tg-director)规划「谁说话、按什么焦点说」,返回 JSON rounds;maxRounds 默认 3,规划失败或 directorTimeoutMs(默认 90000ms)超时会降级为全员单轮。
  • 单成员发言等待上限由 memberTimeoutMs(默认 150000ms)约束;房间历史条数默认保留 historyLimit 300。

拉人审批与跨房调用

  • team_group_invite 不直接进房:写入待审批队列并通知管理员会话(大总管);team_group_approve 批准后生效。Web UI 顶部有审批条,管理员可直接批。
  • team_group_convene 可一次召集多个房间;team_group_ask 跨房点名任一成员;管理员会话(如 QQ 私聊)可随时调用。

Web UI 与动态配置

  • QQ 式界面:头像、名字、气泡;用户消息右对齐,系统消息虚线居中;侧边栏「团队」入口,iframe 面板(路由挂载于 /team-group)。
  • 头像从 ui/avatars/ 扫描下发;预设从 agentPresets.list() 拉取;渠道会话从 sessions 目录自动发现;管理员称呼可配 masterName(默认 Master)。

七把团队工具(全会话可见)

工具 说明
team_group_speak 以当前角色在房间里发言
team_group_plan_submit 导演提交 JSON 发言规划
team_group_create_room 创建房间,返回 roomId
team_group_invite 申请拉人(走审批流)
team_group_approve 管理员批准/驳回
team_group_convene 召集讨论,支持多 roomIds
team_group_ask 跨房点名单成员回答

HTTP 侧提供卡片/房间 CRUD、历史、管理员插话(POST /api/rooms/:id/say)、审批、会话列表与 GET /api/rooms/:id/events(SSE)等,详见仓库 README 路由表。

安装与启用

官方说明是在 dsh profile 的 package.json 里三处接入(以 profile 名 my-profile 为例),而不是单独的 dsh plugin add 一行命令。

  1. 在 dependencies 增加对本仓库的 link 依赖:
"dsh-plugin-team-group": "link:<本仓库路径>"
  1. 在 dsh.profile.bundles 数组中加入 bundle 名:
"dsh-plugin-team-group"
  1. 建好 node_modules 链接(Windows 可用 junction:cmd /c mklink /J),重启 dsh。

重启后侧边栏应出现「团队」入口;日志中出现 [team-group] team tools registered 表示团队工具已注册。插件通过 cordis.patch.yml 注入 Web client(@deepseek-ai/dsh-client-ui-slots)。

配置要点(rawConfig)

键 默认 说明
masterName Master 管理员在房间里的显示称呼
masterSessionId qq-dm-$DSH_QQ_DM_TARGET 审批通知发往的管理员会话
qqSessionNames {} 渠道会话展示名,如 {"qq-dm-123":"Owner"}
maxRounds 3 导演最大规划轮数
directorTimeoutMs 90000 导演超时(超时降级全员单轮)
memberTimeoutMs 150000 单成员发言等待超时
historyLimit 300 房间历史保留条数
stateDir ~/.dsh/team-group cards/rooms 状态目录

典型用法(可复现路径)

  1. Web 建卡与建房:打开侧边栏「团队」,通过 /team-group 面板维护角色卡(可选用 GET /api/presets、GET /api/avatars),创建房间并查看 SSE 事件流。
  2. 触发一轮讨论:在房间输入条管理员插话(POST /api/rooms/:id/say),或由成员/管理员在会话中调用 team_group_convene;导演会话规划 rounds 后,各成员用 team_group_speak 落账。
  3. 拉渠道成员:成员或工具侧 team_group_invite;管理员在 Web 审批条或会话里 team_group_approve;跨房协作用 team_group_ask / team_group_convene。

头像资源放在插件 ui/avatars/ 的 *.png 或 *.svg,卡片按 id 引用;仓库自带 breaker、mohist 示例 PNG,可自行替换。

适用场景与注意

适合谁:已在 DSH 上接好多渠道会话、希望用「房间 + 角色卡 + 导演轮次」统一编排多智能体发言、并要在浏览器里看群聊式历史的开发者。

权限与安全:插件以当前 dsh 进程权限运行,工具对「全会话」可见;安装前请阅读 GitHub 源码 与 MIT 许可证,核对 masterSessionId、审批流是否符合你的信任边界。DSH 社区目录(如 SkillHub)为独立生态站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-plugin-team-group 把 Operit 式「导演 JSON rounds + 逐角色执行」接到 DSH 插件体系,并补齐审批、跨房召集与 QQ 式 Web UI。查阅目录说明与源码:

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

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

小夜