dsh-plugin-tool-management
Agent & Workflowouli-1242/dsh-plugin-tool-management
Unified management panel for DeepSeek Harness MCP servers, skills, scene memory, subagents, prompts and archived sessions across eight tabs.
- dsh
- dsh-plugin
Verification and compatibility
This section shows evidence collected by the catalog. Undeclared information is labeled as unknown.
- Current-version compatibility
- Verified on the catalog Harness version
- Declared Harness range
- Not declared
- Declared platforms
- Not declared
- Profiles
- web
- Build approval
- Unknown
- Permissions
- Not declared
- External services
- Not declared
- Telemetry
- Unknown
This is not a security endorsement. Review source, permissions, and configuration before installing.
View evidence and scope
Verification covers only the named source, version, and Harness environment. It does not guarantee future compatibility.
dsh-plugin-tool-management@0.12.1- The manifest and static structure passed checks; a runtime load check has not completed.
README
dsh-plugin-tool-management
简体中文 · English · Changelog · 版本更新概要
DeepSeek Harness 的 MCP、技能、场景、记忆、子智能体、提示词与归档会话管理插件。八个页签:场景 / MCP / 技能 / 子智能体 / 提示词 / 记忆 / 会话 / 兼容。
dsh plugin --profile web add dsh-plugin-tool-management@latest
装完硬刷新浏览器(Cmd/Ctrl+Shift+R),设置 → 工具。插件只写自己的文件,不改技能源文件;重启与升级后配置都在。
演示视频
画面里每一个界面都是真机截图,没有重画的 UI,也没有伪造控件。
背景音乐:Kevin MacLeod「Limit 70」,CC BY 4.0。
截图
![]() | ![]() |
| 场景 | MCP |
![]() | ![]() |
| 技能 | 子智能体 |
![]() | ![]() |
| 提示词 | 记忆 |
![]() | ![]() |
| 会话 | 兼容 |
核心亮点
一句话:把「工作 / 写作 / 编程」各配成一套场景,点一下整套切换;插件管的东西,模型都看得见。
| 亮点 | 说明 |
|---|---|
| 一键换场景 | 每个场景各配一套 MCP / 技能 / 人设 / 记忆,进入时整套切换、退出时还原;模型也能按你说的切 |
| 不离开对话就能管 | 对话里打 / 出「工具」段,启停各域条目,点一下就生效 |
| 记忆自动送到模型眼前 | 每个场景下写几段 .md 就是它的资料库,正文自动进上下文 |
| 给 MCP 服务器写备注 | 写进备注的话模型每轮都看得到,会照做 |
| 单个工具也能关 | 一台服务器里可以只停某个工具,模型看不见也调不到 |
| 技能状况一眼看穿 | 哪份在生效标「首选」,被同名覆盖的标出来源 |
| 子智能体 = 一个文件一个角色 | 写一份角色说明就能派活;跑完只回结果、不占你的会话记录 |
| 提示词备好几套 | AGENTS.md 可以存多份、一键切换;场景可以各自绑一份 |
| 会话不再丢 | 归档按项目分组、能搜、能批量恢复;Claude Code / Cursor / Codex 的记录能导进来 |
| 模型一定看得见 | 六个域各注入一条上下文,内容没变不重发 |
| 锁住就不怕手滑 | 场景可以上锁:五个域的增删改整体只读 |
| 删了能找回 | 技能 / 记忆 / 人设 / 提示词 / 场景的删除都进回收站(会话永久删除除外) |
| 安全、不添乱 | 只写自己的文件;密钥默认打码、看明文要令牌 |
快速开始
前置:DSH 已安装(dsh web 可运行),Node.js ≥ 18。
dsh plugin --profile web add dsh-plugin-tool-management@latest # 安装 / 更新
dsh plugin --profile web remove dsh-plugin-tool-management # 卸载
装完硬刷新浏览器,设置 → 工具 出现八栏即成功。界面改动即时生效,宿主侧改动需重启 dsh web。
也可以让模型代劳:
安装 dsh-plugin-tool-management 插件:
dsh plugin --profile web add dsh-plugin-tool-management@latest
装完提醒我硬刷新浏览器。
功能
斜杠命令(在对话里直接管)
- 打
/出「工具」段:六行 —— 场景 / 技能 / MCP 服务器 / 子智能体 / 提示词 / 记忆。点一行进这一域,再点一条直接生效;点完菜单不关。 - 状态看得见:启用项绿勾、停用项空框,右侧灰字是条目备注,域行右侧给当前态摘要。
- 条目多也不挡路:每域全量列出、面板自己滚;技能按来源目录分组、记忆按场景分组,已启用的排前面。每个外部技能目录另给一行,点它就是启停整个来源。
- 只放可逆动作:进场景与各类启停;增删改、导入导出、改配置仍各归各页。
- 走宿主官方通道:用 DSH 的输入触发器接口注册,不 patch 官方包;「兼容 → 注入」里两段各一颗开关。
- 「工具 › 提示词」两类都在:全局那组选哪一份写进
AGENTS.md(单选),快捷那组是启停。 - 「快捷提示词」另起一段:只列开着的,点一行把存好的话贴进输入框,不自动发送。
场景与记忆
- 场景 = 分组,记忆 =
.md文件:memories/<场景>/<名>.md,整篇正文自动注入上下文,文件名支持中文。 - 「启用」与「进入」是两件事:启用决定注入按哪个场景走(单选,全关 = 只注入「全局」与
_shared);进入才按档案整套切换 MCP / 技能 / 人设,并把绑定的提示词写进AGENTS.md。 - 场景档案:每个场景搭配 MCP 工具集 / 技能集 / 子智能体 / 记忆;勾的启用、没勾的停用,整段没建 = 该域全部停用,退出时按进场景前的快照还原。
- 场景锁定:锁定后 MCP / 技能 / 子智能体 / 记忆 / 提示词五域的增删改整体只读。
- 删除场景 = 连记忆一起删:场景记录、档案与全部记忆进同一条回收站条目,恢复时整条放回;使用中的场景拒绝删除。
- 导入导出:
.md/.zip(目录名 = 场景,bundle 带附件),同名跳过绝不覆盖。 - 注入预算:默认 128 KiB,放不下的跳过并列出清单。
- 子代理会话不另设开关:注入哪几个域由同一张表决定,但场景与记忆只在顶层注入。
子智能体
- 一个文件一个人设:
subagents/<人设>.md,frontmatter 全可选;output:一行一条写"产出必须长什么样"。 - 人设正文带一层角色框架:正文原样用在
# Persona: <名字>标题下,附授权与边界各一行;人设文件本身不用改。 - 委派:
subagent_manager_run带人设运行、只回最终结果、不进 History;默认新起独立会话,inherit: true继承本次会话已完成的轮次。 - 启停与目录:停用的人设不注入、模型不可见(文件不动);新建 / 导入 / 恢复默认停用。人设目录只列名字 + 描述。
- 目录注入深度(
catalogDepth):默认1= 只在顶层会话注入目录,99= 任何深度都注入;不限制嵌套深度。 - 工具限制按 Agent 预设:每个预设一份白 / 黑名单(互斥),候选只列该预设自己的工具,分「插件工具 / 官方工具 / 其他工具」三段;白名单会并回当前所有
mcp__*工具(只勾read拦不住 MCP 里的 shell),保留名run_code会被剔除并注明。 - 模型与来源:都从宿主 LLM 目录里选(选定来源后模型只列该来源的);留空 = 继承主会话。
- 思考强度:档位由所选模型声明;指定了模型时留空 = 用该模型的默认档位。
MCP 服务
- 增删改查、即改即生效:写入
cordis.patch.yml,改前自动备份。级别分「全局 / 应用级」,新增默认全局。 - 工具级开关:单个工具可独立停用(模型看不见也调不到),整台支持批量。
- 停着也能看清单:没在跑的服务器仍显示上次见过的工具名与描述(标「上次运行时」);从没跑过的可以一键启动读取。
- 备注:每台服务器可写一句给模型的提示,随状态段一起注入;曾经连上过、现在连不上的会列出来并标注。
- 密钥打码:默认把凭据整值打码(
$VAR、!!js这类间接引用不动),看明文要令牌;打码值不会被写回配置。 - 迁移与备份:跨项目级 / 全局迁移失败自动回滚;支持 JSON 导出导入。
技能
- 来源一览:项目级 / DSH / Agents / Codex / Claude / 自定义目录,按来源分组。
- 两组权限相反:默认来源的技能可删可停;外部目录可以停用或移除,但里面的技能文件只读。
- 移除 ≠ 停用:移除 = 连目录都不扫(文件零改动,可恢复);停用 = 仍列出但不可调用。
- 同名谁在生效:生效的那份标「首选」,被覆盖的标出来源。
- 自定义目录 / ZIP 导入导出 / 回收站。
提示词预设
- 多套
~/.dsh/AGENTS.md基线一键应用(下一轮对话生效),保留 5 代备份。 - 记得「最近一次应用的是哪份」:就算你手改过
AGENTS.md,也答得出来源。 - 每条预设可写一句"这份是干什么的",只存在插件侧、不进
AGENTS.md。 - 被引用的不能删(场景绑定 / 当前内容 / 退出场景要恢复的那一份),删除进回收站。
- 生效与否就是卡片左边那颗开关:点亮 = 把这一份写进
AGENTS.md;基线是单选,所以关不掉 —— 想换一份就点亮另一份。 - 场景接管期间点亮另一份 = 把该场景改绑到那一份;锁定时拒绝。
- 快捷提示词(同页第二段):存一段常用的话,
/里点一下就原样贴进输入框;它不注入上下文,卡片上那颗开关只管这条在/里出不出现。 - 场景可以绑定一组快捷提示词:进入本场景只启用勾的那几条、其余停用,退出按进场景前的开关还原。
- 两组各自是一张可折叠卡片(点卡片头收起 / 展开);快捷那组卡片头有「全选 / 取消全选」,全局那组没有 —— 那一档是单选。
历史会话
- 按项目分组、搜索、批量恢复 / 永久删除、保留期自动清理;工作区登记被删后可一键重新登记。
- 导入 Claude Code / Cursor / Codex / 任意文本(工作区可挑、可浏览、可给路径);导出 Markdown / JSONL,分三档累进:仅正文 → 正文 + 工具 → 正文 + 工具 + 思考。导出是转录,不是备份 —— 要留全量请用「归档」。
宿主兼容
- 「兼容」页:宿主版本、能力可用数、每个动作走原生 / 适配 / 不可用、降级项与原因;三个写入口:访问令牌、注入设置、模型工具表。
- 命令行:
node scripts/doctor.mjs(体检)、node scripts/host-deps.mjs --fix(依赖对齐)。 - 压制型预设(
minimal这类)下本插件的注入默认停用,可在「兼容」页按域强制打开。 - 关掉「技能」「提示词」的勾选 = 连宿主那份一起停(这两域在标准预设下由官方送);其余三域勾选完全生效。
- 注入长什么样:每个域一条
<system-reminder>,# 板块标题+ 正文 + 一句"以本份为准";正文里的</system-reminder>会被转义。
数据落点
| 内容 | 位置 |
|---|---|
| MCP 定义 | ~/.dsh/cordis.patch.yml(插件只写它;改前自动备份到 hub 的 backups/) |
| 技能策略 / 自定义目录 | ~/.dsh/tool-management/skills-state.json |
| 技能 / 记忆 / 人设 / 预设 | ~/.dsh/tool-management/{skills,memories,subagents,prompts}/ |
| 子智能体启停 | ~/.dsh/tool-management/subagents-index.json |
| 回收站(技能 / 人设 / 预设 / 场景) | ~/.dsh/tool-management/trash/{skills,subagents,prompts,scenes}-trash/ |
| 记忆回收站 | ~/.dsh/tool-management/memories-trash/(在 hub 根下,不在 trash/ 里) |
| 归档账本 / 保留期 | ~/.dsh/tool-management/history-*.json |
| 记忆索引 / 场景 / 档案 | ~/.dsh/tool-management/memories-index.json |
| MCP 侧车(停用表 / 已知工具 / 备注 / 设置) | ~/.dsh/tool-management/mcp-*.json |
| 注入设置(六个域开关) | ~/.dsh/tool-management/inject-settings.json |
| 模型工具表(关掉的工具 + 存下的方案) | ~/.dsh/tool-management/tool-table.json |
| 场景页界面设置(进场景前弹不弹预览卡) | ~/.dsh/tool-management/scene-settings.json |
| 运行日志 / patch 备份 | ~/.dsh/tool-management/tool-management.log · backups/ |
插件安装目录里不存用户数据(dsh plugin update 会整体替换该目录)。备份按每份 patch 文件各留 5 份(全局与每个 profile 各自计),一次批量操作就可能把某层的 5 个槽位吃掉。
配置与安全
| 字段 | 说明 |
|---|---|
token | 访问令牌。设了之后所有写操作 + 明文密钥都要求 x-dsh-token;不设时明文接口一律关闭。也可改用环境变量 DSH_PLUGIN_TOOL_MANAGEMENT_TOKEN。 |
tokenDisabled | true = 令牌保留在配置里但当前不生效(兼容页「关闭保护」写的就是这一行)。写操作不再要求令牌,明文查看仍然要。 |
maxBodyBytes | 请求体上限,默认 88 MiB。 |
磁盘上的明文(必读):打码只发生在界面展示;MCP 的 env / headers 与插件自己的 token 在 cordis.patch.yml(及各 profile 副本)里始终明文,改配置前整份文件会备份进 ~/.dsh/tool-management/backups/(不加密、不轮转、卸载也不回收)—— 一份密钥最多有 5 ×(含它的 patch 文件数)+ 1 份明文副本。令牌门禁管不到磁盘读取,防线是操作系统的文件权限。清理入口:设置 → 工具 → 兼容 → 「清理旧备份」。
- 浏览器:读写走 cookie,不需要令牌;明文密钥(显示密钥 / 导出)要令牌。令牌在「兼容」页的「访问令牌」块管理:本次启动填一次管到 DSH 退出;写进配置文件要重启生效。
- 销毁方向一律要当场再输一次当前令牌(关闭保护 / 修改 / 删除)—— 本次启动解锁过不算。
- curl / 脚本:带
x-dsh-token,或带浏览器 cookie。 - HTTP 状态码:除安全栅栏的 401 / 403 外,一律 HTTP 200 +
{ ok: false, error }—— 脚本分流请以body.ok为准。 - 端口转发:宿主缺
connection服务时栅栏退到「Host 回环 + 同源」判定,本机进程伪造Host: localhost即可调用写 op。转发到局域网 / 公网的场景务必配令牌 —— 陌生人注入 MCP 命令等同远程执行;「选择文件夹」弹窗用的dir-list能列出任意绝对路径(只读),同一条前提。 - 服务器名避开
__(起名建议):工具全名是mcp__<服务器名>__<工具名>,服务器名里再有__会让它切不唯一,界面上的勾选可能落不到停用表里那条键上。本轮不收紧校验,改为在兼容页出一条提示;起名时避开__就没有这个问题。
常见问题
| 现象 | 解决 |
|---|---|
| 装完没有页面 | 硬刷新;不行重启 DSH。 |
| 重复 MCP 页签 | 删 cordis.patch.yml 里的旧 loader 行后重启。 |
| 改坏配置 DSH 起不来 | 从 ~/.dsh/tool-management/backups/ 取最近的 cordis.patch.yml.<层级>.bak-<时间戳> 覆盖回去(每份 patch 各留 5 份)。 |
| 升级 DSH 后动作不可用 | 设置 → 工具 → 兼容 看原因;doctor.mjs → host-deps.mjs --fix。 |
| 模型调不到某条工具 | 「兼容」页的模型工具表看它是不是被关了(出厂默认关着 15 条);面板和脚本不受影响。 |
approval=never 还要确认吗 | 不弹卡,直接放行并记日志;想问回来切回「工作区内修改」。 |
subagent_manager_run 报 provider 不可用 | 对应 provider 没注册:spawn(默认)/ fork(inherit)分别挂 @deepseek-ai/dsh-subagent-spawn-in-process / -fork-in-process 后重启。 |
场景绑了 A 人设,官方 subagent 还在跑别的 | 官方那两个是宿主的工具,本插件管不到;贴合人设的走 subagent_manager_run,官方只在没有人设贴合或要后台跑时用。 |
开发
npm install
npm run build # tsc + 同步客户端
npm test # 构建 + i18n + 契约测试(纯函数不变量与宿主契约)
npm run check:i18n # 词典自检
npm run doctor # 宿主兼容体检
lib/ 不入版本库,克隆后先 npm run build。改完重启 dsh web 才生效。运行时依赖:fflate(导出打包)、js-yaml(写宿主补丁前的解析校验,惰性加载);@deepseek-ai/* 一律用宿主那份。
部署注意:
npm run build的 profile 镜像清单不含node_modules,本地联调时新增的运行时依赖(如js-yaml)要么在 profile 侧装一份,要么接受"补丁校验跳过并上报"的降级。npm install装到 profile 的正式安装不受影响。
许可证
MIT







