dsh-skills-mcp-panel:在 Web GUI 里统一管理 Skills 与 MCP

前言

在 DeepSeek Harness(DSH)里跑智能体时,Skills 和 MCP 服务器往往会来自多个目录:全局 $DSH_HOME/skills、各项目的 .dsh/skills,以及 profile 里挂接的 MCP。要在会话里试不同组合,若只能改 YAML 或 frontmatter 再重启进程,迭代会很慢。下面介绍的 dsh-skills-mcp-panel 是面向 DeepSeek Harness Web GUI 的客户端插件:在 Settings → Agent presets 下增加 Skills/MCP 页面,按来源分组列出当前部署聚合到的全部 Skill 与 MCP,支持搜索、状态指示灯与热切换,多数改动无需重启 dsh web。

这是什么

dsh-skills-mcp-panel 由社区维护者 KyattoCat 发布,在 SkillHub 插件目录 中归类为客户端插件。源码与说明见 GitHub 仓库;package.json 当前版本为 0.2.0,许可证 MIT,要求 Node.js >= 22.19。

插件定位一句话:Skills & MCP panel for the DeepSeek Harness Web GUI —— 分组展示、可搜索、可热切换。README 说明该项目由 DeepSeek Flash 在 Harness 内生成,经维护者需求与审阅后落地;安装包以 lib/ 为源码,无构建步骤。

核心功能

设置页入口与界面

安装并重启 dsh web 一次后,打开 Settings → Agent presets → Skills/MCP(入口紧挨 preset 页下方)。页面提供:

  • 搜索框:按名称、描述、路径过滤;
  • 两个标签页:Skills 与 MCP servers,并显示实时数量;
  • 分组:每一行按所属目录归组,组头含名称、完整路径与条数,点击组头可折叠/展开;
  • 卡片:标题、来源、彩色状态灯、状态下拉、详情开关(+ / −);
  • 详情面板:Skill 侧展示 description、when-to-use、root、path、body lines、model-invocable、user-invocable;MCP 侧展示 entry id、transport、command 或 URL、连接阶段、工具数量与工具名列表。

当前 GUI 会话所在项目对应的分组会置顶、默认展开,并带 Current project 标记;其余分组默认折叠。无会话或未注册工作区时,回退到 dsh web 进程自身工作目录对应的项目,保证始终有一个项目分组领先。

分组规则

Skills 按扫描根目录分组:

分组 对应根
Global $DSH_HOME/skills、$DSH_AGENTS_HOME/skills
每个已知项目 <project>/.dsh/skills、<project>/.agents/skills(含 Web GUI 打开过的工作区及 harness 进程 cwd)
每个配置的 skillRoots 项 以该目录名命名的一组

MCP servers 无独立目录时,按运行目录归类:stdio 且 cwd 落在某项目内则归入该项目,其余(HTTP、继承 harness 目录的 stdio)归入 Global。

Skill 四种状态(热生效)

Skill 的 SKILL.md frontmatter 中 disable-model-invocation 与 user-invocable 独立,面板提供四种选择:

选择 disable-model-invocation user-invocable 谁能加载
Enabled 缺省(不写) 缺省(不写) 模型可路由;用户可用 /name
Manual only true 缺省 仅用户;模型目录与 skill 工具不可见
Model only 缺省 false 仅模型;不出现在 / 菜单
Disabled true false 两侧均不可用;仅受信 ctx.skills.get() 调用方

Skill provider 监视根目录,下一次 agent/pre-step 即重发目录,同一会话内生效,无需重启进程。

MCP 启用/禁用(热生效)

MCP 行只有 Enabled / Disabled(界面随语言本地化)。连接未稳定时,选择器旁会显示 loading 或 failed 标签( live 状态,非配置项)。对配置了 patchReload: live 的 profile,写入会通过 config HMR 原地重载该 MCP 连接,同一会话内生效。

状态灯含义

  • 绿色:Skill 模型可达,或 MCP 已连接;
  • 琥珀色:Skill 仅手动,或 MCP 仍在连接;
  • 红色:Skill 解析错误,或 MCP 连接失败;
  • 灰色:已禁用。

