dsh-plugin-tool-management 0.5.1 → 0.7.0
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/CHANGELOG.md +131 -0
- package/README.md +185 -238
- package/README_EN.md +185 -304
- package/cordis.patch.yml +9 -55
- package/docs/images/1/345/234/272/346/231/257.png +0 -0
- package/docs/images/1/345/234/272/346/231/257_en.png +0 -0
- package/docs/images/2MCP.png +0 -0
- package/docs/images/2MCP_en.png +0 -0
- package/docs/images/3/346/212/200/350/203/275.png +0 -0
- package/docs/images/3/346/212/200/350/203/275_en.png +0 -0
- package/docs/images/4/345/255/220/346/231/272/350/203/275/344/275/223.png +0 -0
- package/docs/images/4/345/255/220/346/231/272/350/203/275/344/275/223_en.png +0 -0
- package/docs/images/5/346/217/220/347/244/272/350/257/215.png +0 -0
- package/docs/images/5/346/217/220/347/244/272/350/257/215_en.png +0 -0
- package/docs/images/6/350/256/260/345/277/206.png +0 -0
- package/docs/images/6/350/256/260/345/277/206_en.png +0 -0
- package/docs/images/7/344/274/232/350/257/235.png +0 -0
- package/docs/images/7/344/274/232/350/257/235_en.png +0 -0
- package/docs/images/8/345/205/274/345/256/271.png +0 -0
- package/docs/images/8/345/205/274/345/256/271_en.png +0 -0
- package/docs/update.md +55 -0
- package/lib/agents-md/preset-id.js +49 -0
- package/lib/agents-md/service.js +180 -57
- package/lib/client.js +4710 -3560
- package/lib/compat/preset-reach.js +425 -0
- package/lib/compat/probe.js +665 -0
- package/lib/history/bridge.js +293 -0
- package/lib/history/workspace.js +498 -52
- package/lib/http-fence.js +94 -0
- package/lib/hub.js +160 -2
- package/lib/index.js +759 -157
- package/lib/mcp/override-blocks.js +195 -0
- package/lib/rules/provider.js +3 -3
- package/lib/rules/service.js +342 -31
- package/lib/scene-prompt-sync.js +112 -0
- package/lib/skills/core.js +123 -35
- package/lib/skills/service.js +9 -1
- package/lib/subagents/service.js +197 -23
- package/lib/subagents/tools.js +8 -2
- package/package.json +6 -3
- package/screenshots.json +10 -9
- package/docs/Changelog.md +0 -517
- package/docs/images/MCP.png +0 -0
- package/docs/images//344/274/232/350/257/235.png +0 -0
- package/docs/images//345/234/272/346/231/257.png +0 -0
- package/docs/images//345/255/220/346/231/272/350/203/275/344/275/223.png +0 -0
- package/docs/images//346/212/200/350/203/275.png +0 -0
- package/docs/images//346/217/220/347/244/272/350/257/215.png +0 -0
- package/docs/images//350/256/260/345/277/206.png +0 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# 变更日志
|
|
2
|
+
|
|
3
|
+
本文件记录本项目的所有重要变更。
|
|
4
|
+
|
|
5
|
+
格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循[语义化版本](https://semver.org/lang/zh-CN/)。
|
|
6
|
+
|
|
7
|
+
- 只想看「大致改了什么」→ [版本更新概要](docs/update.md)
|
|
8
|
+
- 功能说明与用法 → [README](README.md) / [README_EN](README_EN.md)
|
|
9
|
+
- 工程细节(根因分析、实测数据、设计取舍)在 git 历史里,不在这里。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## [0.7.0] - 2026-09-15
|
|
14
|
+
|
|
15
|
+
### 新增
|
|
16
|
+
|
|
17
|
+
- 回收站扩到子智能体 / 场景 / 提示词预设三处:删除都进回收站,可恢复或永久删除(恢复绝不覆盖)。
|
|
18
|
+
- 子智能体工具限制改为按 Agent 预设:每个预设一份白/黑名单(互相排斥),运行期按当前预设生效。
|
|
19
|
+
- 兼容页「预设注入边界」改版:五列标签(记忆 / 提示词 / 技能 / MCP / 子智能体),绿/红/灰框一眼看出哪个域被预设关掉。
|
|
20
|
+
|
|
21
|
+
### 变更
|
|
22
|
+
|
|
23
|
+
- 已移除的来源并入回收站(分目录/技能两部分,目录支持永久删除)。
|
|
24
|
+
- 五处回收站排版统一(固定高度容器、行内边距收紧)。
|
|
25
|
+
- MCP「整理补丁」重新上线:删多余启停覆盖块(生效状态不变),界面只留一个按钮。
|
|
26
|
+
|
|
27
|
+
### 修复
|
|
28
|
+
|
|
29
|
+
- 技能页「移除来源 / 恢复读取」死按钮:补客户端 op 映射 + 补进 writeOps 门禁清单。
|
|
30
|
+
- `rules-toggle` 不传 `enabled` 时静默 no-op 却返回成功:改为缺参明确拒绝、不写盘。
|
|
31
|
+
- 场景档案「技能集」把来源 key 当技能名显示:改为技能名与来源名分开回传,不再显示 `custom-<hash>`。
|
|
32
|
+
|
|
33
|
+
### 安全
|
|
34
|
+
|
|
35
|
+
- 明文密钥改为一律要令牌:「显示密钥」与配置导出没配 `token` 时一律拒绝,不再只靠宿主栅栏。
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## [0.6.0] - 2026-09-14
|
|
40
|
+
|
|
41
|
+
### 新增
|
|
42
|
+
|
|
43
|
+
- 「工具 → 兼容」页(第 8 个页签,只读):宿主版本、能力可用数、每个动作走原生/适配/不可用、降级项与原因。
|
|
44
|
+
- `node scripts/doctor.mjs`:命令行版兼容体检。
|
|
45
|
+
- `node scripts/host-deps.mjs --fix/--restore`:把插件依赖 junction 到宿主安装。
|
|
46
|
+
- 归档分组可重建:工作区登记被删后按会话目录自动重建,可一键重新登记。
|
|
47
|
+
- 恢复归档顺带挂回工作区归属(此前会掉进「未分组」)。
|
|
48
|
+
- 场景可绑定提示词预设;切换场景直接改写 `~/.dsh/AGENTS.md`(关掉自动恢复基线)。
|
|
49
|
+
- 提示词预设库:新建即可写正文、编辑可改 id(= 目录改名,场景绑定自动跟着改)。
|
|
50
|
+
- 正在生效的提示词预设不能删除。
|
|
51
|
+
- 场景启用改单选(同时只启用一个,新场景默认不启动)。
|
|
52
|
+
|
|
53
|
+
### 变更
|
|
54
|
+
|
|
55
|
+
- 兼容判定换底座:源码文本比对 → 模块实体 + 能力探测;拒绝永远在写入之前。
|
|
56
|
+
- 技能来源权限语义修正:默认来源必须读取但技能可删;外部目录可停用/移除但技能只读。
|
|
57
|
+
- 用户数据搬出插件目录(归档账本等移入 hub)。
|
|
58
|
+
- 归档服务改为独立门面:`cordis.patch.yml` 只插入本插件。
|
|
59
|
+
- 弹窗按钮统一(取消/关闭只在右上角)。
|
|
60
|
+
- 面板语言跟随宿主;会话页与 AGENTS.md 页接入中英词典。
|
|
61
|
+
- AGENTS.md 应用保留 5 代备份。
|
|
62
|
+
- 提示词预设 id 口径放宽(中文、空格等可用)。
|
|
63
|
+
- `history-retention-set` 拒绝小数;`rules-set-active` 必须显式传参;`mcpm-set-enabled` 停用幂等。
|
|
64
|
+
- 写操作门禁:先过宿主栅栏,`token` 作为脚本/局域网逃生门。
|
|
65
|
+
|
|
66
|
+
### 修复
|
|
67
|
+
|
|
68
|
+
- 进出场景模式会静默改写技能策略(数据污染):快照只取生效项,已处于目标状态的不再写。
|
|
69
|
+
- 导入技能删进回收站拿不回来:按作用域分岔,用户级来源按 key 重新解析路径。
|
|
70
|
+
- 技能回收站显示字面量 `undefined`。
|
|
71
|
+
- 面板不随宿主语言切换、两页硬编码中文、词条键写错导致界面露原始键名。
|
|
72
|
+
- `subagent_run` 确认门早于参数校验:人设不存在时不再先弹卡。
|
|
73
|
+
- 删除链路前置实现检查:在任何破坏性步骤之前校验所需方法。
|
|
74
|
+
- 英文界面下兼容页结论条仍是中文:改为客户端按当前语言拼。
|
|
75
|
+
- 两处过时文案(AGENTS.md 应用说明、创建技能确认卡落点)。
|
|
76
|
+
|
|
77
|
+
### 安全
|
|
78
|
+
|
|
79
|
+
- `mcpm-reveal` / `mcpm-export` 额外要求带 `Origin` 头。
|
|
80
|
+
- `history-workspace-register` 补入 WRITE_OPS(此前漏了 token 门禁)。
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## [0.5.1] - 2026-09-13
|
|
85
|
+
|
|
86
|
+
### 新增
|
|
87
|
+
|
|
88
|
+
- 场景档案弹窗新加段默认一项都不勾:记忆段只预勾本场景已启用的,其余三段是空集。
|
|
89
|
+
|
|
90
|
+
### 变更
|
|
91
|
+
|
|
92
|
+
- 档案弹窗「记忆」段只列被编辑场景自己的记忆。
|
|
93
|
+
- 场景页排版重做:卡片只留名字+描述+动作,数量收进页首「当前模式」条。
|
|
94
|
+
- 保留场景「全局」不再出现在场景页与档案弹窗。
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## [0.5.0] - 2026-09-13
|
|
99
|
+
|
|
100
|
+
### 新增
|
|
101
|
+
|
|
102
|
+
- 插件自有技能来源「导入技能」(新建/导入落点,优先级高于 `~/.dsh/skills/`)。
|
|
103
|
+
- 「移除来源」= 连目录都不再扫描(文件零改动,可恢复)。
|
|
104
|
+
- 场景档案编辑器新增第 4 段「记忆」。
|
|
105
|
+
- 人设模型与工具限制收进「高级选项」折叠区。
|
|
106
|
+
|
|
107
|
+
### 变更
|
|
108
|
+
|
|
109
|
+
- **破坏性**:插件产生的文件全部收进 `~/.dsh/tool-management/`(旧位置自动搬入)。
|
|
110
|
+
- 场景升级为显式记录(带描述与顺序);空场景合法;根层裸 `.md` 不再注入。
|
|
111
|
+
- 斜杠命令全部下线。
|
|
112
|
+
|
|
113
|
+
### 修复
|
|
114
|
+
|
|
115
|
+
- 工具页整页白屏(`sceneLabel` 闭包作用域错)。
|
|
116
|
+
- 导出静默丢失(导出写在 `apply` 体内)。
|
|
117
|
+
- Skills 页被锁死(状态文件缺键被判非法 → 改为缺键自愈)。
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## [0.2.0] - 2026-09-12
|
|
122
|
+
|
|
123
|
+
### 新增
|
|
124
|
+
|
|
125
|
+
- 五个域合并进一个「工具」设置面板:MCP / Skills / AGENTS.md 预设 / History。
|
|
126
|
+
- MCP:工具级独立启停、重启只重连不改启停、密钥默认打码、改写补丁前自动 `.bak`(保留 5 份)。
|
|
127
|
+
- Skills:接入 `~/.agents` / `~/.codex` / `~/.claude` 与自定义目录;创建 / ZIP 导入 / 回收站;目录后台监听自动刷新。
|
|
128
|
+
- AGENTS.md 预设库:多套全局基线,一键应用。
|
|
129
|
+
- History:归档会话按项目分组、批量恢复 / 删除、保留期清理;从 Claude Code / Cursor / Codex / 任意文本导入;导出 Markdown / JSONL。
|
|
130
|
+
|
|
131
|
+
> 0.1.1 / 0.1.2 / 0.1.3 没有独立记录(只有 git tag),此处不拆分它们的差异。
|
package/README.md
CHANGED
|
@@ -1,238 +1,185 @@
|
|
|
1
|
-
# dsh-plugin-tool-management
|
|
2
|
-
|
|
3
|
-
[](https://www.npmjs.com/package/dsh-plugin-tool-management)
|
|
4
|
-
[](LICENSE)
|
|
5
|
-
[](package.json)
|
|
6
|
-
[](https://github.com/ouli-1242/dsh-plugin-tool-management)
|
|
7
|
-
[](https://dsh.market/)
|
|
8
|
-
|
|
9
|
-
**简体中文** · [English](README_EN.md) · [Changelog](docs/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
|
51
|
-
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
|
|
115
|
-
###
|
|
116
|
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
| 记忆索引 / 场景记录 / 启用场景 | `~/.dsh/tool-management/rules-index.json`(`enabled`/排序/标签 + `scenes` 场景记录(label/描述/顺序)+ `active` 启用场景集合(`null` = 全部启用)+ `archives` 场景档案勾选集 + `mode` 当前模式快照) |
|
|
187
|
-
| 人设文件(真源) | `~/.dsh/tool-management/agents/<人设>.md`(frontmatter 可选,正文 = 人设提示词) |
|
|
188
|
-
| 页面设置 / 确认开关 | `~/.dsh/dsh-plugin-tool-management-settings.json`(`requireConfirmForModelSubagentRun` 等) |
|
|
189
|
-
| 记忆回收站 | `~/.dsh/tool-management/rules-trash/<trashId>/`(删除记忆先进这里,可恢复) |
|
|
190
|
-
| 运行日志 | `~/.dsh/dsh-plugin-tool-management.log`(滚动) |
|
|
191
|
-
|
|
192
|
-
## 常见问题
|
|
193
|
-
|
|
194
|
-
| 现象 | 解决 |
|
|
195
|
-
|---|---|
|
|
196
|
-
| 装完设置里没有页面 | 硬刷新;不行就重启 DSH。 |
|
|
197
|
-
| 出现重复的 MCP 页签 / 工具 | 与旧 loader 行双挂载,删掉 `cordis.patch.yml` 里的旧条目后重启。 |
|
|
198
|
-
| 改坏了配置 DSH 起不来 | 同目录取最近的 `cordis.patch.yml.bak-<时间戳>` 恢复。 |
|
|
199
|
-
| 页面数据不刷新 | 等待页面自动轮询(默认 5 秒);或手动点「刷新」。 |
|
|
200
|
-
| 镜像源装不到最新版 | 加 `--registry=https://registry.npmjs.org` 稍后再试。 |
|
|
201
|
-
| 完全权限(`approval=never`)下还需要确认吗? | **不需要,也不会弹卡**:三个确认门(`rule_manager_write` / `skill_manager_create` / `subagent_run`)在 never 会话里被视作「用户已预先批准」,直接放行,并在 `~/.dsh/dsh-plugin-tool-management.log` 记一条 `confirm-bypass` 留痕。想让它们重新问一次,就把访问模式切回「工作区内修改」;只想关掉某一项,用插件设置里的 `requireConfirmForModel*` 开关。 |
|
|
202
|
-
| `subagent_run` 报「spawn provider 不可用」 | **条件式**:宿主自带 `spawn` provider(最新版无需装包、无需挂载),只有宿主确实没注册、且本插件也挂载不了 `@deepseek-ai/dsh-subagent-spawn-in-process` 时才会出现(错误文本里带原始原因,多见于旧版或特定 profile)。此时在宿主 profile 里挂载该包后重启 DSH——本插件不把它写进 `cordis.patch.yml`,以免缺包的宿主整棵树起不来(取舍见该文件注释)。 |
|
|
203
|
-
| 场景里只绑了 A 人设,为什么模型还是跑起了没绑定的子代理? | **子代理有两条通道**。本插件的 `subagent_run` 走确认门 + 场景人设绑定;DSH 官方的 `subagent` / `subagent_fork` 是宿主能力,**没有确认门、也没有「用哪个人设」的概念**,因此任何模式下都不受本插件的确认与绑定约束(实测:同一条消息里官方 `subagent` 无审批卡直接返回,紧接着的 `subagent_run` 才弹卡;`subagent_fork` 同样无卡)。本插件的治理只覆盖 `subagent_run`;要收紧官方那两个通道得由宿主侧约定或后续版本把它们纳入插件前裁决。 |
|
|
204
|
-
|
|
205
|
-
## 开发
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
npm install
|
|
209
|
-
npm run build # 构建(tsc + 同步客户端 bundle)
|
|
210
|
-
npm run build:client # 只同步 src/client.js → lib/client.js
|
|
211
|
-
npm run lint # 语法自检(node --check 两个产物)
|
|
212
|
-
npm run check:i18n # 中英词典键集合 + 占位符对齐
|
|
213
|
-
npm test # 构建 + i18n 自检 + 全部语义契约测试(node --test test/*.test.mjs,11 组 85 例)
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
> 本项目的验证方式是**直接跑一遍真实行为**(验收证据与已知问题见 [Changelog](docs/Changelog.md)),而不是断言代码当前怎么实现——
|
|
217
|
-
> 后者只是把实现抄一遍,必然通过。例外是十一组**语义契约**测试(`npm test`,跑 `lib/` 产物,共 85 例):
|
|
218
|
-
> `archive.test.mjs`(引擎状态机:勾=启用、空段可持久化、失败回滚与如实上报)、
|
|
219
|
-
> `import.test.mjs`(导入展开、落点规划与限额回报)、
|
|
220
|
-
> `approval-policy.test.mjs`(never 审批策略探测;用真实 cordis + 真实 `ApprovalService` 复现读取链)、
|
|
221
|
-
> `subagent-scene.test.mjs`(场景绑定必须在子代理运行**之前**拒绝)、
|
|
222
|
-
> `subagent-persona.test.mjs`(人设 frontmatter 往返:`provider`/`model`/`toolsDeny` 读写不丢;目录不存在时创建)、
|
|
223
|
-
> `hub-layout.test.mjs`(统一数据目录:旧布局搬移不覆盖、保留场景 global 恒在且不可删、记忆必须归属已存在场景、档案记忆段只影响投影)、
|
|
224
|
-
> `skills-delete.test.mjs`(哪些技能可以删:用户级来源不可删、只读来源仍只读)、
|
|
225
|
-
> `skills-state.test.mjs`(技能状态文件读取韧性:缺键自愈、类型错仍 fail-closed)、
|
|
226
|
-
> `skills-source-remove.test.mjs`(「移除来源」语义:移除后技能不再被读取、不参与同名优先级、模型侧候选也看不到,而文件零改动、可恢复)、
|
|
227
|
-
> `client-exports.test.mjs`(**客户端导出契约**:只求值 factory 不跑 `apply` 也能拿到 `dict`/`pages`;禁止把导出写在 `apply` 方法体里)、
|
|
228
|
-
> `client-render.test.mjs`(**装配与渲染**:假 ctx 跑完整 `apply`,断言注册了 `settings.section`,并递归渲染整棵组件树不抛错;另含**场景页契约**——保留场景「全局」不出现在场景页(只剩全局时显示空态)、可切换的预设照常渲染、描述超长必裁到上限;以及**档案弹窗默认勾选契约**——MCP/技能/子智能体「添加」即空集,记忆只预勾「全局」里已启用的那几条,「全选」是真全选;以及**模式条状态契约**——进入模式才有「当前模式」条,没进模式时那条不出现)。
|
|
229
|
-
> 它们断言语义契约而非实现抄写;真实行为验收仍以浏览器/宿主实测为准,契约测试不能替代。
|
|
230
|
-
> 另有 `npm run check:i18n`(中英词典键集合 + 占位符对齐)与 `node scripts/i18n-debt.mjs`(还剩多少硬编码中文,当前 113 条:提示词页 38 / 会话页 75)。
|
|
231
|
-
|
|
232
|
-
结构:宿主端 `src/index.ts`(Cordis 对象插件,`lib/index.js` 为发布产物;`lib/` 全部由 `npm run build` 生成、**不入版本库**,克隆后先构建);数据目录常量与搬移 `src/hub.ts`;技能核心 `src/skills/core.js`(纯 Node);AGENTS.md 预设库 `src/agents-md/service.ts`;归档会话管理 `lib/history/`(`workspace.js` / `projcache.js` / `tombstone.js`);对话导入解析 `src/imports/parsers.js`;场景记忆服务 `src/rules/`(`service.ts` 发现/CRUD/索引/两相扫描段渲染、`provider.ts` per-agent `systemPrompt` 段注册;模块路径与 `rules-*` op 名保留为内部协议,用户可见的页面与目录名已改为「场景记忆」/`memories/`);浏览器端 `src/client.js`(ModuleLoader CJS bundle,`dsm-*` 设计系统,经同源 API 与宿主通信)。运行时依赖仅 `fflate`(ZIP 解压)。
|
|
233
|
-
|
|
234
|
-
发布:`npm version patch && npm publish`(`prepublishOnly` 自动构建)。
|
|
235
|
-
|
|
236
|
-
## 许可证
|
|
237
|
-
|
|
238
|
-
MIT
|
|
1
|
+
# dsh-plugin-tool-management
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/dsh-plugin-tool-management)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](package.json)
|
|
6
|
+
[](https://github.com/ouli-1242/dsh-plugin-tool-management)
|
|
7
|
+
[](https://dsh.market/)
|
|
8
|
+
|
|
9
|
+
**简体中文** · [English](README_EN.md) · [Changelog](CHANGELOG.md) · [版本更新概要](docs/update.md)
|
|
10
|
+
|
|
11
|
+
- DeepSeek Harness 的 **MCP、技能、场景、记忆、子智能体、提示词与归档会话**管理插件。
|
|
12
|
+
- 八个页签:**场景**、**MCP**、**技能**、**子智能体**、**提示词**、**记忆**、**会话**、**兼容**。
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
dsh plugin --profile web add dsh-plugin-tool-management@latest
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
装完硬刷新浏览器(Cmd/Ctrl+Shift-R),设置 → **工具** 即安装成功。不手改 `cordis.patch.yml`,不碰技能源文件,重启与升级后配置依旧。
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 截图
|
|
23
|
+
|
|
24
|
+
| | |
|
|
25
|
+
|:---:|:---:|
|
|
26
|
+
|  |  |
|
|
27
|
+
| **场景** | **MCP** |
|
|
28
|
+
|  |  |
|
|
29
|
+
| **技能** | **子智能体** |
|
|
30
|
+
|  |  |
|
|
31
|
+
| **提示词** | **记忆** |
|
|
32
|
+
|  |  |
|
|
33
|
+
| **会话** | **兼容** |
|
|
34
|
+
|
|
35
|
+
## 核心亮点
|
|
36
|
+
|
|
37
|
+
| 能力 | 说明 |
|
|
38
|
+
|---|---|
|
|
39
|
+
| 场景记忆 | 启用场景里的 `.md` 正文**自动进系统提示词**,下一个请求即生效 |
|
|
40
|
+
| 场景档案 | 每个场景自由搭配 **MCP 工具集 / 技能集 / 子智能体 / 记忆**;可「切入模式」一键收窄 |
|
|
41
|
+
| 场景提示词 | 场景绑一份提示词预设,切换场景直接改写 `~/.dsh/AGENTS.md`(关掉自动恢复) |
|
|
42
|
+
| MCP 工具级开关 | 单台服务器里**单个工具**可独立启停:模型看不见也调不到 |
|
|
43
|
+
| 重启语义 | 重启只重连,**不改变启停状态** |
|
|
44
|
+
| 密钥安全 | 密钥默认打码;「显示密钥」与导出**必须带令牌**——没配 `token` 就不给明文 |
|
|
45
|
+
| 技能来源 | 接入 `~/.agents` / `~/.codex` / `~/.claude` 与自定义目录;默认来源必须读取但技能可删 |
|
|
46
|
+
| 回收站 | 人设 / 场景 / 提示词 / 记忆 / 技能删除都进回收站,可恢复 |
|
|
47
|
+
| AGENTS.md 预设 | 多套全局基线,一键应用,保留 5 代备份 |
|
|
48
|
+
| 归档会话 | 按项目分组、批量恢复 / 删除、保留期清理;工作区登记被删后可重建 |
|
|
49
|
+
| 对话导入导出 | 接管 Claude Code / Cursor / Codex / 任意文本;导出 Markdown / JSONL |
|
|
50
|
+
| 子智能体 | 一个文件一个人设,即用即弃不进 History,自动继承场景记忆 |
|
|
51
|
+
| 前缀缓存友好 | 注入段只由「启用场景 + 文件内容」决定,逐字节稳定 |
|
|
52
|
+
| 兼容体检 | 「兼容」页一屏看清宿主能力、每个动作走原生还是适配、哪些降级 |
|
|
53
|
+
| 模型工具 | **14 个**(`skill_mcp_manager_*` / `skill_manager_*` / `agentsmd_*` / `rule_manager_*` / `subagent_*`) |
|
|
54
|
+
| 界面 | 自有设计系统,**八栏**,中英双语、跟随宿主语言 |
|
|
55
|
+
|
|
56
|
+
## 快速开始
|
|
57
|
+
|
|
58
|
+
前置:DSH 已安装(`dsh web` 可运行),Node.js ≥ 18。
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
dsh plugin --profile web add dsh-plugin-tool-management@latest # 安装 / 更新
|
|
62
|
+
dsh plugin --profile web remove dsh-plugin-tool-management # 卸载
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
装完硬刷新浏览器,设置 → **工具** 出现八栏即成功。客户端改动热加载,宿主侧改动需重启 `dsh web`。
|
|
66
|
+
|
|
67
|
+
也可以让模型代劳:
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
安装 dsh-plugin-tool-management 插件:
|
|
71
|
+
dsh plugin --profile web add dsh-plugin-tool-management@latest
|
|
72
|
+
装完提醒我硬刷新浏览器。
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
模型可用 14 个工具管理上述功能(见亮点表);脚本走 `POST /dsh-plugin-tool-management/api`(`{op, args}` 协议)。
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 功能
|
|
80
|
+
|
|
81
|
+
### 场景与记忆
|
|
82
|
+
|
|
83
|
+
- **场景 = 分组,记忆 = `.md` 文件**。`memories/<场景>/<名>.md`,整篇正文自动进系统提示词,文件名支持中文。
|
|
84
|
+
- **单选启用**:同时只启用一个场景(其余置灰),关掉全部 = 只注入「全局」与 `_shared`。新场景默认不启动。
|
|
85
|
+
- **场景绑提示词**:切换场景直接改写 `~/.dsh/AGENTS.md`(覆盖前 5 代备份,关掉自动恢复基线)。
|
|
86
|
+
- **场景档案**:每个场景搭配 MCP 工具集 / 技能集 / 子智能体 / 记忆(任意组合);可「切入模式」一键应用并收窄注入,退出按快照原文恢复。
|
|
87
|
+
- **导入**:`.md` / `.zip`(目录名 = 场景,bundle 带附件),同名跳过绝不覆盖,超限逐条回报。
|
|
88
|
+
- **注入预算**:默认 64 KiB,放不下的跳过并列出清单。删除进回收站。
|
|
89
|
+
|
|
90
|
+
### 子智能体
|
|
91
|
+
|
|
92
|
+
- **一个文件一个人设**:`agents/<人设>.md`,frontmatter 全可选。
|
|
93
|
+
- **工具限制按 Agent 预设**:每个预设一份白/黑名单(互相排斥),运行期按当前预设生效——堵掉旧「全体并集」名单换预设后子代理起不来的坑。
|
|
94
|
+
- **即用即弃**:`subagent_run` 带人设运行、只回传结果、不进 History,自动继承场景记忆。场景可绑定可用人设。
|
|
95
|
+
|
|
96
|
+
### MCP 服务
|
|
97
|
+
|
|
98
|
+
- **增删改查 + 即改即生效**:写入 `cordis.patch.yml`,HMR 自动生效。
|
|
99
|
+
- **工具级开关**:单个工具可独立停用(模型看不见也调不到),整台支持批量。
|
|
100
|
+
- **密钥打码**:默认 `••••••`,「显示密钥」要令牌。
|
|
101
|
+
- **迁移与备份**:跨项目级/全局迁移失败自动回滚;JSON 导出导入。
|
|
102
|
+
|
|
103
|
+
### 技能
|
|
104
|
+
|
|
105
|
+
- **来源一览**:项目级 / DSH / Agents / Codex / Claude / 自定义目录,按来源分组。
|
|
106
|
+
- **两组权限相反**:默认来源(DSH / 导入技能)必须读取但技能可删;外部目录可停用/移除但技能只读。
|
|
107
|
+
- **移除 ≠ 停用**:移除 = 连目录都不扫(文件零改动,可恢复);停用 = 仍列出但不可调用。
|
|
108
|
+
- **同名自选 / 自定义目录 / ZIP 导入 / 回收站**。
|
|
109
|
+
|
|
110
|
+
### 提示词预设
|
|
111
|
+
|
|
112
|
+
- 多套 `~/.dsh/AGENTS.md` 基线,一键应用(新会话生效,当前会话不变),保留 5 代备份。
|
|
113
|
+
- 新建即可写正文,编辑可改 id(= 目录改名,场景绑定自动跟着改)。正在生效的不能删;删除进回收站。
|
|
114
|
+
|
|
115
|
+
### 历史会话
|
|
116
|
+
|
|
117
|
+
- 按项目分组、搜索、批量恢复 / 永久删除、保留期自动清理。
|
|
118
|
+
- 工作区登记被删后按会话目录重建分组,可一键重新登记。
|
|
119
|
+
- 导入 Claude Code / Cursor / Codex / 任意文本;导出 Markdown / JSONL。
|
|
120
|
+
|
|
121
|
+
### 宿主兼容
|
|
122
|
+
|
|
123
|
+
插件运行期用宿主同一批 `@deepseek-ai/*` 库——必须是同一份物理模块,否则判断退化成猜。
|
|
124
|
+
|
|
125
|
+
- **「兼容」页**:宿主版本、能力可用数、每个动作走原生/适配/不可用、降级项与原因。只读。
|
|
126
|
+
- **命令行**:`node scripts/doctor.mjs`(体检)、`node scripts/host-deps.mjs --fix`(依赖对齐)。
|
|
127
|
+
- `minimal` 预设下,场景记忆 / AGENTS.md / 技能目录不生效(该预设的设计意图),兼容页逐列标出。
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 数据落点
|
|
132
|
+
|
|
133
|
+
| 内容 | 位置 |
|
|
134
|
+
|---|---|
|
|
135
|
+
| MCP 定义 | `cordis.patch.yml`(改前自动 `.bak`) |
|
|
136
|
+
| 技能策略 / 自定义目录 | `~/.dsh/tool-management/state.json` |
|
|
137
|
+
| 技能 / 记忆 / 人设 / 预设 | `~/.dsh/tool-management/{skills,memories,agents,agents-md}/` |
|
|
138
|
+
| 回收站 | `~/.dsh/tool-management/trash/` |
|
|
139
|
+
| 归档账本 / 保留期 | `~/.dsh/tool-management/history-*.json` |
|
|
140
|
+
| 记忆索引 / 场景 / 档案 | `~/.dsh/tool-management/rules-index.json` |
|
|
141
|
+
| 页面设置 | `~/.dsh/dsh-plugin-tool-management-settings.json` |
|
|
142
|
+
| 运行日志 | `~/.dsh/dsh-plugin-tool-management.log` |
|
|
143
|
+
|
|
144
|
+
**插件安装目录里不存用户数据**(`dsh plugin update` 会整体替换该目录)。
|
|
145
|
+
|
|
146
|
+
## 配置与安全
|
|
147
|
+
|
|
148
|
+
| 字段 | 说明 |
|
|
149
|
+
|---|---|
|
|
150
|
+
| `token` | 访问令牌。设了之后**所有写操作 + 明文密钥**都要求 `x-dsh-token`;**不设时明文接口一律关闭**。也是 curl / 局域网的逃生门。 |
|
|
151
|
+
| `maxBodyBytes` | 请求体上限,默认 88 MiB。 |
|
|
152
|
+
|
|
153
|
+
- **浏览器**:读写走 cookie,不需要 token;但**明文密钥**(显示密钥 / 导出)要令牌。
|
|
154
|
+
- **curl / 脚本**:带 `x-dsh-token`,或带浏览器 cookie。
|
|
155
|
+
- **端口转发到公网**:建议配 token——防陌生人注入 MCP 命令(等同远程执行)与窃取密钥。
|
|
156
|
+
|
|
157
|
+
## 常见问题
|
|
158
|
+
|
|
159
|
+
| 现象 | 解决 |
|
|
160
|
+
|---|---|
|
|
161
|
+
| 装完没有页面 | 硬刷新;不行重启 DSH。 |
|
|
162
|
+
| 重复 MCP 页签 | 删 `cordis.patch.yml` 里的旧 loader 行后重启。 |
|
|
163
|
+
| 改坏配置 DSH 起不来 | 取最近的 `.bak-<时间戳>` 恢复。 |
|
|
164
|
+
| 升级 DSH 后动作不可用 | 设置 → 工具 → **兼容** 看原因;`doctor.mjs` → `host-deps.mjs --fix`。 |
|
|
165
|
+
| `approval=never` 还要确认吗 | 不弹卡,直接放行并记日志;想问回来切回「工作区内修改」。 |
|
|
166
|
+
| `subagent_run` 报 spawn 不可用 | 宿主没注册 spawn provider;挂载 `@deepseek-ai/dsh-subagent-spawn-in-process` 后重启。 |
|
|
167
|
+
| 场景绑了 A 人设,官方 `subagent` 还跑别的 | 两条通道:本插件只管 `subagent_run`;官方 `subagent` / `subagent_fork` 无确认门、不认人设。 |
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 开发
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
npm install
|
|
175
|
+
npm run build # tsc + 同步客户端
|
|
176
|
+
npm test # 构建 + i18n + 语义契约测试
|
|
177
|
+
npm run check:i18n # 词典自检
|
|
178
|
+
npm run doctor # 宿主兼容体检
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
`lib/` 不入版本库,克隆后先 `npm run build`。改完重启 `dsh web` 才生效。运行时依赖仅 `fflate`;`@deepseek-ai/*` 一律用宿主那份。
|
|
182
|
+
|
|
183
|
+
## 许可证
|
|
184
|
+
|
|
185
|
+
MIT
|