dsh-plugin-tool-management 0.19.1 → 0.20.1
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 +915 -829
- package/README.md +237 -254
- package/README_EN.md +234 -223
- package/docs/images/1-EN.png +0 -0
- package/docs/images/1.png +0 -0
- package/docs/images/2-EN.png +0 -0
- package/docs/images/2.png +0 -0
- package/docs/images/3-EN.png +0 -0
- package/docs/images/3.png +0 -0
- package/docs/images/4-EN.png +0 -0
- package/docs/images/4.png +0 -0
- package/docs/images/5-EN.png +0 -0
- package/docs/images/5.png +0 -0
- package/docs/images/6-EN.png +0 -0
- package/docs/images/6.png +0 -0
- package/docs/images/7-EN.png +0 -0
- package/docs/images/7.png +0 -0
- package/docs/images/8-EN.png +0 -0
- package/docs/images/8.png +0 -0
- package/docs/images/logo.gif +0 -0
- package/docs/update.md +32 -30
- package/lib/client.js +9480 -6970
- package/lib/compat/preset-reach.js +5 -2
- package/lib/context-inject-frame.js +13 -8
- package/lib/hub.js +104 -11
- package/lib/index.js +72 -24
- package/lib/mcp/manager.js +45 -13
- package/lib/mcp/secret-guard.js +2 -2
- package/lib/mcp/state-section.js +1 -1
- package/lib/memories/archive-engine.js +4 -5
- package/lib/memories/constants.js +11 -4
- package/lib/memories/service.js +6 -1
- package/lib/op-registry.js +13 -11
- package/lib/ops/memory.js +42 -4
- package/lib/ops/scene-records.js +43 -9
- package/lib/ops/sessions.js +67 -46
- package/lib/ops/trash.js +107 -8
- package/lib/request-gate.js +9 -2
- package/lib/scene-prompt-sync.js +48 -23
- package/lib/sessions/history.js +32 -22
- package/lib/sessions/workspace.js +0 -10
- package/lib/skills/catalog.js +17 -5
- package/lib/skills/core.js +189 -7
- package/lib/skills/frontmatter.js +31 -0
- package/lib/skills/manager-state.js +73 -3
- package/lib/skills/service.js +53 -13
- package/lib/skills/skill-roots.js +54 -4
- package/lib/skills/skill-trash.js +118 -12
- package/lib/skills/upload-pipeline.js +110 -26
- package/lib/subagents/catalog.js +9 -5
- package/lib/subagents/service.js +44 -6
- package/lib/subagents/tools.js +45 -15
- package/lib/tool-table-switch.js +6 -6
- package/lib/tools/deps.js +43 -0
- package/lib/tools/mcp.js +74 -27
- package/lib/tools/memory.js +49 -9
- package/lib/tools/prompt.js +38 -9
- package/lib/tools/remove.js +206 -0
- package/lib/tools/scene.js +155 -32
- package/lib/tools/skills.js +162 -55
- package/lib/tools/subagent.js +65 -31
- package/lib/tools/table.js +39 -12
- package/lib/trash-id.js +16 -0
- package/lib/trash-retention.js +3 -3
- package/package.json +115 -114
- package/lib/mcp/inspect-probe.js +0 -199
package/README.md
CHANGED
|
@@ -1,254 +1,237 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="docs/images/logo.png" width="120" height="120" alt="dsh-plugin-tool-management">
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
# dsh-plugin-tool-management
|
|
6
|
-
|
|
7
|
-

