expert-team
把一支多角色专家团装进 DSH 会话。
选一支内置团队,一键召唤后每位专家带着自己的角色人格,在独立子会话里并行开工;主会话担任召集人,收齐全部回传后汇总成一份统一交付物。
功能特性
- 团队画廊 — 内置 25 支专家团、167 位专家,覆盖 11 个分类:产品设计 / 前沿研究 / 技术工程 / 学术写作 / 内容创作 / 数据智能 / 营销增长 / 人力资源 / 金融投资 / 法律合规 / 命理玄学。布局为标题栏 + 排序(综合 · 最热 · 最新)+ 分类筛选 + 卡片网格(圆头像、名称、
发布方 · N位专家、简介、标签)。 - 团队详情 — 大圆头像 + 使用次数 + 「召唤专家团」按钮 + 预设提问条 + 使用案例 + 成员名册(主理人带 🏅 徽章)。
- 一键召唤 — 每位专家被派进一个独立子会话并行开工,可逐个点开查看工作过程。
- 召集人汇总 — 主会话收到「专家团已就位」简报,等待所有专家返回后汇总成一份交付物。
- 分批派遣(流水线团队) — 带阶段计划的团队(如论衡长文流水线 9 角色 / 6 阶段、页面逆向研判团 9 角色 / 7 阶段、截图转代码工程团 10 角色 / 7 阶段)可逐阶段派遣,上一阶段产出成为下一阶段输入。
- 自定义团队 — 面板里新建 / 编辑团队:成员人格、预设提问、使用案例、分类标签都能自己写,存本地 JSON。
安装
插件托管在 GitHub(kee0012/expert-team,未发布到 npm),DSH 支持以 git 依赖方式直接安装:
# 从 GitHub 安装(推荐,日常使用;拉取默认分支最新提交)
dsh plugin --profile desktop add github:kee0012/expert-team
安装后需要重启 DSH,新的服务端代码与 client bundle 才会生效。
使用
| 场景 | 位置 |
|---|---|
| 空会话 | 「专家团」chip 落在「工作区 | Agent 预设」那一行、紧贴「标准模式」右侧 |
| 有内容的会话 | chip 回落为输入卡片工具行(+ / 权限 / 计划模式那一行)左侧的并列控件 |
| 点开后 | 全屏模态:团队画廊 → 团队详情 → 召唤任务面板 → 新建 / 编辑团队 |
召唤
- 打开面板,选一支团队 → 点「召唤专家团」;预设提问点一下即可填入输入框。
- 在输入框那枚团队标签的成员菜单里勾选本次要派遣的成员。
- 写下需求按回车即派遣(这次回车被接管,需求不会当普通消息发出去)。
- 输入框那枚标签变成
● 团队名 3/3 ▾:点×取消召唤,点团队名回画廊换一支。 - 派遣后会话里出现「专家团已就位」简报,左侧会话树里长出 N 个子会话(每位专家一个)。
分批派遣(流水线团队)
带阶段计划的团队,成员菜单顶部会出现一排阶段按钮(一次性 | P1 初步调研 | P2 规划大纲 | …)。点某一阶段 = 只派这一阶段的成员;后续阶段由召集人接力:每位专家收尾时把成果回传主会话,召集人收齐本阶段全部回传后,把产出原文作为 context 再调一次 expert_team_summon(带上下一个 stage)。
也就是说:你只需要点一次第 1 阶段,整条流水线会自动往后跑。菜单里的「一次性」则退回并行行为(全部成员同题并行)。
新建与编辑团队
右上角「+ 新建团队」。自定义团队存 $DSH_HOME/expert-teams/teams.json;与内置团队同 id 时覆盖内置,删除后恢复内置版本。内置团队是否可编辑由 config.json 的 lockBuiltinTeams 决定,见配置。
头像
团队图标与成员头像用的是同一套 36 张插画(圆形)。表单打开时会按 id / 名称自动落一张;点格子换一张,或点「推荐这张」采纳推荐。一旦你亲手挑过,就不会再被自动改。素材出处与许可见 assets/member-avatars/README.md。
成员详情
在团队详情的「团队成员」里点任意一位,弹出该成员完整信息:称呼 / 昵称 / 职责 / 角色 / 头像 / 人格提示词。提示词按「职责 · 工作方式 · 交付物 · 纪律」分块展示,也可以切回整段编辑;保存后列表与团队配置同步刷新。
斜杠命令
/expert-team list 列出全部团队
/expert-team show <团队id> 看某支团队的成员名册
/expert-team summon <团队id> 给出派遣指引
模型工具
| 工具 | 作用 |
|---|---|
expert_team_list |
列出团队 id、名称、成员名册与职责 |
expert_team_summon |
{team_id, task, member_ids?, stage?, context?},为每位专家开独立子会话并返回子会话 id |
HTTP 接口
同源前缀 /expert-team/api/,无需鉴权,请求体上限 1MB:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | health |
插件与 subagent provider 状态 |
| GET | config |
当前运行配置 |
| GET | teams |
全部团队(不含 persona 正文)+ 当前配置 |
| POST | teams |
新建 / 覆盖团队(含字段校验) |
| GET | teams/<id> |
单支团队 |
| DELETE | teams/<id> |
删除自定义团队(内置团队删不掉) |
| POST | summon |
{sessionId, teamId, task, memberIds?, stage?, context?} → 直接派遣 |
| GET | status?teamId= |
本次运行期内的派遣台账 |
团队与成员头像由 GET /expert-team/avatar/NN.jpg 提供(NN 为 0–35)。
自定义团队数据格式
内置团队在 data/teams.json,用户团队在 $DSH_HOME/expert-teams/teams.json,同一结构。
| 字段 | 说明 |
|---|---|
id |
小写 kebab-case,≤40 |
name / tagline / category |
名称 / 一句话简介 / 画廊分类 |
tags |
卡片标签,≤4 个 |
presets |
预设提问,≤6 条,每条 ≤140 字 |
cases |
使用案例 { emoji, title(≤40), desc(≤90), delivery? };delivery 是这个案例跑完后的成品示例(Markdown,≤8000 字) |
createdAt |
供「最新」排序;编辑时保留原值 |
members |
成员数组,见下 |
stages |
可选,阶段计划;不写 = 一次性并行派遣 |
avatar |
可选,0–35 的插画索引 |
成员字段:id(团内唯一)、name、alias、role(lead | member,整团最多 1 位 lead)、focus(职责一句话)、persona(人格提示词)、avatar?。
publisher 不用手写:内置团队派生为 DSH 官方团队,自定义团队派生为 我的团队。
stages(阶段计划)的规则:
- 团队级字段,不是成员级 —— 同一位专家可以横跨多个阶段(深度研究团队的课题研究员既做初步调研、又做逐章起草)。
stage序号必须从 1 连续递增(1、2、3…)。- 必须覆盖全部成员:声明了
stages却有成员没被任何阶段引用,服务端直接返回 400。 - 判别只看一个事实:
stages有几个条目。≥2 就是流水线团队(面板显示「N 阶段流水线」徽标、成员菜单出现阶段切换);0 或 1 个阶段则按一次性并行处理。
persona 写法建议:写「职责 / 工作方式 / 交付物 / 纪律」四段(按这个顺序,且把这四个词原样写进去 —— 成员详情会按标记切小节),比堆形容词有效得多。判断一段 persona 好不好,看三点:有没有写清与同团其他成员的分工边界;工作方式是不是可执行的分步动作;纪律里有没有反例。
配置
首次启动会在 $DSH_HOME/expert-teams/config.json 落一份默认配置;改完重开面板即生效,不需要重启 DSH。
| 配置项 | 默认值 | 说明 |
|---|---|---|
lockBuiltinTeams |
false |
false = 内置团队可直接编辑;true = 内置团队只读,写内置 id 返回 403 LOCKED,想改请先「另存为」一支自定义团队 |
limits.maxMembers |
13 | 单团成员数上限 |
limits.maxStages |
9 | 阶段数上限 |
limits.maxTags |
4 | 卡片标签 chip 数上限 |
limits.maxPresets |
6 | 预设提问条数上限 |
limits.maxCases |
6 | 使用案例条数上限 |
limits.maxPersona |
4000 | 成员 persona 字数上限 |
limits.maxChildrenPerSummon |
13 | 单次召唤的子会话数上限 |
limits.maxDelegateDepth |
1 | 子代理层数上限,防止「专家又各自召唤一支团」 |
limits 只接受正整数,非法值一律回落到默认值;删掉某项即用默认值。完整键名见 src/index.js 的 DEFAULT_LIMITS。
覆盖内置 id 会盖掉插件升级带来的这支队的内置更新(同 id 副本优先于内置基线),删掉副本即恢复基线。
兼容性 / 已知限制
- 需要 Node 22.19+ / 24。
- 派遣台账(
GET status)是内存态,DSH 重启后清空;子会话本身是持久的,会在左侧会话树里正常保留。 - 头像素材是内置的 36 张插画,暂不支持换成自己的图片(换素材的做法见 assets/member-avatars/README.md)。索引缺省时按团队 / 成员 id 稳定派生,所以老数据一个字段都不用补,同一对象永远同一张脸。
- 分批派遣是单向流水线,不自动回环。
stages是单向 DAG(P1 → P2 → … → Pn),能做「上一阶段产出成为下一阶段输入」,但不会自动「审稿判 REVISE → 退回重做 → 再审」。需要回退时,由召集人或用户再派一次该阶段,把审稿意见作为context传进去。 - 内置团队默认可编辑:保存会在用户目录落一份同 id 副本覆盖内置。把
lockBuiltinTeams置true后,内置团队退回只读,写入被服务端拒绝(403LOCKED)。 - 团队卡片的「使用次数」= 内置基准值 + 本地实际使用次数(存
$DSH_HOME/expert-teams/stats.json)。 - 团队 / 成员的
emoji字段保留在数据里(编辑时原样透传),但不出现在界面上。
从源码构建
pnpm install # 只装构建用的 esbuild
node scripts/build.mjs # 生成 lib/index.js + lib/client.js
| 路径 | 内容 |
|---|---|
src/ |
宿主半(Cordis 插件)与浏览器半源码 —— 改代码改这里 |
lib/ |
构建产物,已入库(从 git 源安装不会跑构建脚本) |
data/teams.json |
内置 25 支团队 / 167 位专家的全部数据 |
assets/member-avatars/ |
36 张成员头像(含上游出处与许可) |
locale/ · assets/icon.svg |
插件管理器里显示的标题 / 描述 / 图标 |
反馈与贡献
问题与建议请提到 Issues。欢迎提交 PR。
License
MIT
No comments yet. Be the first to write one.