前言¶
在 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)約束;房間歷史條數默認保留historyLimit300。
拉人審批與跨房調用¶
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 一行命令。
- 在
dependencies增加對本倉庫的 link 依賴:
"dsh-plugin-team-group": "link:<本倉庫路徑>"
- 在
dsh.profile.bundles數組中加入 bundle 名:
"dsh-plugin-team-group"
- 建好
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 狀態目錄 |
典型用法(可復現路徑)¶
- Web 建卡與建房:打開側邊欄「團隊」,通過
/team-group面板維護角色卡(可選用GET /api/presets、GET /api/avatars),創建房間並查看 SSE 事件流。 - 觸發一輪討論:在房間輸入條管理員插話(
POST /api/rooms/:id/say),或由成員/管理員在會話中調用team_group_convene;導演會話規劃 rounds 後,各成員用team_group_speak落賬。 - 拉渠道成員:成員或工具側
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。查閱目錄說明與源碼: