Skip to content

Releases: SeverusZh/dsh-skills-mcp-group-manager

v0.3.0 — 修复关闭 MCP 时管理器卡死

Choose a tag to compare

@SeverusZh SeverusZh released this 28 Aug 15:19

🐛 修复:关闭 MCP 服务器导致整个 dsh 进程卡死

根因:applyMcpRestrictions() 同步重入死循环。tools.restrict() 会同步发出 tools/change(ScopedLayers.effect 在层变更后立即通知),而插件的 tools/change 监听器会重入 applyMcpRestrictions。由于 restrictDisposers 的 map 条目在 restrict() 返回后才写入,重入调用看不到当前限制,算出相同的 deny 集合后再次调用 restrict() —— 无限同步递归 → 栈溢出 → 整个 dsh 进程冻结(关闭工具在线的 MCP 服务器时触发)。

修复:

  • 每 agent 重入保护(applyingRestrictions Set)
  • 先删后弃:disposer 调用前先删除 map 条目(disposer 清理也会同步 emit tools/change)

验证:

  • 新增 tests/restrict-reentrancy.test.mjs(2 个回归测试,旧代码下均复现 Maximum call stack size exceeded)
  • 全套 47 个测试通过
  • Cordis Plugin 探针在真实宿主进程内验证:旧代码 762 次递归 → RangeError;修复后 1 次 restrict 干净终止
  • 线上实测:启用 github(44 工具在线)→ 禁用 → 干净完成,进程健康

v0.2.5 — 修复 manager_groups_list 输出泄漏 / Fix manager_groups_list output leak

Choose a tag to compare

@SeverusZh SeverusZh released this 28 Aug 12:54

🐛 修复 / Fix

manager_groups_list 一直报错:value.mcp is not a declared property

  • 根因:工具 execute 返回整个 state(含 mcp),但输出 schema 只声明了 groups。
  • 修复:只返回 { groups }(MCP 数据由 manager_mcp_list 提供)。
  • 新增回归断言:verify-boot 直接调用工具验证返回对象不含 mcp 字段。

✅ 验证 / Verified

  • 45/45 测试全绿。
  • verify-boot 真实启动全绿(含新的 no-mcp-leak 断言)。

📦 安装 / Install

v0.2.4 — 批量技能操作提速 / Fast bulk skill grouping

Choose a tag to compare

@SeverusZh SeverusZh released this 28 Aug 12:36

⚡ 优化 / Optimization

添加/移除技能不再逐个串行请求

  • 客户端一次 RPC 发送全部技能名({ id, skills: [...] }),宿主一次写入 + 一次目录失效。
  • 之前 N 个技能 = N 次 HTTP 往返 + N 次磁盘写入,现在 = 1 次。
  • 批量去重(含输入数组内部重复)。

✅ 验证 / Verified

  • 45/45 测试全绿(新增批量状态操作测试)。
  • verify-boot 真实启动全绿:批量添加(2 skills, 1 call, 去重)、批量移除、MCP 经 loader 挂载/卸载。
  • Cordis 探针验证:客户端 bundle 正常、RPC 正常、无代码级其他问题。

📦 安装 / Install

cd ~/.dsh/profiles/web && pnpm update dsh-skills-mcp-group-manager --latest
sudo systemctl restart dsh-web

v0.2.3 — 修复分组技能添加 bug / Fix group-skill add bug

Choose a tag to compare

@SeverusZh SeverusZh released this 28 Aug 12:23

🐛 修复 / Fix

分组添加技能时,分组 id 的字符被当成技能加入

  • 根因:GroupSection→GroupCard 的 onAddSkills 包装器是单参数 (names),但 GroupCard 以 (group.id, names) 双参数调用——包装器的 names 绑定到了分组 id,真正的技能名数组被丢弃,for (const name of names) 逐字符迭代了分组 id。
  • 修复:包装器改为双参数 (id, names) => onAddSkills(id, names)
  • 新增回归守护测试(防止单参数包装器回归)。

✅ 验证 / Verified

  • 43/43 测试全绿。

📦 安装 / Install

cd ~/.dsh/profiles/web && pnpm update dsh-skills-mcp-group-manager --latest
sudo systemctl restart dsh-web

v0.2.2 — 移除过时构建脚本 / Remove obsolete build script

Choose a tag to compare

@SeverusZh SeverusZh released this 28 Aug 12:06

