dsh-plugin-t-expert 0.2.16 → 0.3.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 +71 -13
- package/THIRD-PARTY-NOTICES +18 -1
- package/lib/client.js +1303 -181
- package/lib/i18n.js +30 -0
- package/lib/index.js +153 -1
- package/lib/remote-schemas.js +76 -0
- package/lib/remote.js +161 -1
- package/lib/schedule.js +423 -0
- package/package.json +2 -1
- package/skills/t-expert-manager/SKILL.md +7 -1
- package/vendor/third-party-licenses/croner.LICENSE +22 -0
package/README.md
CHANGED
|
@@ -25,7 +25,8 @@ DeepSeek Harness 插件:**22 个分类 / 316 位专家**的名册(中文名
|
|
|
25
25
|
点一行即可跳到那个子代理的会话(与官方任务页同一个 `openSubagent` 接口)。
|
|
26
26
|
每行副标题显示该子代理的**请求文本前一段**(会话标题就是从它生成的),并标注运行中/已结束;
|
|
27
27
|
列表顺序沿用宿主子代理目录的原生次序——与官方任务页一致(快照里没有创建时间字段,不自造一种序)。
|
|
28
|
-
输入区 **T专家**
|
|
28
|
+
输入区 **T专家** 按钮弹开的浮层里有四个标签:**专家 → 小队 →(有运行中的团队时才出现)团队 → 任务**,
|
|
29
|
+
点开时默认停在**专家**标签(这个浮层主要就是用来挑专家的)。
|
|
29
30
|
|
|
30
31
|
---
|
|
31
32
|
|
|
@@ -69,6 +70,7 @@ dsh plugin --profile web add dsh-plugin-t-expert
|
|
|
69
70
|
├── zh/ 中文侧车:names.json、descriptions.json、<分类>/<slug>.md、divisions.json
|
|
70
71
|
├── custom/ 你在面板里自建的专家
|
|
71
72
|
├── teams.json 小队定义(设置页「队伍」写回这里)
|
|
73
|
+
├── schedule.json 定时任务:任务、cron 表达式与最近 20 次执行记录
|
|
72
74
|
├── t-team.config.json 小队编译产物(引擎配置,人格已内联)
|
|
73
75
|
├── teams.resolved.json 小队编译产物(/t 列表用)
|
|
74
76
|
├── team-profiles.py 小队编译器的播种副本(实际跑的是包内那份)
|
|
@@ -86,10 +88,65 @@ dsh plugin --profile web add dsh-plugin-t-expert
|
|
|
86
88
|
- 一句话:**送得到的送到,送不到的一定出声**(日志里给出数量与例子,删掉对应文件后重启即可重新播种)。
|
|
87
89
|
- 唯一始终用包内那份的是小队编译器 `team-profiles.py`——它是代码,随插件版本走。
|
|
88
90
|
- 想换目录位置,用配置项 `root` / `zhRoot` / `customRoot` 覆盖即可,不必改代码。
|
|
91
|
+
- `schedule.json` 是**定时任务自己的数据文件**(见第三节):它在数据根下、与 `teams.json` 同级,
|
|
92
|
+
刻意不写进宿主的存储域,也不与其它定时插件(例如 `@weibaohui/dsh-tasks`)共享任何文件。
|
|
89
93
|
|
|
90
94
|
---
|
|
91
95
|
|
|
92
|
-
##
|
|
96
|
+
## 三、定时任务
|
|
97
|
+
|
|
98
|
+
到点自动**新开一个会话**、把提示词交给它执行——也可以随时手动「立即执行」。
|
|
99
|
+
|
|
100
|
+
**入口在哪**:Web UI 左侧栏**「新会话」按钮正下方**那一行「定时任务」(与「新会话」同款按钮外观:
|
|
101
|
+
38px 高、12px 圆角、同样的边框与抬升填充;侧栏收起时退回图标态)。
|
|
102
|
+
点开后在**右侧主区域**直接显示管理页(不是设置弹窗里的一个小节)。点左侧任意会话即回到会话视图。
|
|
103
|
+
|
|
104
|
+
**能做什么**:
|
|
105
|
+
|
|
106
|
+
| 能力 | 说明 |
|
|
107
|
+
| --- | --- |
|
|
108
|
+
| cron 定时执行 | 每条 = 标题 + 提示词 + 五段 croner 表达式(`分 时 日 月 周`) |
|
|
109
|
+
| 结构化选择器 | 快捷模板(每小时整点 / 每 30 分钟 / 每天 9:00 / 工作日 8:30 / 每周一 10:00);按「每小时 / 每天 / 每周 / 自定义」逐级选;周几多选;也可直接写原始表达式 |
|
|
110
|
+
| 实时预览 | 选定后在面板上显示**最近 5 次执行时间**(由宿主用 croner 计算,保存前就能确认周期对不对) |
|
|
111
|
+
| 立即执行 | 任意一条都能一键跑一次,不必等 cron 到点 |
|
|
112
|
+
| 绑定工作区 | 可选;绑定后会话挂到该工作区并继承其目录,执行记录里也会标出工作区 |
|
|
113
|
+
| 会话自动命名 | 执行出来的会话叫「任务标题 · MM-DD HH:mm」,同一任务多次运行在侧栏里能一一区分 |
|
|
114
|
+
| 执行记录 | 每条保留最近 20 次(时间、成败、失败原因、会话 id),可展开追溯 |
|
|
115
|
+
| 启用/停用 | 停用的事项保留数据但不再定时触发 |
|
|
116
|
+
| 点名专家 | 提示词框下面有「🧩 T专家」按钮:浮层只列**已启用**专家(可搜、可键盘选),选中后把 `@专家名` 填进提示词 —— 与对话输入框里那个专家芯片同一形态。**可以点选多位**(列表里打勾标记,再点一次即取消) |
|
|
117
|
+
|
|
118
|
+
**点名专家怎么生效**:提示词开头的 `@A @B …` 在到点执行时由宿主改写成一句明确的召唤指令,并把这些
|
|
119
|
+
提及从正文里摘掉:**点名一位**用 `summon_t_expert`,**点名多位**改用 `summon_t_experts` 批量并行召唤。
|
|
120
|
+
之所以要改写:新会话没有对话输入框那套引用芯片机制,光留几个名字模型不一定会去请人。
|
|
121
|
+
名字判据是中文名 / 英文名 / slug 三种都认(互为子串时取更长的那个),**不在已启用名册里就原样提交、
|
|
122
|
+
绝不猜**;面板会实时显示「到点执行时会召唤「X」」或「会同时召唤「X、Y」」,重复挑选同一位是
|
|
123
|
+
**取消**而不是叠加。
|
|
124
|
+
|
|
125
|
+
**到点执行会发生什么**:新建会话 → 挂载部署的默认 agent preset(不挂 preset 的新会话没有工具)→
|
|
126
|
+
写入会话标题 → 以 **插件来源**(`plugin: dsh-plugin-t-expert`)提交你的提示词。
|
|
127
|
+
绑定工作区的工作区若已被删除,这次执行会记一条失败原因,不会静默。
|
|
128
|
+
|
|
129
|
+
**功能开关**:设置 → T专家 → 「显示定时任务按钮」(在「显示任务徽章」下面)。
|
|
130
|
+
**关掉它不是仅仅藏按钮**:宿主会**同时停掉全部定时触发**,手动执行也会被拒;任务与执行记录完整保留,
|
|
131
|
+
重新打开立刻按 stored 状态恢复调度。这样做是为了不出现「以为关了、其实 cron 还在后台开新会话」。
|
|
132
|
+
|
|
133
|
+
**与 `@weibaohui/dsh-tasks` 的关系(可同时安装、同时使用)**:
|
|
134
|
+
|
|
135
|
+
| 维度 | 本插件 | `@weibaohui/dsh-tasks` |
|
|
136
|
+
| --- | --- | --- |
|
|
137
|
+
| 数据 | `~/.t-team/schedule.json` | 宿主存储域 `dsh_tasks` |
|
|
138
|
+
| 侧栏入口 | `sidebar.panellist`(id `t-team-schedule`,「新会话」下方那一组) | 设置面板内的 section |
|
|
139
|
+
| 右侧页面 | `main` 槽 keyed 面板(key `t-team-schedule`) | 同上(设置内一节) |
|
|
140
|
+
| remote 服务 | `tTeam` / `tTeamSchedule` | 自有 HTTP 路由 `/dsh-tasks/api` |
|
|
141
|
+
| 消息来源 | `plugin: dsh-plugin-t-expert` | `plugin: dsh-tasks` |
|
|
142
|
+
| locale 命名空间 | `t-team`(键前缀 `sched.`) | `settings.dshTasks` |
|
|
143
|
+
| CSS 前缀 | `t-team-sched-*` | `si-*` |
|
|
144
|
+
|
|
145
|
+
两者各跑各的定时器、各存各的任务,互不可见也互不干扰;只有 croner 是共用依赖(各装各的)。
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 四、自建专家与分类
|
|
93
150
|
|
|
94
151
|
**新建专家**:设置 → 专家 → 「+ 新建专家」,选分类(官方 22 个或你自建的),填名称 / 简介 / 人格正文。
|
|
95
152
|
|
|
@@ -103,7 +160,7 @@ dsh plugin --profile web add dsh-plugin-t-expert
|
|
|
103
160
|
|
|
104
161
|
---
|
|
105
162
|
|
|
106
|
-
##
|
|
163
|
+
## 五、工具与命令
|
|
107
164
|
|
|
108
165
|
| 工具 | 作用 |
|
|
109
166
|
| --- | --- |
|
|
@@ -145,7 +202,7 @@ Host/Origin 校验与浏览器认证,静态资源另有白名单,非白名
|
|
|
145
202
|
|
|
146
203
|
---
|
|
147
204
|
|
|
148
|
-
##
|
|
205
|
+
## 六、小队
|
|
149
206
|
|
|
150
207
|
设置 → 队伍 里搜索、修改成员 / 别名 / 启停,然后保存:改动写回 `~/.t-team/teams.json`,
|
|
151
208
|
再调用小队编译器生成引擎配置;**编译失败会自动回滚**,不会把坏定义留在盘上。
|
|
@@ -157,7 +214,7 @@ Host/Origin 校验与浏览器认证,静态资源另有白名单,非白名
|
|
|
157
214
|
- 引擎重载本身失败时会留下可诊断的信号(日志里有 `[t-team]` 的 error/warn),
|
|
158
215
|
并且报错时会带着原因说清引擎当前是否可用,不会静默假装已生效。
|
|
159
216
|
|
|
160
|
-
约束:小队 key 只能 ASCII `a-z0-9-`(中文放 `description` / `aliases`);每队 ≤ `maxMembers`(默认 8
|
|
217
|
+
约束:小队 key 只能 ASCII `a-z0-9-`(中文放 `description` / `aliases`);每队 ≤ `maxMembers`(默认 8,见「七、配置项」);
|
|
161
218
|
小队总数 ≤ 48;别名全局唯一;成员必须是名册里真实存在的专家。
|
|
162
219
|
> 成员上限由插件透传给小队编译器(`data/team-profiles.py --max-members`),两边同一个真源:
|
|
163
220
|
> 改 `maxMembers` 就能真正生效,不必再动编译器。只有在用**旧版本**编译器(不认这个参数)时,
|
|
@@ -165,7 +222,7 @@ Host/Origin 校验与浏览器认证,静态资源另有白名单,非白名
|
|
|
165
222
|
|
|
166
223
|
---
|
|
167
224
|
|
|
168
|
-
##
|
|
225
|
+
## 七、配置项
|
|
169
226
|
|
|
170
227
|
全部以插件 `Config` 定义为准(`lib/index.js`,共 15 项)。常用的几个:
|
|
171
228
|
|
|
@@ -178,24 +235,25 @@ Host/Origin 校验与浏览器认证,静态资源另有白名单,非白名
|
|
|
178
235
|
| `divisions` | `[]` | 留空=自动扫描 `root` 下所有含 `.md` 的分类 |
|
|
179
236
|
| `maxSummonBatch` / `summonConcurrency` | `8` / `4` | 批量召唤上限与并发 |
|
|
180
237
|
| `stateDir` | `.agent-teams` | 团队状态目录(**工作区内的相对路径**),团队状态落在 `<工作区>/<stateDir>/<teamId>/`。内置团队引擎、设置页「队伍」标签与只读预检工具 `t_team_plan_check` 都按它定位团队——**三处都读这一个字段**,不存在第二来源(自检 8f 有静态 + 行为双断言兜着)。要挪团队状态目录只改这里 |
|
|
181
|
-
| `memberProvider` / `memberModel` / `maxMembers` | — | 转给内置团队引擎;`maxMembers`
|
|
238
|
+
| `memberProvider` / `memberModel` / `maxMembers` | — | 转给内置团队引擎;`maxMembers` 还由插件透传给小队编译器(见「六、小队」) |
|
|
182
239
|
|
|
183
240
|
---
|
|
184
241
|
|
|
185
|
-
##
|
|
242
|
+
## 八、许可
|
|
186
243
|
|
|
187
|
-
本插件 MIT(见 `LICENSE
|
|
244
|
+
本插件 MIT(见 `LICENSE`)。随包分发的专家名册、中文译文、内置团队引擎,以及**运行时依赖**
|
|
245
|
+
`croner`(定时任务的 cron 解析与调度)各自按其原许可使用:
|
|
188
246
|
来源、版本与署名写在 `THIRD-PARTY-NOTICES`,完整许可文本随包放在 `vendor/`。
|
|
189
|
-
|
|
247
|
+
再分发(含修改版)时请一并保留这四样。
|
|
190
248
|
|
|
191
249
|
---
|
|
192
250
|
|
|
193
|
-
##
|
|
251
|
+
## 九、开发
|
|
194
252
|
|
|
195
253
|
```bash
|
|
196
254
|
npm install # 装开发期依赖(.npmrc 里开了 legacy-peer-deps,原因见该文件)
|
|
197
255
|
npm run typecheck # 类型检查(tsconfig.json 只覆盖自研 Host 文件,不碰并入的引擎)
|
|
198
|
-
npm run verify # 自检套件(现
|
|
256
|
+
npm run verify # 自检套件(现 601 项断言):插件契约、工具、remote、客户端产物、播种与快照,
|
|
199
257
|
# 外加「发布包自洽」(真打一份 tgz、解开、再用插件解析器读一遍)
|
|
200
258
|
npm run invariants # 引擎不变量门禁:真 cordis + 真 lib/teams + 桩 Agent,只报「违反集 D」
|
|
201
259
|
npm run build # 构建客户端产物(lib/client.js)
|
|
@@ -228,7 +286,7 @@ npm run sync-data # 把运行时数据同步进包内 data/
|
|
|
228
286
|
| 聚合项 | 说明 |
|
|
229
287
|
| --- | --- |
|
|
230
288
|
| 引擎不变量 | 本文件的 9 条(真 cordis + 真 `lib/teams` + 桩 Agent) |
|
|
231
|
-
| 插件契约 | 以**黑盒**调用 `tools/verify.mjs`(
|
|
289
|
+
| 插件契约 | 以**黑盒**调用 `tools/verify.mjs`(527 项),只取退出码与摘要行 |
|
|
232
290
|
| 宿主 skill 漂移 | `tools/skill-drift.mjs`(它现在也能独立跑:有漂移即退出码 1) |
|
|
233
291
|
| 数据快照一致 | `tools/sync-data.mjs --check`(**源目录不存在时显式记 SKIP**,不算违反) |
|
|
234
292
|
|
package/THIRD-PARTY-NOTICES
CHANGED
|
@@ -59,7 +59,23 @@
|
|
|
59
59
|
`data/zh/manual.json` 与 `data/zh/manual-bodies/` 是**本项目的补充翻译**(用于补齐尚未覆盖的条目
|
|
60
60
|
或在译文不准确时覆盖),随本插件以 MIT 发布,同样保留在包内。
|
|
61
61
|
|
|
62
|
-
## 3.
|
|
62
|
+
## 3. 定时任务调度器(运行时依赖)
|
|
63
|
+
|
|
64
|
+
| 项 | 值 |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| 上游包 | [`croner`](https://www.npmjs.com/package/croner) |
|
|
67
|
+
| 上游仓库 | https://github.com/Hexagon/croner |
|
|
68
|
+
| 版本 | `^9.1.0`(`package.json` 的 `dependencies`) |
|
|
69
|
+
| 许可 | MIT — Copyright (c) 2015-2021 Hexagon <github.com/Hexagon> |
|
|
70
|
+
| 位置 | **不作为源码内联**:按普通 npm 依赖安装(`node_modules/croner`),由 `lib/schedule.js` 在运行期 `import { Cron }` |
|
|
71
|
+
| 许可全文 | `vendor/third-party-licenses/croner.LICENSE`(随包分发,便于再分发者与离线安装核对) |
|
|
72
|
+
|
|
73
|
+
用途:T专家 的定时任务(cron 表达式解析、下次触发时间预览、定时器)由它提供;本插件不修改其源码。
|
|
74
|
+
|
|
75
|
+
> 与 `@weibaohui/dsh-tasks` 的关系:两者都用 `croner`,但**各自声明依赖、各装各的**,
|
|
76
|
+
> 数据文件、服务名与定时器互不共享(见 README 的「定时任务」一节)。
|
|
77
|
+
|
|
78
|
+
## 4. 分发要求
|
|
63
79
|
|
|
64
80
|
再分发本插件(或其修改版)时请一并保留以下文件(它们都在 npm 包内):
|
|
65
81
|
|
|
@@ -68,3 +84,4 @@
|
|
|
68
84
|
- `vendor/dsh-agent-teams/LICENSE`(内置团队引擎)
|
|
69
85
|
- `vendor/third-party-licenses/agency-agents.LICENSE`(英文名册)
|
|
70
86
|
- `vendor/third-party-licenses/agency-agents-zh.LICENSE`(中文译文)
|
|
87
|
+
- `vendor/third-party-licenses/croner.LICENSE`(定时任务调度器,运行时依赖)
|