|
|
244
|
-
npm run check:i18n # 词典自检
|
|
245
|
-
npm run doctor # 宿主兼容体检
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
`lib/` 不入版本库,克隆后先 `npm run build`。改完重启 `dsh web` 才生效。运行时依赖:`fflate`(导出打包)、`js-yaml`(写宿主补丁前的解析校验,惰性加载);`@deepseek-ai/*` 一律用宿主那份。
|
|
249
|
-
|
|
250
|
-
> **部署注意**:`npm run build` 的 profile 镜像清单**不含 `node_modules`**,本地联调时新增的运行时依赖(如 `js-yaml`)要么在 profile 侧装一份,要么接受"补丁校验跳过并上报"的降级。`npm install` 装到 profile 的正式安装不受影响。
|
|
251
|
-
|
|
252
|
-
## 许可证
|
|
253
|
-
|
|
254
|
-
MIT
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/images/logo.png" width="120" height="120" alt="dsh-plugin-tool-management">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# dsh-plugin-tool-management
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/dsh-plugin-tool-management)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](package.json)
|
|
10
|
+
[](https://github.com/ouli-1242/dsh-plugin-tool-management)
|
|
11
|
+
|
|
12
|
+
[](https://dsh.market/)
|
|
13
|
+
[](https://awesome-dsh-plugin.com)
|
|
14
|
+
[](https://dshfind.com/zh/plugins/ouli-1242/dsh-plugin-tool-management)
|
|
15
|
+
[](https://github.com/0xsline/awesome-deepseek-harness)
|
|
16
|
+
|
|
17
|
+
**简体中文** · [English](README_EN.md) · [Changelog](CHANGELOG.md) · [版本更新概要](docs/update.md)
|
|
18
|
+
|
|
19
|
+
DeepSeek Harness 的 **MCP、技能、场景、记忆、子智能体、提示词与归档会话**管理插件。八个页签:场景 / MCP / 技能 / 子智能体 / 提示词 / 记忆 / 会话 / 兼容。
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
dsh plugin --profile web add dsh-plugin-tool-management@latest # web 版
|
|
23
|
+
dsh plugin --profile desktop add dsh-plugin-tool-management@latest # 桌面版
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
装完 web 版硬刷新浏览器(Cmd/Ctrl+Shift+R),桌面版重启应用,设置 → **工具**。插件只写自己的文件,不改技能源文件;重启与升级后配置都在。
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 演示视频
|
|
31
|
+
|
|
32
|
+
<video controls src="https://github.com/user-attachments/assets/3bed27b0-2d73-4e89-b1dd-f2b1cbd6eaca"></video>
|
|
33
|
+
|
|
34
|
+
<video controls src="https://github.com/user-attachments/assets/7c72ce98-fad9-4233-88de-2ebf5ca5bf30"></video>
|
|
35
|
+
|
|
36
|
+
画面里每一个界面都是真机截图,没有重画的 UI,也没有伪造控件。
|
|
37
|
+
|
|
38
|
+
背景音乐:Kevin MacLeod「Limit 70」,[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)。
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 截图
|
|
43
|
+
|
|
44
|
+
| | |
|
|
45
|
+
|:----------------------------:|:------------------------------:|
|
|
46
|
+
|  |  |
|
|
47
|
+
| **场景** | **MCP** |
|
|
48
|
+
|  |  |
|
|
49
|
+
| **技能** | **子智能体** |
|
|
50
|
+
|  |  |
|
|
51
|
+
| **提示词** | **记忆** |
|
|
52
|
+
|  |  |
|
|
53
|
+
| **会话** | **兼容** |
|
|
54
|
+
|
|
55
|
+
## 核心亮点
|
|
56
|
+
|
|
57
|
+
一句话:**把「工作 / 写作 / 编程」各配成一套场景,点一下整套切换;插件管的东西,模型都看得见。**
|
|
58
|
+
|
|
59
|
+
| 亮点 | 说明 |
|
|
60
|
+
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
61
|
+
| 一键换场景 | 每个场景各配一套 MCP / 技能 / 人设 / 记忆,进入时整套切换、退出时还原;模型也能按你说的切 |
|
|
62
|
+
| 不离开对话就能管 | 对话里打 `/` 出「工具」段,启停各域条目,点一下就生效 |
|
|
63
|
+
| 记忆自动送到模型眼前 | 每个场景下写几段 `.md` 就是它的资料库,正文自动进上下文 |
|
|
64
|
+
| 给 MCP 服务器写备注 | 写进备注的话模型每轮都看得到,会照做 |
|
|
65
|
+
| 单个工具也能关 | 一台服务器里可以只停某个工具,模型看不见也调不到 |
|
|
66
|
+
| 技能状况一眼看穿 | 哪份在生效标「首选」,被同名覆盖的标出来源 |
|
|
67
|
+
| 子智能体 = 一个文件一个角色 | 写一份角色说明就能派活;跑完只回结果、不占你的会话记录 |
|
|
68
|
+
| 提示词备好几套 | `AGENTS.md` 可以存多份、一键切换;场景可以各自绑一份,也可以选「无」(不绑) |
|
|
69
|
+
| 会话不再丢 | 归档按项目分组、能搜、能批量恢复;Claude Code / Cursor / Codex 的记录能导进来 |
|
|
70
|
+
| 模型一定看得见 | 六个域各注入一条上下文,内容没变不重发 |
|
|
71
|
+
| 锁住就不怕手滑 | 场景可以上锁:五个域的增删改整体只读 |
|
|
72
|
+
| 删了能找回 | 技能 / 记忆 / 人设 / 提示词 / 场景的删除都进回收站(会话永久删除除外);可勾选批量永久删除,也可设保留期让它自动清(默认永久保留) |
|
|
73
|
+
| 安全、不添乱 | 只写自己的文件;密钥默认打码、看明文要令牌 |
|
|
74
|
+
|
|
75
|
+
## 快速开始
|
|
76
|
+
|
|
77
|
+
前置:DSH 已安装(`dsh web` 可运行),Node.js ≥ 18。命令按端选:`--profile web` 装 web 版,`--profile desktop` 装桌面版。桌面版的 profile 由 DSH Desktop 自己初始化 —— 先打开过一次应用,执行命令前把它完全退出。
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
dsh plugin --profile web add dsh-plugin-tool-management@latest # web 版 · 安装 / 更新
|
|
81
|
+
dsh plugin --profile web remove dsh-plugin-tool-management # web 版 · 卸载
|
|
82
|
+
dsh plugin --profile desktop add dsh-plugin-tool-management@latest # 桌面版 · 安装 / 更新
|
|
83
|
+
dsh plugin --profile desktop remove dsh-plugin-tool-management # 桌面版 · 卸载
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
装完 web 版硬刷新浏览器、桌面版重启应用,设置 → **工具** 出现八栏即成功。界面改动即时生效,宿主侧改动需重启(web 重启 `dsh web`,桌面重启桌面应用)。
|
|
87
|
+
|
|
88
|
+
也可以让模型代劳:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
安装 dsh-plugin-tool-management 插件:
|
|
92
|
+
dsh plugin --profile web add dsh-plugin-tool-management@latest
|
|
93
|
+
装完提醒我硬刷新浏览器。
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
桌面版把 `web` 换成 `desktop`,最后一句改成「装完提醒我重启桌面应用」。
|
|
97
|
+
|
|
98
|
+
## 功能
|
|
99
|
+
|
|
100
|
+
### 斜杠命令(在对话里直接管)
|
|
101
|
+
|
|
102
|
+
- **打 `/` 出「工具」段**:六行 —— 场景 / 技能 / MCP 服务器 / 子智能体 / 提示词 / 记忆。点一行进这一域,再点一条直接生效;点完菜单不关。
|
|
103
|
+
- **状态看得见**:启用项绿勾、停用项空框,右侧灰字是条目备注,域行右侧给当前态摘要。
|
|
104
|
+
- **条目多也不挡路**:每域全量列出、面板自己滚;技能按来源目录分组、记忆按场景分组,已启用的排前面。
|
|
105
|
+
- **提示词两类都在**:全局那组选哪一份写进 `AGENTS.md`(单选),快捷那组是启停,点一行把存好的话贴进输入框、不自动发送。
|
|
106
|
+
- **只放可逆动作**:进场景与各类启停;增删改、导入导出、改配置仍各归各页。
|
|
107
|
+
- **走宿主官方通道**:用 DSH 的输入触发器接口注册,不 patch 官方包。
|
|
108
|
+
|
|
109
|
+
### 场景与记忆
|
|
110
|
+
|
|
111
|
+
- **场景 = 分组,记忆 = `.md` 文件**:`memories/<场景>/<名>.md`,整篇正文自动注入上下文,文件名支持中文。
|
|
112
|
+
- **「启用」与「进入」是两件事**:启用决定注入按哪个场景走(单选,全关 = 只注入「全局」与 `_shared`);进入才按档案整套切换 MCP / 技能 / 人设,并把绑定的提示词写进 `AGENTS.md`。
|
|
113
|
+
- **场景档案**:每个场景搭配 MCP 工具集与场景级备注 / 技能集 / 子智能体 / 快捷提示词 / 模型工具表方案,外加一份绑定的全局提示词预设;段内勾的启用、没勾的停用,整段没建 = 该域全部停用(快捷提示词例外:没绑 = 进入时不碰),退出时按进场景前的快照还原。
|
|
114
|
+
- **每格另给一档「无」**:这一域本场景不碰(提示词那格 = 进出都保持原样,快捷提示词 = 一条都不启用)。它区别于「保持现状」——那一档才是真的不动。
|
|
115
|
+
- **场景锁定**:锁定后 MCP / 技能 / 子智能体 / 记忆 / 提示词五域的增删改整体只读。
|
|
116
|
+
- **删除场景 = 连记忆一起删**:场景记录、档案与全部记忆进同一条回收站条目,恢复时整条放回;使用中的场景拒绝删除。
|
|
117
|
+
- **导入导出**:`.md` / `.zip`(目录名 = 场景,bundle 带附件),同名跳过绝不覆盖;注入预算默认 128 KiB,放不下的跳过并列出清单。
|
|
118
|
+
|
|
119
|
+
### 子智能体
|
|
120
|
+
|
|
121
|
+
- **一个文件一个人设**:`subagents/<人设>.md`,frontmatter 全可选;`output:` 一行一条写"产出必须长什么样"。正文原样用在 `# Persona: <名字>` 标题下,人设文件本身不用改。
|
|
122
|
+
- **委派**:`subagent_manager_run` 带人设运行、只回最终结果、不进 History;默认新起独立会话,`inherit: true` 继承本次会话已完成的轮次。
|
|
123
|
+
- **启停与目录**:停用的人设不注入、模型不可见(文件不动);新建 / 导入 / 恢复默认停用。人设目录只列名字 + 描述。
|
|
124
|
+
- **工具限制按 Agent 预设**:每个预设一份白 / 黑名单(互斥),候选只列该预设自己的工具,分「插件工具 / 官方工具 / 其他工具」三段。
|
|
125
|
+
- **模型与来源**:都从宿主 LLM 目录里选(选定来源后模型只列该来源的);留空 = 继承主会话;思考强度档位由所选模型声明。
|
|
126
|
+
|
|
127
|
+
### MCP 服务
|
|
128
|
+
|
|
129
|
+
- **增删改查、即改即生效**:写入 `cordis.patch.yml`,改前自动备份。级别分「全局 / 应用级」,新增默认全局。
|
|
130
|
+
- **工具级开关**:单个工具可独立停用(模型看不见也调不到),整台支持批量。
|
|
131
|
+
- **停着也能看清单**:没在跑的服务器仍显示上次见过的工具名与描述(标「上次运行时」);从没跑过的可以一键启动读取。
|
|
132
|
+
- **备注与密钥**:每台服务器可写一句给模型的提示,随状态段一起注入;凭据默认整值打码(`$VAR`、`!!js` 这类间接引用不动),看明文要令牌。
|
|
133
|
+
- **迁移与备份**:跨项目级 / 全局迁移失败自动回滚;支持 JSON 导出导入。
|
|
134
|
+
|
|
135
|
+
### 技能
|
|
136
|
+
|
|
137
|
+
- **来源一览**:项目级 / DSH / Agents / Codex / Claude / 自定义目录,按来源分组。
|
|
138
|
+
- **两组权限相反**:默认来源的技能可删可停;外部目录可以停用或移除,但里面的技能文件只读。
|
|
139
|
+
- **移除 ≠ 停用**:移除 = 连目录都不扫(文件零改动,可恢复);停用 = 仍列出但不可调用。
|
|
140
|
+
- **同名谁在生效**:生效的那份标「首选」,被覆盖的标出来源。
|
|
141
|
+
- **自定义目录 / ZIP 导入导出 / 回收站**。
|
|
142
|
+
|
|
143
|
+
### 提示词预设
|
|
144
|
+
|
|
145
|
+
- 多套 `~/.dsh/AGENTS.md` 基线一键应用(下一轮对话生效),保留 5 代备份;每条预设可写一句"这份是干什么的",只存在插件侧、不进 `AGENTS.md`;「最近一次应用的是哪份」也答得出来(手改过也认得出源)。
|
|
146
|
+
- **生效与否就是卡片左边那颗开关**:点亮 = 把这一份写进 `AGENTS.md`;再点一下 = **取消应用**。点之前弹窗会说清是哪种(删文件时按钮变红),点完还给一条回执。
|
|
147
|
+
- **「取消应用」一步回到链起点**,不是只退一步:这一串应用 / 取消往复开始之前是什么样就恢复成什么样(起点没有 `AGENTS.md` 就把文件删掉);中途每一份内容都留在 `__last-applied__/AGENTS.md.bak-*`(保留 5 代),随时能再应用回来。
|
|
148
|
+
- **两类不能直接删**:**被场景绑定的**、以及**当前应用的那一份**(后者先点开关「取消应用」就能删);首次打开时自动生成的那份没「应用」过,可以直接删。删除一律进回收站。
|
|
149
|
+
- **快捷提示词**(同页第二段):存一段常用的话,`/` 里点一下就原样贴进输入框;场景可以绑定一组(进入只启用勾的那几条、退出按进场景前还原,也可选「无」)。
|
|
150
|
+
|
|
151
|
+
### 历史会话
|
|
152
|
+
|
|
153
|
+
- 按项目分组、搜索、批量恢复 / 永久删除、保留期自动清理;工作区登记被删后可一键重新登记。
|
|
154
|
+
- 导入 Claude Code / Cursor / Codex / 任意文本(工作区可挑、可浏览、可给路径)。
|
|
155
|
+
- 导出 Markdown / JSONL,分三档累进:仅正文 → 正文 + 工具 → 正文 + 工具 + 思考。**导出是转录,不是备份** —— 要留全量请用「归档」。
|
|
156
|
+
|
|
157
|
+
### 宿主兼容
|
|
158
|
+
|
|
159
|
+
- **「兼容」页**:宿主版本、能力可用数、每个动作走原生 / 适配 / 不可用、降级项与原因;三个写入口:访问令牌、注入设置、模型工具表。
|
|
160
|
+
- **命令行**:`node scripts/doctor.mjs`(体检)、`node scripts/host-deps.mjs --fix`(依赖对齐)。
|
|
161
|
+
- **压制型预设**(`minimal` 这类)下本插件的注入默认停用,可在「兼容」页按域强制打开。
|
|
162
|
+
- **关掉「技能」「提示词」的勾选 = 连宿主那份一起停**(这两域在标准预设下由官方送);其余三域勾选完全生效。
|
|
163
|
+
- **注入长什么样**:每个域一条 `<system-reminder>`,`# 板块标题` + 正文 + 一句"以本份为准";正文里的 `</system-reminder>` 会被转义。
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 数据落点
|
|
168
|
+
|
|
169
|
+
| 内容 | 位置 |
|
|
170
|
+
| ------------------------------------------- | ------------------------------------------------------------------------- |
|
|
171
|
+
| MCP 定义 | `~/.dsh/cordis.patch.yml`(插件只写它;改前自动备份到 hub 的 `backups/`) |
|
|
172
|
+
| 技能策略 / 自定义目录 | `~/.dsh/tool-management/skills-state.json` |
|
|
173
|
+
| 技能 / 记忆 / 人设 / 预设 | `~/.dsh/tool-management/{skills,memories,subagents,prompts}/` |
|
|
174
|
+
| 子智能体启停 | `~/.dsh/tool-management/subagents-index.json` |
|
|
175
|
+
| 回收站(技能 / 记忆 / 人设 / 预设 / 场景) | `~/.dsh/tool-management/trash/<域>-trash/`(每类一个目录) |
|
|
176
|
+
| 归档账本 / 保留期 | `~/.dsh/tool-management/history-*.json` |
|
|
177
|
+
| 回收站保留期 | `~/.dsh/tool-management/trash-retention.json`(`0` = 永久保留) |
|
|
178
|
+
| 记忆索引 / 场景 / 档案 | `~/.dsh/tool-management/memories-index.json` |
|
|
179
|
+
| MCP 侧车(停用表 / 已知工具 / 备注 / 设置) | `~/.dsh/tool-management/mcp-*.json` |
|
|
180
|
+
| 注入设置(六个域开关) | `~/.dsh/tool-management/inject-settings.json` |
|
|
181
|
+
| 模型工具表(关掉的工具 + 存下的方案) | `~/.dsh/tool-management/tool-table.json` |
|
|
182
|
+
| 场景页界面设置(进场景前弹不弹预览卡) | `~/.dsh/tool-management/scene-settings.json` |
|
|
183
|
+
| 运行日志 / patch 备份 | `~/.dsh/tool-management/tool-management.log` · `backups/` |
|
|
184
|
+
|
|
185
|
+
**插件安装目录里不存用户数据**(`dsh plugin update` 会整体替换该目录)。备份按**每份 patch 文件各留 5 份**(全局与每个 profile 各自计),一次批量操作就可能把某层的 5 个槽位吃掉。
|
|
186
|
+
|
|
187
|
+
六类回收站各占 `trash/` 下一个目录:`{skills,memories,subagents,prompts,scenes,quick-prompts}-trash/`。记忆那一类 2026-10-10 起从 hub 根并入 `trash/`,老数据由启动迁移自动搬过去。
|
|
188
|
+
|
|
189
|
+
## 配置与安全
|
|
190
|
+
|
|
191
|
+
| 字段 | 说明 |
|
|
192
|
+
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
193
|
+
| `token` | 访问令牌。设了之后**所有写操作 + 明文密钥**都要求 `x-dsh-token`;不设时明文接口一律关闭。也可改用环境变量 `DSH_PLUGIN_TOOL_MANAGEMENT_TOKEN`。 |
|
|
194
|
+
| `tokenDisabled` | `true` = 令牌保留在配置里但当前不生效(兼容页「关闭保护」写的就是这一行)。写操作不再要求令牌,明文查看仍然要。 |
|
|
195
|
+
| `maxBodyBytes` | 请求体上限,默认 88 MiB。 |
|
|
196
|
+
|
|
197
|
+
**磁盘上的明文(必读)**:打码**只发生在界面展示**;MCP 的 `env` / `headers` 与插件自己的 `token` 在 `cordis.patch.yml`(及各 profile 副本)里始终明文,改配置前整份文件会备份进 `~/.dsh/tool-management/backups/`(不加密、不轮转、卸载也不回收)—— 一份密钥最多有 `5 ×(含它的 patch 文件数)+ 1` 份明文副本。令牌门禁**管不到磁盘读取**,防线是操作系统的文件权限。清理入口:**设置 → 工具 → 兼容 → 「清理旧备份」**。
|
|
198
|
+
|
|
199
|
+
- **浏览器**:读写走 cookie,不需要令牌;**明文密钥**(显示密钥 / 导出)要令牌。令牌在「兼容」页的「访问令牌」块管理:本次启动填一次管到 DSH 退出;写进配置文件要重启生效。
|
|
200
|
+
- **销毁方向一律要当场再输一次当前令牌**(关闭保护 / 修改 / 删除)—— 本次启动解锁过不算。
|
|
201
|
+
- **curl / 脚本**:带 `x-dsh-token`,或带浏览器 cookie。
|
|
202
|
+
- **HTTP 状态码**:除安全栅栏的 401 / 403 外,一律 HTTP 200 + `{ ok: false, error }` —— 脚本分流请以 `body.ok` 为准。
|
|
203
|
+
- **端口转发**:宿主缺 `connection` 服务时栅栏退到「Host 回环 + 同源」判定,本机进程伪造 `Host: localhost` 即可调用写 op。转发到局域网 / 公网的场景**务必配令牌** —— 陌生人注入 MCP 命令等同远程执行;「选择文件夹」弹窗用的 `dir-list` 能列出任意绝对路径(只读),同一条前提。
|
|
204
|
+
- **服务器名避开 `__`(起名建议)**:工具全名是 `mcp__<服务器名>__<工具名>`,服务器名里再有 `__` 会让它切不唯一,界面上的勾选可能落不到停用表里那条键上。本轮不收紧校验,改为在**兼容页**出一条提示;起名时避开 `__` 就没有这个问题。
|
|
205
|
+
|
|
206
|
+
## 常见问题
|
|
207
|
+
|
|
208
|
+
| 现象 | 解决 |
|
|
209
|
+
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
210
|
+
| 装完没有页面 | 硬刷新;不行重启 DSH。 |
|
|
211
|
+
| 重复 MCP 页签 | 删 `cordis.patch.yml` 里的旧 loader 行后重启。 |
|
|
212
|
+
| 改坏配置 DSH 起不来 | 从 `~/.dsh/tool-management/backups/` 取最近的 `cordis.patch.yml.<层级>.bak-<时间戳>` 覆盖回去(每份 patch 各留 5 份)。 |
|
|
213
|
+
| 升级 DSH 后动作不可用 | 设置 → 工具 → **兼容** 看原因;`doctor.mjs` → `host-deps.mjs --fix`。 |
|
|
214
|
+
| 模型调不到某条工具 | 「兼容」页的**模型工具表**看它是不是被关了(出厂默认关着 19 条);面板和脚本不受影响。 |
|
|
215
|
+
| `approval=never` 还要确认吗 | 不弹卡,直接放行并记日志;想问回来切回「工作区内修改」。 |
|
|
216
|
+
| `subagent_manager_run` 报 provider 不可用 | 对应 provider 没注册:`spawn`(默认)/ `fork`(`inherit`)分别挂 `@deepseek-ai/dsh-subagent-spawn-in-process` / `-fork-in-process` 后重启。 |
|
|
217
|
+
| 场景绑了 A 人设,官方 `subagent` 还在跑别的 | 官方那两个是宿主的工具,本插件管不到;贴合人设的走 `subagent_manager_run`,官方只在没有人设贴合或要后台跑时用。 |
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 开发
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
npm install
|
|
225
|
+
npm run build # tsc + 同步客户端
|
|
226
|
+
npm test # 构建 + i18n + 契约测试(纯函数不变量与宿主契约)
|
|
227
|
+
npm run check:i18n # 词典自检
|
|
228
|
+
npm run doctor # 宿主兼容体检
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
`lib/` 不入版本库,克隆后先 `npm run build`。改完重启 `dsh web` 才生效。运行时依赖:`fflate`(导出打包)、`js-yaml`(写宿主补丁前的解析校验,惰性加载);`@deepseek-ai/*` 一律用宿主那份。
|
|
232
|
+
|
|
233
|
+
> **部署注意**:`npm run build` 的 profile 镜像清单**不含 `node_modules`**,本地联调时新增的运行时依赖(如 `js-yaml`)要么在 profile 侧装一份,要么接受"补丁校验跳过并上报"的降级。`npm install` 装到 profile 的正式安装不受影响。
|
|
234
|
+
|
|
235
|
+
## 许可证
|
|
236
|
+
|
|
237
|
+
MIT
|