前言¶
DSH 的理念是「一切皆插件」,agent team 也因此成了常見玩法:一個 Lead 帶若干成員,各幹各的活兒。但到了給成員分配能力這一步,往往只有兩種做法:大家都用同一套預設,差異寫在提示詞裏;或者直接改全局配置,改完影響所有人。前者分不清角色邊界,後者改一次要回滾一次。
dsh-agent-team-roles 走的是第三條路:把每個角色做成一枚獨立可選的 agent preset,再在 Web GUI 裏提供一個開關式的配置面板和一條團隊消息流。插件只延伸官方接口,不改 dsh 本體。作者 StarSpacePX,分類爲工作流,許可證 MIT。
這是什麼¶
一句話定位:給 dsh 的 agent team 的每個成員定義一個「角色」,角色本身就是一枚獨立 preset,與內置的 standard / cordis / ptc / minimal 並列;插件額外提供兩個會話頁籤——「角色」配置頁和「羣聊」。
它解決的問題是:成員之間的能力差異此前只能靠提示詞描述,現在可以按角色顯式開關工具、技能、MCP 等能力行,並單獨指定模型。
核心功能¶
下面這些能力均來自插件 README,未做擴展。
- 角色即 preset。每個角色註冊成一枚獨立 preset,部署當前可用的預設裏多一枚
team-前綴的角色 preset。 - 開關式配置面板。支持過濾、只看被改過的行、整類三態開關、分類摺疊;一次手勢操作合併成一條批量請求。
- 只引用,不新增。角色的能力行來自部署當前的預設,角色只改已有行,不憑空造行,也不改現有任何文件。
- 技能按角色選用。技能行的開關與順序按角色存,宿主側一次裝配。
- 模型按角色選用。每個角色可單獨指定 provider / 模型 / 推理強度;留空則跟隨模板。
- MCP 開關。關掉表示該角色的 agent 看不到那臺 MCP 服務器的工具,是可見性過濾,不是另起一條連接。
- 團隊運行時與成員綁定。
set-team打開團隊運行時,bindMembers把新建成員綁到同名角色。 - 會話頁籤「羣聊」。不切會話即可聚合全員消息流;該頁籤是隻讀投影,不依賴任何外部數據庫。
@成員派發。Lead 可以看到全部成員,@名字直接投遞;任務板變化會喚醒 Lead。
安裝與啓用¶
安裝命令來自 README 原文,在 PowerShell 中執行:
dsh plugin --profile web add github:StarSpacePX/dsh-agent-team-roles
這條命令會把插件裝進 profile,並自動補進 dsh.profile.bundles,不需要手工編輯 profile 的 package.json。裝完要重啓 dsh:宿主側的新代碼只在新進程裏存在,熱加載只覆蓋客戶端側。
用 git 地址安裝時,pnpm 默認阻止安裝期構建腳本。如果報錯,把報錯裏提示的 allowBuilds 條目照抄進 <DSH_HOME>/profiles/web/pnpm-workspace.yaml,重跑命令即可。
本地開發時可以直接裝目錄:
dsh plugin --profile web add link:D:/path/to/dsh-agent-team-roles
裝完確認一件事:看 GET /state 裏有沒有 team 段,有就說明宿主側是新代碼。
隨後在會話頁籤欄打開「角色」頁,按下面的順序啓用:
- 打開頂部的「啓用智能體團隊」。這一步會同時選上團隊組合包並打開成員綁定,界面會回報「已生效」或「已保存,重啓 dsh 後生效」。
- 點「新建角色」。新角色默認以部署當前的預設爲底,在能力行表裏開關工具 / 技能 / MCP,id 默認帶
team-前綴。 - 把這個 preset 選給一個成員。
- 切到「羣聊」頁籤,看全員消息流。
配置¶
配置寫在 profile 的 cordis.patch.yml 的 config: 段裏:
# <DSH_HOME>/profiles/web/cordis.patch.yml
config:
prefix: team-
bindMembers: false
配置項如下:
dir,默認null。角色數據目錄;留空等於<DSH_HOME>/agent-team-roles。prefix,默認"team-"。新建角色時 preset id 的前綴,避免與內置 preset 撞名。bindMembers,默認false。強制打開成員綁定;改了要重啓 dsh。home,默認null。dsh 數據根目錄;一般留空,走DSH_HOME或~/.dsh。
數據與卸載¶
數據全部落在 <DSH_HOME>/agent-team-roles/:roles.json 做索引,每個角色一個 <id>/role.json 與 <id>/AGENTS.md。插件不改 dsh 包、不改 shipped preset、不改 ~/.dsh/settings.yaml。
卸載插件不會刪數據。要徹底清乾淨,按順序做:卸插件 → 重啓 dsh → 手動刪掉 agent-team-roles/ 目錄。備份就是拷這個目錄,恢復就是把目錄放回去再重啓。
適用場景與注意¶
適合正在用 dsh 跑 agent team、並且希望成員之間能力有明確邊界的開發者:角色的能力差異落到 preset 上而不是提示詞裏,改動有明確的作用範圍和落盤位置。
有幾點需要留意:
- 插件以當前 dsh 進程的權限運行。安裝前建議打開倉庫檢查源碼,確認與自己的能力和數據訪問預期一致;倉庫許可證爲 MIT。
- 寫配置類的改動需要重啓 dsh,界面上的改動只刷新頁面即可。判斷標準是界面回報「已生效」還是「已保存,重啓 dsh 後生效」。
- 成員創建失敗會永久佔用這個名字。這是 dsh 本體的限制,插件修不了;要控制併發,失敗後不要改名重試。
- 「羣聊」頁籤是隻讀的,沒有輸入框;要發消息走
@成員或工具。 - 面板只提供開關,沒有逐行 config 編輯器;行名懸停能看到該行的 config。
環境要求來自 package.json:Node ^22.19 || >=24,dsh >=0.2.0-rc.1 <0.3.0-0。當前版本 0.1.3。
結尾¶
這個插件的價值在於把「角色」從提示詞裏的描述變成了可枚舉、可開關、有獨立數據目錄的 preset,團隊運行時和成員綁定也連在同一套界面上。數據自持、卸載不丟數據、不碰 dsh 本體,適合把它當作團隊協作的一層薄殼來評估。
目錄頁:https://www.skillhub.cn/plugins/StarSpacePX/dsh-agent-team-roles
倉庫:https://github.com/StarSpacePX/dsh-agent-team-roles