T专家(dsh-plugin-t-expert)
dsh-plugin-t-expert 插件:包含 22 个分类 / 323 位专家的名册(中文名、简介全量覆盖),
外加插件自带的多智能体团队引擎(T Team:小队模板、任务 DAG、调度、活动面板)。
装上以后你能做四件事:
| 做什么 | 怎么做 |
|---|
| 用专家 | 输入框打 @ → 按分类分组的菜单 → 选中的专家作为引用 chip 进本轮对话;模型也可自行 summon_t_expert |
| 拉起一支小队干活 | /t <小队> <目标>(/t 单跑列出现有小队) |
| 管名册 | 设置 → T专家 → 专家(启停 / 看提示词 / 新建自建专家) |
| 管分类、小队与团队 | 设置 → T专家 → 分类(自建分类增删改)、队伍(小队模板)、团队(运行中的团队:停止 / 归档 / 删除) |
安装
dsh plugin --profile web add dsh-plugin-t-expert
DSH Desktop 请在插件市场里搜 dsh-plugin-t-expert 安装(--profile desktop 由 Electron 应用独占,
CLI 会被拒绝 —— 任何插件都一样)。
- 依赖:DSH 宿主
0.1.5-rc.1 / 0.1.5-rc.2;Node ^22.19.0 || >=24;pnpm 在 PATH 上。
python3 只在保存小队时用到(缺它插件照常加载,只是小队编译会报错并回滚)。
团队引擎对接的是宿主未文档化的内部投递契约,实测过的宿主版本记在
lib/teams/harness-compat.js 的 TESTED_HARNESS_VERSIONS:版本不在矩阵里、或契约形状变了,
日志会有一条 [t-team] ... contract ...,提示段也会写明(见「常见问题」最后两行)。
符号口径变了(上游不再用 Symbol.for)时插件会动态 import 宿主的 internal 子路径拿真身
符号并自动重挂引擎 —— 能自救,但日志里照样留一条,方便你把实测矩阵补齐。
- 装完重启 DSH 即可用;第一次怎么上手见下面的「快速上手」。
快速上手
- 启用专家:设置 → T专家 → 专家,把要用的打开 —— 默认全部未启用,未启用的不会被召唤。
- 用一位专家:输入框打
@,按分类挑一位,它以引用 chip 进入本轮对话;也可以直接说"让 XX 专家看看",
由模型调 summon_t_expert。
- 拉一支小队:
/t 看有哪些小队,/t <小队> <目标> 让它干活 —— 先给成员与任务草案,
你 review 后开跑。随包自带一批按领域拆分的队伍(每支 4–6 人、角色互补),用 /t 就能看到;
想自己加或改,去 设置 → 队伍;也可以用 python3 ops/squads-expand.py 按分类重新展开一批。
界面入口
| 位置 | 是什么 |
|---|
| 设置 → T专家 | 管理页,一共四个标签:专家(启停 / 提示词 / 新建自建专家)、分类(自建分类增删改)、队伍(小队模板)、团队(运行中的团队:停止 / 归档 / 删除) |
输入框 @ | 按分类分组的专家菜单,选中即插入引用 chip |
| 输入区「T专家」按钮 | 浮层标签:专家 → 技能 → 小队 →(有运行中的团队时才出现)团队 → 任务,默认停在专家;专家 / 小队 / 技能三个标签带计数(该标签里的总条数,不随搜索框变化) |
| 会话标题栏徽章 | 后台任务只读面板(当前会话及其子代理的任务:状态、退出码、耗时);只在真有任务在跑时亮起并给出数量,面板绝不自动展开,可拖动、位置记在本机 |
| 左侧栏「新会话」下方 | 定时任务入口(与「新会话」同款按钮外观),点开在右侧主区域显示管理页;点任意会话即回到会话视图 |
专家
- 名册随包发布,启动时与
~/.t-team/ 对齐(按条目送达,见「数据目录」)。
- 自建专家:设置 → 专家 → 「+ 新建专家」,写在
customRoot(默认 ~/.t-team/custom/<分类>/<slug>.md),
与内置名册分开 —— 内置名册升级时整棵替换,自建的不受影响;归到官方分类名下也安全(分类只是归属)。
- 自建分类:设置 → 分类 → 目录名(小写 ASCII)+ 显示名。官方分类只读;删除自建分类时若里面还有专家会被拒绝。
| 工具 | 作用 |
|---|
list_t_experts | 列出已启用专家的分类与数量;传分类名可列出该分类的专家 |
summon_t_expert | 召唤 1 位专家:以它的完整人格跑一个子代理并返回结果 |
summon_t_experts | 并行召唤多位(最多 8 位、并发 4;部分失败仍返回成功的结果) |
t_team_plan_check | 只读 DAG 预检:一批团队任务先跑一遍引擎校验,一次报出全部问题 |
小队与团队引擎
/t # 列出所有小队(key、别名、人数、成员中文名)
/t <小队|别名> # 选定小队,队长列出成员并问你目标
/t <小队|别名> <目标> # 拉起小队干活(先给成员与任务草案,你 review 后开跑)
/t <一句话目标> # 没匹配到小队名时,按目标自动挑最合适的小队
引擎另注册 13 个 t_team_* 工具(建队 / 审批 / 建任务 / 派发 / 状态 / 恢复 / 删除…),随插件一起提供;
队长与成员各看到其中一个子集。
设置 → 队伍里改成员 / 别名 / 启停,保存写回 ~/.t-team/teams.json 并调用小队编译器:
保存后立即生效,无需重启 DSH——编译成功后运行中的插件就地重载引擎配置,/t 与新建队随即看到新小队,
已经跑起来的团队继续用启动时的成员表。编译失败会自动回滚,盘上仍是旧配置,设置页直接报错并说明引擎是否可用。
约束:小队 key 只能 ASCII a-z0-9-(中文放 description / aliases);每队 ≤ maxMembers(默认 8);
小队总数 ≤ 48(随包这 48 支正好用满上限,再加要先腾位置);别名全局唯一;成员必须是名册里真实存在的专家。
编辑入口是 设置 → 队伍(保存即编译并热重载)。
定时任务
到点自动新开一个会话执行提示词,也可以随时「立即执行」。
| 能力 | 说明 |
|---|
| cron 执行 | 每条 = 标题 + 提示词 + 五段 croner 表达式(分 时 日 月 周) |
| 结构化选择器 | 快捷模板 + 「每小时 / 每天 / 每周 / 自定义」逐级选,周几多选;也可直接写原始表达式 |
| 实时预览 | 面板显示最近 5 次执行时间(宿主用 croner 算,保存前就能确认周期) |
| 立即执行 | 任意一条一键跑一次,不必等 cron 到点 |
| 绑定工作区 | 默认绑好:新建即绑定自动创建的「定时任务」工作区(目录 = 默认工作目录下的 tesk);下拉里还能选「+ 自定义目录…」填任意绝对路径(不存在会建出来,工作区名取目录名),或选「不绑定工作区」 |
| 会话自动命名 | 「任务标题 · MM-DD HH:mm」,同一任务多次运行在侧栏里分得清 |
| 执行记录 | 每条保留最近 20 次(时间、成败、失败原因、会话 id) |
| 启用 / 停用 | 停用的事项保留数据但不再触发 |
| 点名专家 | 提示词框下的「🧩 T专家」浮层只列已启用专家(可搜、可键盘选、可多选),把 @专家名 插在光标处;到点执行时宿主把它改写成召唤指令(1 位 → summon_t_expert,多位 → summon_t_experts),不在已启用名册里的名字原样提交、绝不猜 |
开关:设置 → T专家 → 「显示定时任务按钮」。关掉它不只是藏按钮:宿主同时停掉全部定时触发,
手动执行也被拒;任务与执行记录完整保留,重新打开立刻按 stored 状态恢复调度。
数据写在 ~/.t-team/schedule.json(插件自己的数据根下,不进宿主存储域),与 @weibaohui/dsh-tasks
可同时安装、同时使用:各跑各的定时器、各存各的任务、各用各的侧栏入口与 remote 服务,互不可见。
数据与目录
全部数据都在你本机:不连任何网络服务、不做遥测;名册、中文译文与小队的编译器都随包分发,运行时不向上游拉取。
~/.t-team/
├── experts/ 名册:<分类>/<slug>.md(包内快照 22 个分类、323 位;你自建的另计)
├── zh/ 中文侧车:names.json、descriptions.json、<分类>/<slug>.md
├── custom/ 你在面板里自建的专家
├── teams.json 小队定义(设置页「队伍」写回)
├── schedule.json 定时任务:任务、cron 表达式与最近 20 次执行记录
├── t-team.config.json 小队编译产物(引擎配置,人格已内联)
├── teams.resolved.json 小队编译产物(/t 列表用)
├── team-profiles.py 小队编译器的播种副本(实际跑的是包内那份)
├── source.json 名册清单(专家数 / 分类 / 更新时间)
└── .t-team-snapshot.json 上次对齐的记录(版本 / 漂移计数)
- 启动时按条目与包内快照对齐:包内新增的专家 / 小队 / 译文键补齐;只读条目(
experts/、source.json、
team-profiles.py、zh/ 的覆盖表与分区表)与包内对齐;names.json / descriptions.json / teams.json
只补缺失的键(你改过的键一个都不动);你改过的译文正文保留盘上那份;包内已移除的条目只报告、不删你的文件。
- 一句话:送得到的送到,送不到的一定出声(日志给出数量与例子)。唯一始终用包内那份的是小队编译器
(它是代码,随插件版本走)。想换目录位置,用配置项
root / zhRoot / customRoot 覆盖。
常见问题
| 现象 | 原因与处理 |
|---|
| 召唤不了某位专家 | 它没被启用(设置 → T专家 → 专家);名册默认是"全部未启用" |
/t 不可用或提示引擎降级 | 宿主版本不在实测范围内(见「安装」的依赖一行)时团队引擎会降级:/t 会给出原因,名册与 @ 召唤不受影响 |
| 保存小队报错 | 缺 python3,或新定义没通过编译 —— 失败会自动回滚,盘上仍是旧配置,设置页会说明引擎是否可用 |
| 定时任务没有按时跑 | 设置 → T专家 → 「显示定时任务按钮」若被关掉,宿主会停掉全部定时触发(手动执行也会被拒),这是有意为之 |
| 改完插件看不到变化 | 客户端与宿主代码都要重启 DSH 才生效;设置 → T专家 标题行有当前版本号(v0.3.x)可核对 |
| 升级 DSH 后团队功能变得可疑(叫不醒成员、已退休成员又干活) | 宿主的 subagent 内部投递契约变了:日志里有一条 [t-team] ... contract ...,模型看到的提示段也会写明「宿主版本不在实测矩阵 / 形状与实测不符」。改 lib/teams/harness-compat.js:按新宿主核对 HARNESS_ROUTES 的形参个数,实测通过后把版本加进 TESTED_HARNESS_VERSIONS |
卸载与反馈
许可
本插件以 MIT 发布(见 LICENSE)。
随包内容包含第三方成果 —— 内置团队引擎(派生自 @nanmicoder/dsh-agent-teams)、专家名册与中文译文
(msitarzewski/agency-agents、jnMetaCode/agency-agents-zh 等)、以及运行时依赖 croner ——
它们各自保留原许可。完整来源、版本与署名见 THIRD-PARTY-NOTICES,完整许可文本随包放在 vendor/。
本插件及随包内容按**「原样」提供,不附带任何明示或默示担保**;与上述上游项目及 DeepSeek Harness
官方无隶属或背书关系。再分发(含修改版)时请保留 LICENSE、THIRD-PARTY-NOTICES 与 vendor/
下的许可文本。