dsh-plugin-t-expert 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -197
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,257 +1,146 @@
|
|
|
1
1
|
# T专家(dsh-plugin-t-expert)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
DeepSeek Harness 插件:**22 个分类 / 314 位专家**的名册(中文名、简介、人格正文全量覆盖),
|
|
4
|
+
外加插件内自带的**多智能体团队引擎**(小队模板、任务 DAG、调度、活动面板)。
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
装上以后你能做四件事:
|
|
7
7
|
|
|
8
|
-
|
|
|
8
|
+
| 做什么 | 怎么做 |
|
|
9
9
|
| --- | --- |
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
| 设置页 | 设置 → T专家,**三个标签**:**专家**(启停 / 看提示词 / 新建自建专家)、**分类**(新建 / 改名 / 删除自建分类)、**队伍**(小队模板 + 运行中的团队) |
|
|
10
|
+
| 用专家 | 输入框打 `@` → 按分类分组的菜单 → 选中的专家作为引用 chip 进本轮对话;模型也可用 `summon_t_expert` 召唤 |
|
|
11
|
+
| 拉起一支小队干活 | `/t <小队> <目标>`(`/t` 单跑列出现有小队) |
|
|
12
|
+
| 管名册 | 设置 → T专家 → **专家**(启停 / 看提示词 / 新建自建专家) |
|
|
13
|
+
| 管分类与小队 | 设置 → T专家 → **分类**(新建 / 改名 / 删除自建分类)、**队伍**(小队模板 + 运行中的团队) |
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
> 注意:这条解耦覆盖的是**引擎的运行时挂载**。宿主包本身缺失时(插件声明了若干
|
|
19
|
-
> `@deepseek-ai/*` peer 依赖,由 DSH 安装提供)整个插件都无法加载 —— 这是任何插件的共同前提。
|
|
15
|
+
设置页一共**三个标签**:**专家**(启停 / 看提示词 / 新建自建专家)、**分类**(自建分类的增删改)、
|
|
16
|
+
**队伍**(小队模板 + 运行中的团队)。
|
|
20
17
|
|
|
21
18
|
---
|
|
22
19
|
|
|
23
|
-
##
|
|
24
|
-
|
|
25
|
-
| 项 | 要求 |
|
|
26
|
-
| --- | --- |
|
|
27
|
-
| DSH 宿主 | `0.1.5-rc.1` 或 `0.1.5-rc.2` |
|
|
28
|
-
| Node.js | `^22.19.0 || >=24` |
|
|
29
|
-
| pnpm | **必须在 PATH 上**。`dsh plugin` 本质上是在 profile 目录里转发 pnpm,缺 pnpm 会直接报错 |
|
|
30
|
-
| python3 | 仅在用设置页「小队」标签编辑并编译小队时需要(保存时要调用 `team-profiles.py`) |
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## 二、安装
|
|
35
|
-
|
|
36
|
-
### 1. 命令行安装(推荐)
|
|
20
|
+
## 一、安装
|
|
37
21
|
|
|
38
22
|
```bash
|
|
39
23
|
dsh plugin --profile web add dsh-plugin-t-expert
|
|
40
24
|
```
|
|
41
25
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
dsh plugin --profile web add --save-exact dsh-plugin-t-expert@0.1.1
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
插件在 `package.json` 里声明了 `dsh.bundle`(补丁文件 `cordis.patch.yml`),
|
|
49
|
-
`dsh plugin` 会**自动**把它接到 profile 的 bundle 层(注册 `t-team` 与 `t-team-remote` 两行)。
|
|
50
|
-
**你不需要手改任何配置文件。**
|
|
51
|
-
|
|
52
|
-
### 2. 图形端(DSH Desktop)
|
|
53
|
-
|
|
54
|
-
`desktop` profile 由 Electron 应用独占,`dsh plugin --profile desktop …` 会被 CLI 直接拒绝:
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
error: profile "desktop" is managed exclusively by the Electron application
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**请用插件市场(dsh-market)安装**:在 DSH Desktop 里搜索本插件一键装即可。
|
|
26
|
+
**DSH Desktop 请在插件市场里装**(搜 `dsh-plugin-t-expert` 一键安装)。
|
|
27
|
+
`dsh plugin --profile desktop …` 会被 CLI 拒绝(desktop profile 由 Electron 应用独占),
|
|
28
|
+
这不是本插件的限制——任何插件都一样。
|
|
61
29
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
**真目录拷贝**(不要符号链接)到 profile 的 `node_modules/<包名>`。
|
|
30
|
+
依赖:DSH 宿主 `0.1.5-rc.1` / `0.1.5-rc.2`;Node `^22.19.0 || >=24`;`pnpm` 在 PATH 上
|
|
31
|
+
(`dsh plugin` 本质是在 profile 目录里转发 pnpm)。`python3` 只在**设置页保存小队**时需要
|
|
32
|
+
(要调用小队编译器);缺它插件照常加载,只是小队编译会报错并回滚。
|
|
66
33
|
|
|
67
|
-
|
|
68
|
-
> 运行目录可随时重建,数据目录必须长期保留。清空或迁移运行目录会连带影响插件解析,
|
|
69
|
-
> 届时重跑一遍安装步骤即可。
|
|
70
|
-
|
|
71
|
-
### 3. 装完之后
|
|
72
|
-
|
|
73
|
-
1. 重启 DSH。
|
|
74
|
-
2. 打开 **设置 → T专家**。
|
|
75
|
-
3. 勾选要启用的专家(**默认全部未启用**,未启用的专家不能被召唤)。
|
|
76
|
-
4. 回到输入框打 `@`,出现 T专家的分组菜单即可用。
|
|
34
|
+
装完重启 DSH,然后在 **设置 → T专家** 里启用专家——**默认全部未启用**,未启用的专家不能被召唤。
|
|
77
35
|
|
|
78
36
|
---
|
|
79
37
|
|
|
80
|
-
##
|
|
81
|
-
|
|
82
|
-
插件对任何机器都是**自包含**的:包内自带一份数据快照(`data/`),
|
|
83
|
-
首次启动时会把快照**播种**到你的数据目录 `~/.t-team/`,因此不需要任何额外脚本或同步流程。
|
|
84
|
-
|
|
85
|
-
- 默认 `root = ~/.t-team/experts`、`zhRoot = ~/.t-team/zh`。
|
|
86
|
-
- **已有的文件不会被覆盖**:目录(`experts` / `zh`)与文件(`teams.json` / `teams.resolved.json` / `t-team.config.json` / `team-profiles.py` / `source.json`)按项独立判断,缺哪个补哪个。
|
|
87
|
-
- 因此**升级插件不会动你改过的内容**(例如你编辑过的小队定义、你补译的中文正文)。
|
|
88
|
-
- 播种失败(只读文件系统、权限不足等)只告警,插件照常加载。
|
|
38
|
+
## 二、数据目录
|
|
89
39
|
|
|
90
|
-
|
|
40
|
+
插件对任何机器都**自包含**:包内带一份名册快照,首次启动播种到 `~/.t-team/`。
|
|
91
41
|
|
|
92
42
|
```
|
|
93
43
|
~/.t-team/
|
|
94
|
-
├── experts/
|
|
95
|
-
├── zh/
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
│ └── COVERAGE.json # 中文覆盖率与缺口清单
|
|
103
|
-
├── teams.json # 小队定义(设置页「小队」标签写回这里)
|
|
104
|
-
├── teams.resolved.json # 编译产物:/t 列表与成员解析用
|
|
105
|
-
├── t-team.config.json # 编译产物:内置团队引擎的配置(人格已内联)
|
|
106
|
-
├── team-profiles.py # 小队编译器(设置页保存小队时调用)
|
|
107
|
-
└── source.json # 名册指纹(宿主据此判断名册是否变化)
|
|
44
|
+
├── experts/ 名册:<分类>/<slug>.md(22 个分类、314 位)
|
|
45
|
+
├── zh/ 中文侧车:names.json、descriptions.json、<分类>/<slug>.md、divisions.json
|
|
46
|
+
├── custom/ 你在面板里自建的专家
|
|
47
|
+
├── teams.json 小队定义(设置页「队伍」写回这里)
|
|
48
|
+
├── t-team.config.json 小队编译产物(引擎配置,人格已内联)
|
|
49
|
+
├── teams.resolved.json 小队编译产物(/t 列表用)
|
|
50
|
+
├── team-profiles.py 小队编译器的播种副本(实际跑的是包内那份)
|
|
51
|
+
└── source.json 名册清单(专家数 / 分类 / 更新时间)
|
|
108
52
|
```
|
|
109
53
|
|
|
110
|
-
|
|
54
|
+
- **已有文件不会被覆盖**:升级插件不会动你改过的小队定义或补译的中文正文。
|
|
55
|
+
唯一例外是小队编译器——它是代码、随插件版本走,始终用包内那份(数据目录里那份只作兜底)。
|
|
56
|
+
- 想换目录位置,用配置项 `root` / `zhRoot` / `customRoot` 覆盖即可,不必改代码。
|
|
111
57
|
|
|
112
58
|
---
|
|
113
59
|
|
|
114
|
-
##
|
|
115
|
-
|
|
116
|
-
以插件 `Config` 定义为准(`lib/index.js`):
|
|
117
|
-
|
|
118
|
-
| 配置项 | 类型 | 默认值 | 含义 |
|
|
119
|
-
| --- | --- | --- | --- |
|
|
120
|
-
| `root` | string | `~/.t-team/experts` | 专家名册目录,读 `experts/<分类>/<slug>.md` |
|
|
121
|
-
| `zhRoot` | string | `~/.t-team/zh` | 中文侧车目录(名字 / 简介 / 正文 / 分类标签) |
|
|
122
|
-
| `customRoot` | string | `~/.t-team/custom` | 自建专家目录(面板「新建专家」写这里,默认落 `custom` 分类,可在表单里另建分类;与 `root` 分开是硬要求) |
|
|
123
|
-
| `provider` | string | `"spawn"` | 召唤专家时使用的子代理 provider |
|
|
124
|
-
| `divisions` | string[] | `[]` | 留空 = 自动扫描 `root` 下所有含 `.md` 的分类目录 |
|
|
125
|
-
| `maxDepth` | natural | 无默认(不传则不加限制) | 传给子代理的嵌套深度上限 |
|
|
126
|
-
| `maxSummonBatch` | natural | `8` | 一次 `summon_t_experts` 最多几位专家 |
|
|
127
|
-
| `summonConcurrency` | natural | `4` | `summon_t_experts` 的并发度 |
|
|
128
|
-
| `summonTaskMaxChars` | natural | `8000` | 单个专家任务的字符上限 |
|
|
129
|
-
| `descriptionLimit` | natural | `120` | `list_t_experts` 里简介的截断长度 |
|
|
130
|
-
| `engineConfig` | string | `root` 同级目录下的 `t-team.config.json` | 团队引擎配置路径(`team-profiles.py` 的产物) |
|
|
131
|
-
| `stateDir` | string | `".agent-teams"` | 团队状态目录(相对工作区) |
|
|
132
|
-
| `memberProvider` | string | `"spawn"` | 队员子代理使用的 provider |
|
|
133
|
-
| `memberModel` | string | 不传 = 跟随队长 | 队员默认模型 |
|
|
134
|
-
| `maxMembers` | natural | `8` | 一支团队最多几名成员 |
|
|
135
|
-
|
|
136
|
-
> 这些都可以在 profile 的 `cordis.patch.yml` 里覆盖,例如:
|
|
137
|
-
>
|
|
138
|
-
> ```yaml
|
|
139
|
-
> - id: t-team
|
|
140
|
-
> name: 'dsh-plugin-t-expert'
|
|
141
|
-
> config:
|
|
142
|
-
> maxSummonBatch: 4
|
|
143
|
-
> stateDir: .my-team-state
|
|
144
|
-
> ```
|
|
145
|
-
>
|
|
146
|
-
> 注意 patch 行的 `config` 是**整体替换**而不是深合并,覆盖时要重述该行需要的每一个键。
|
|
147
|
-
|
|
148
|
-
**引擎配置:缺失 vs 损坏**。`engineConfig` 指向的文件不存在时(例如自定义了 `root`、还没生成过小队),插件正常加载,只是团队功能不可用 —— 原因会写进日志、由 `/t` 报出,并进入系统提示段让模型知道,不是静默跳过。而文件存在却解析失败、或 `profiles` 类型不对,属于自带数据的错配,插件会在**加载时直接失败**并指出路径与修法。
|
|
60
|
+
## 三、自建专家与分类
|
|
149
61
|
|
|
150
|
-
|
|
62
|
+
**新建专家**:设置 → 专家 → 「+ 新建专家」,选分类(官方 22 个或你自建的),填名称 / 简介 / 人格正文。
|
|
151
63
|
|
|
152
|
-
|
|
64
|
+
- 自建专家写在 `customRoot`(默认 `~/.t-team/custom/<分类>/<slug>.md`),**与随包发布的名册分开**:
|
|
65
|
+
内置名册升级时整棵替换,自建的不受影响。
|
|
66
|
+
- 归到官方分类名下是**允许且安全**的:分类只是归属,文件仍在 `customRoot`,内置名册一个字节不动。
|
|
67
|
+
- 自建专家自带中文(frontmatter 里的 `name` 就是显示名),不依赖中文侧车。
|
|
153
68
|
|
|
154
|
-
|
|
69
|
+
**新建分类**:设置 → 分类 → 填目录名(小写 ASCII)+ 显示名(中文)。
|
|
70
|
+
官方分类只读(名字与存亡随包内名册);删除自建分类时若里面还有专家会被拒绝,不会静默连删。
|
|
155
71
|
|
|
156
|
-
|
|
157
|
-
| --- | --- |
|
|
158
|
-
| `list_t_experts` | 列出**已启用**专家的分类与数量;传入分类名可列出该分类专家(用于挑出唯一的专家名) |
|
|
159
|
-
| `summon_t_expert` | 召唤 1 位专家:以该专家的完整人格跑一个子代理并返回结果(阻塞等待) |
|
|
160
|
-
| `summon_t_experts` | 并行召唤多位专家:最多 8 位、并发 4;部分失败时仍返回成功的结果 |
|
|
161
|
-
| `t_team_plan_check` | **只读** DAG 预检:把打算创建的一批团队任务先跑一遍引擎校验,一次报出全部问题、警示与建议执行顺序 |
|
|
72
|
+
---
|
|
162
73
|
|
|
163
|
-
|
|
74
|
+
## 四、工具与命令
|
|
164
75
|
|
|
165
|
-
|
|
76
|
+
| 工具 | 作用 |
|
|
77
|
+
| --- | --- |
|
|
78
|
+
| `list_t_experts` | 列出已启用专家的分类与数量;传分类名可列出该分类的专家 |
|
|
79
|
+
| `summon_t_expert` | 召唤 1 位专家:以它的完整人格跑一个子代理并返回结果 |
|
|
80
|
+
| `summon_t_experts` | 并行召唤多位(最多 8 位、并发 4;部分失败仍返回成功的结果) |
|
|
81
|
+
| `t_team_plan_check` | 只读 DAG 预检:一批团队任务先跑一遍引擎校验,一次报出全部问题 |
|
|
166
82
|
|
|
167
|
-
|
|
|
83
|
+
| 命令 | 行为 |
|
|
168
84
|
| --- | --- |
|
|
169
85
|
| `/t` | 列出所有小队(key、别名、人数、成员中文名) |
|
|
170
|
-
| `/t
|
|
171
|
-
| `/t
|
|
172
|
-
| `/t <一句话目标>` |
|
|
86
|
+
| `/t <小队\|别名>` | 选定小队,队长列出成员并问你目标 |
|
|
87
|
+
| `/t <小队\|别名> <目标>` | 拉起小队干活(先给成员与任务草案,你 review 后开跑) |
|
|
88
|
+
| `/t <一句话目标>` | 没匹配到小队名时,按目标自动挑最合适的小队 |
|
|
173
89
|
|
|
174
|
-
|
|
175
|
-
|
|
90
|
+
团队引擎另注册 **13 个 `t_team_*` 工具**(`t_team_create` 建队、`t_team_approve` 审批、
|
|
91
|
+
`t_team_create_task` 建任务、`t_team_reassign_task` 派发、`t_team_status` 看状态、`t_team_resume` 恢复等),
|
|
92
|
+
随插件一起提供;队长与成员各看到其中一个子集。
|
|
176
93
|
|
|
177
94
|
---
|
|
178
95
|
|
|
179
|
-
##
|
|
96
|
+
## 五、小队
|
|
180
97
|
|
|
181
|
-
|
|
98
|
+
设置 → 队伍 里搜索、修改成员 / 别名 / 启停,然后保存:改动写回 `~/.t-team/teams.json`,
|
|
99
|
+
再调用小队编译器生成引擎配置;**编译失败会自动回滚**,不会把坏定义留在盘上。
|
|
182
100
|
|
|
183
|
-
|
|
101
|
+
> ⚠️ **保存后要重启 DSH 才对建队生效**:`/t` 列表会立刻显示新小队,
|
|
102
|
+
> 但引擎配置在插件启动时就已载入,不重启用新小队建不了队。
|
|
184
103
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
3. **编译失败会自动回滚** `teams.json`(不会把坏定义留在盘上);
|
|
188
|
-
4. 缺 `python3` 时报错并回滚。
|
|
104
|
+
约束:小队 key 只能 ASCII `a-z0-9-`(中文放 `description` / `aliases`);每队 ≤ 8 人;小队总数 ≤ 48;
|
|
105
|
+
别名全局唯一;成员必须是名册里真实存在的专家。
|
|
189
106
|
|
|
190
|
-
|
|
191
|
-
> 不重启就建不了队(`/t 新队 目标` 会提示「小队不存在」)。
|
|
107
|
+
---
|
|
192
108
|
|
|
193
|
-
|
|
109
|
+
## 六、配置项
|
|
194
110
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
-
|
|
|
201
|
-
|
|
|
202
|
-
|
|
|
111
|
+
全部以插件 `Config` 定义为准(`lib/index.js`,共 15 项)。常用的几个:
|
|
112
|
+
|
|
113
|
+
| 配置项 | 默认值 | 含义 |
|
|
114
|
+
| --- | --- | --- |
|
|
115
|
+
| `root` | `~/.t-team/experts` | 名册目录 |
|
|
116
|
+
| `zhRoot` | `~/.t-team/zh` | 中文侧车目录 |
|
|
117
|
+
| `customRoot` | `~/.t-team/custom` | 自建专家目录(与 `root` 分开是硬要求) |
|
|
118
|
+
| `provider` | `"spawn"` | 召唤专家用的子代理 provider |
|
|
119
|
+
| `divisions` | `[]` | 留空=自动扫描 `root` 下所有含 `.md` 的分类 |
|
|
120
|
+
| `maxSummonBatch` / `summonConcurrency` | `8` / `4` | 批量召唤上限与并发 |
|
|
121
|
+
| `stateDir` / `memberProvider` / `memberModel` / `maxMembers` | — | 转给内置团队引擎 |
|
|
203
122
|
|
|
204
123
|
---
|
|
205
124
|
|
|
206
125
|
## 七、许可
|
|
207
126
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
各自的来源、版本与署名要求写在 `THIRD-PARTY-NOTICES` 里,**完整许可文本随包放在 `vendor/` 下**。
|
|
212
|
-
名册与引擎**不再从上游同步**:`data/experts/` 与 `lib/teams/` 现在就是本仓的真源 / 手工源码,
|
|
213
|
-
而上游项目的署名义务不因停止同步而消失,故这些声明必须保留。
|
|
214
|
-
再分发本插件(含修改版)时,请一并保留 `LICENSE`、`THIRD-PARTY-NOTICES` 与 `vendor/` 下的许可文本。
|
|
127
|
+
本插件 MIT(见 `LICENSE`)。随包分发的专家名册、中文译文与内置团队引擎各自按其原许可使用:
|
|
128
|
+
来源、版本与署名写在 `THIRD-PARTY-NOTICES`,完整许可文本随包放在 `vendor/`。
|
|
129
|
+
再分发(含修改版)时请一并保留这三样。
|
|
215
130
|
|
|
216
131
|
---
|
|
217
132
|
|
|
218
|
-
## 八、开发
|
|
133
|
+
## 八、开发
|
|
219
134
|
|
|
220
135
|
```bash
|
|
221
|
-
npm
|
|
222
|
-
npm run
|
|
223
|
-
|
|
224
|
-
npm run sync-data
|
|
136
|
+
npm run build # 构建客户端产物(lib/client.js)
|
|
137
|
+
npm run verify # 自检套件:插件契约、工具、remote、客户端产物、播种与快照,
|
|
138
|
+
# 外加「发布包自洽」(真打一份 tgz、解开、再用插件解析器读一遍)
|
|
139
|
+
npm run sync-data # 把运行时数据同步进包内 data/
|
|
225
140
|
```
|
|
226
141
|
|
|
227
|
-
>
|
|
228
|
-
>
|
|
229
|
-
> 的 `scripts` 以相对路径引用)。只 clone 本仓库是跑不了构建与自检的;要发布请使用完整的工作目录。
|
|
230
|
-
>
|
|
231
|
-
> 内置团队引擎(`lib/teams/`)是**手工维护的源码**:品牌化生成链与上游镜像已经移除(2026-09-12),
|
|
232
|
-
> 改引擎直接改 `lib/teams/*.js` 即可,不再有"改规则 → 重新生成"这一步。
|
|
233
|
-
|
|
234
|
-
---
|
|
142
|
+
> 这些 script 的实现不在本仓库:维护者的构建 / 自检脚本放在仓库同级的运维目录,
|
|
143
|
+
> 由 `package.json` 以 `node ../<file>.mjs` 引用。只 clone 本仓库跑不了构建与自检。
|
|
235
144
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
- **名册的增删(内置名册)**:`data/experts/` 就是真源(不再从上游拉取)。维护者用运维台
|
|
239
|
-
`bash ~/web/t-team/tz.sh 1` 新增:选分类(或新建分类)→ 给一个专家 `.md` 的路径 → 脚本把它
|
|
240
|
-
同时写进源码 `data/experts/<分类>/<slug>.md`(随包发布)与运行时 `~/.t-team/experts/<分类>/`(立即生效)。
|
|
241
|
-
删除走 `tz.sh 2`,统计 `tz.sh 3`,一致性校验 `tz.sh 5`。要求 `.md` 开头有 frontmatter
|
|
242
|
-
(`name` 与 `description` 必填,`emoji` 可选);没有 frontmatter 的文件可以在命令里用
|
|
243
|
-
`--name/--description` 补出来。分类名与插件扫描口径一致:`a-z 0-9 . -`,不以 `.` 开头。
|
|
244
|
-
- **自定义专家**:在 设置 → T专家 → 专家 里点「+ 新建专家」,填名称、简介与人格正文即可;自建的会在卡片上带「自建」标记,可以就地编辑或删除。
|
|
245
|
-
它们写在 `customRoot`(默认 `~/.t-team/custom/<分类>/<slug>.md`),**与随包发布的内置名册(`experts/`)分开**:内置名册是包的一部分,重装/升级会整棵替换,往里放文件会被覆盖掉。
|
|
246
|
-
- **自建分类**:表单里的「分类」下拉列出**全部分类**——官方 22 个(学术 / 金融 / 游戏 …)和你自建的都可以选;
|
|
247
|
-
选「+ 新建分类…」则填两个字段——**目录名**(小写 ASCII,成为 `~/.t-team/custom/<目录名>/`)与**显示名**(中文,记在 `<customRoot>/divisions.json`)。
|
|
248
|
-
设置页的 **分类** 标签页可以新建、改名、删除自建分类,并看到每个分类下有多少专家(含其中自建多少)。
|
|
249
|
-
- **把自建专家归到官方分类名下是允许的,也是安全的**:分类只是**归属**,文件永远写 `~/.t-team/custom/<分类>/<slug>.md`,
|
|
250
|
-
内置名册目录(`experts/`)一个字节都不会动,所以升级插件也不会把它删掉。官方分类本身只读——它的名字与存亡跟随包内名册,不接受本机改名或删除。
|
|
251
|
-
删除自建分类时若里面还有自建专家会被拒绝(先移走或删掉),不会静默连删。编辑时改分类=移动文件。
|
|
252
|
-
- 自建专家默认落在「自定义」分类,建好后记得启用;也能被 `/t` 小队挑成队员。
|
|
253
|
-
- 中文侧车(`zh/` 下的名字 / 简介 / 正文)的增删改都按 mtime 指纹自动重载,不需要重启;名册与自建专家同理。
|
|
254
|
-
- 包内快照只在数据目录**缺项**时播种。升级插件只更新包内快照,**不会覆盖你已有的数据目录内容**。
|
|
255
|
-
- 小队定义的改动需要重启 DSH 才对**建队**生效(见第五、六节)。
|
|
256
|
-
- 改插件代码后需要重新 `npm run build`(改了 `src/client.jsx` 才会重新生成客户端产物)并重装/重启。
|
|
257
|
-
- 团队引擎挂载失败时,团队相关功能不可用,但专家名册、`@` 召唤、`/t` 列表不受影响,失败原因由 `/t` 报出。
|
|
145
|
+
内置团队引擎(`lib/teams/`)是**手工维护的源码**,改引擎直接改这里;
|
|
146
|
+
名册(`data/experts/`)与中文侧车(`data/zh/`)就是发布源,两者都不再从任何上游同步。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-t-expert",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "T Expert — a 314-expert, 22-division roster with full Chinese translations, as a standalone DeepSeek Harness plugin, with a built-in multi-agent team engine (T Team).",
|
|
6
6
|
"license": "MIT",
|