写入范围(不越界)

面板不会删除 Skill、不会改 MCP 服务端配置、不会重排你 patch 文件里其它内容。

Skills:仅改动上述两个 invocation 键;需要「缺省 true」的状态会删除键而非写冗余值,回到 Enabled 时文件字节可恢复原状。

MCP:仅在 profile 的 cordis.patch.yml 末尾维护一段带标记的块,例如:

# >>> dsh-skills-mcp-panel (managed — edit these rows from the panel)
- id: "mcp-playwright"
  disabled: true
# <<< dsh-skills-mcp-panel

标记块外内容原样保留;块内列出当前由面板禁用的 server id。全部重新启用时块会被移除。写入经临时文件再 rename,避免 patch 监视器读到半写文件。

若某次改动落在下次启动 dsh 才会生效的 profile 上,页面会在底部提示,而非常驻页脚。

安装与启用

安装属于向 profile 增加新的 bundle 层,dsh.profile.bundles 在启动时读取,因此新装插件后需重启一次 dsh web;之后 Skill/MCP 状态变更可热更新。官方 README 给出的命令如下(均需 --profile web):

# 从 npm
dsh plugin --profile web add dsh-skills-mcp-panel

# 从 GitHub 跟踪仓库
dsh plugin --profile web add github:KyattoCat/dsh-skills-mcp-panel

# 本地开发(绝对路径)
dsh plugin --profile web add link:/absolute/path/to/dsh-skills-mcp-panel

卸载:

dsh plugin --profile web remove dsh-skills-mcp-panel

npm 安装的包内含 lib/、README、cordis.patch.yml 与许可证;仓库中的 tests/、CONTRIBUTING.md 不会进入安装包。从 GitHub 安装时 README 注明无需 allowBuilds 权限。

可选配置

所有配置项均为可选;默认满足 stock dsh web。资料中明确给出的字段包括 patchPath(默认自动检测):用于写入 MCP 禁用行的 patch 文件;检测逻辑会在 $DSH_HOME/profiles 下寻找其 dsh.profile.bundles 包含本插件的 profile,并优先选用带 patchReload: live 的那一个。也可显式指定路径。

典型用法

  1. 按上一节命令安装插件,重启 dsh web。
  2. 在 Web GUI 打开 Settings → Agent presets → Skills/MCP。
  3. 在搜索框中按名称或路径定位某个 Skill 或 MCP。
  4. 展开当前项目或 Global 分组,在卡片上用状态下拉将 Skill 设为 Manual only(调试时只让自己 /name 触发),或将暂时不用的 MCP 设为 Disabled。
  5. 点 + 查看 transport、工具列表等详情,确认连接阶段与状态灯是否与预期一致。
  6. 回到对话会话继续工作;Skill 变更随下一次 pre-step 生效,live profile 上的 MCP 变更随 patch 重载生效。

若你同时维护手写 cordis.patch.yml,MCP 禁用请优先在面板中改标记块内的行,避免与面板管理的 fence 冲突。

适用场景与注意

适合谁:经常在 DSH Web GUI 里切换项目、试不同 Skill 组合或临时关掉某个 MCP 的开发者;希望按目录看清「全局 vs 某项目 vs skillRoots」来源,而不是在多个路径间手动搜 frontmatter 或 patch。

权限与安全:插件以当前 dsh web 进程权限运行,会读写 Skill 的 SKILL.md frontmatter 与 profile 的 cordis.patch.yml。安装前请自行审阅 源码与 LICENSE(MIT),确认与部署策略一致。DSH 社区插件目录(SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;生态理念是「一切皆插件」,本文介绍的是社区维护的客户端扩展,而非内置功能。

局限:安装/卸载 bundle 层仍需重启;对不具备 live patch 重载的 profile,MCP 面板的禁用可能要到下次启动才完全体现 —— 页面会在必要时提示。

链接

在 Web 设置里集中查看、搜索并按来源分组切换 Skills 与 MCP,且多数操作不必重启进程 —— 这是 dsh-skills-mcp-panel 在 DSH 客户端侧补上的那一块操作面板。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