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。查閱目錄說明與源碼:

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

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

小夜