🧹 更新 / Update

  • 移除过时的 postinstall / scripts/setup-links.mjs(0.1.x 时代的依赖符号链接脚本)。
  • 0.2.x 宿主零外部依赖,dsh plugin add 单命令即可,不再触发 pnpm allowBuilds 拦截(消除 ERR_PNPM_IGNORED_BUILDS)。
  • 保留 postuninstall 清理脚本(卸载时删除状态目录)。

📦 安装 / Install

dsh plugin --profile web add dsh-skills-mcp-group-manager

v0.2.1 — 修复包名一致性 / Fix package-name consistency

Choose a tag to compare

@SeverusZh SeverusZh released this 28 Aug 12:03

🐛 修复 / Fixes

无法进入 DSH(改名后崩溃循环)的根因修复:

  • 客户端 bundle 的注册 id 与 RPC 路径已统一为包名 dsh-skills-mcp-group-manager
  • 之前 bundle 仍以旧名 dsh-mcp-skill-manager 注册,client-modules 模块图按包名解析失败 → 整个 Web 应用无法启动。
  • 新增 3 个一致性守护测试(注册 id = 包名、RPC 路径一致、style 标签身份)。

✅ 验证 / Verified

  • 42/42 测试全绿(含单命令安装的无外部依赖测试)。
  • verify-boot 真实启动全绿:RPC 读写、22 skills、MCP 经 loader 动态挂载/卸载。

📦 安装 / Install

dsh plugin --profile web add dsh-skills-mcp-group-manager

v0.2.0 — 单命令安装 / Single-Command Install

Choose a tag to compare

@SeverusZh SeverusZh released this 28 Aug 09:38

🚀 更新亮点 / Highlights

  • ⚡ 单命令安装 / Single-command install — 宿主半插件零外部包依赖(仅 Node 内置模块),dsh plugin add dsh-skills-mcp-group-manager 一条命令即可完成安装,无需符号链接或构建步骤。
  • 🖥️ 入口精简 / Streamlined entry — 移除侧边栏底部图标,仅保留会话头部右上角带 "Skills&MCPs" 标签的开关。
  • 📖 README 美化 / Beautified README — 中英双语介绍 + 徽章。

✨ 功能 / Features

  • 🎯 Skill 分组 — 创建/重命名/删除分组,分组可折叠;成员与挑选器均为列表 + 多选,支持搜索过滤后的全选/全不选与批量增删。
  • 🧠 注入过滤 — 上下文只注入启用分组中出现的 Skill(并集去重,一次一个);未分组 Skill 默认不注入;切换分组实时刷新目录。
  • 🔌 MCP 管理 — 枚举全部 MCP 服务器(profile 配置 + 用户新增),独立开关;用户新增的 MCP 动态挂载并持久化,重启自动恢复。
  • 💾 持久化~/.dsh/mcp-skill-manager/state.json(原子写),下次会话默认沿用上次分组设置。

📦 安装 / Install

dsh plugin --profile web add dsh-skills-mcp-group-manager

🗑️ 卸载 / Uninstall

dsh plugin --profile web remove dsh-skills-mcp-group-manager

v0.1.0 — DeepSeek Harness Skills & MCPs Group Manager

Choose a tag to compare

@SeverusZh SeverusZh released this 28 Aug 09:12

首个发布版本。

功能

  • Skill 分组:创建/重命名/删除分组,分组可折叠;成员与挑选器均为列表 + 多选,支持搜索过滤后的全选/全不选与批量增删。
  • 注入过滤:上下文只注入启用分组中出现的 Skill(并集去重,一次一个);未分组 Skill 默认不注入;切换分组实时刷新目录。
  • MCP 管理:枚举全部 MCP 服务器(profile 配置 + 用户新增),独立开关;用户新增的 MCP 动态挂载并持久化,重启自动恢复。
  • 持久化:~/.dsh/mcp-skill-manager/state.json(原子写),下次会话默认沿用上次分组设置。
  • UI:对话框左侧分组管理面板 + 会话头部开关(带 Skills&MCPs 标签)+ 侧边栏底部固定开关。

安装

dsh plugin --profile web add dsh-skills-mcp-group-manager
node <插件目录>/scripts/setup-links.mjs

卸载(数据随插件一并删除)

dsh plugin --profile web remove dsh-skills-mcp-group-manager