chengdb/dsh-plugin-capability-panel
在 Web GUI 里可视化管理项目的全部能力——Skills、MCP 服务器、快捷消息, 全部支持项目级 / 全局级双作用域,全部可以不离开浏览器完成安装、启停与分发
项目介绍Project Overview
DSH Web GUI 插件,在侧栏浮层中可视化管理 Skills、MCP 服务器与快捷消息,支持项目级/全局级双作用域。可在浏览器内完成安装、启停、编辑与导出,MCP 配置改动即热重挂。适合需集中管理多项目能力的场景。注意 MCP serverName 为进程级,同项目多 session 并存时可能显示冲突。
A DSH plugin that adds a floating panel to the Web GUI for managing Skills, MCP servers, and quick messages across project and global scopes. It supports install, toggle, edit, and export directly in the browser, with MCP hot-reloading on config changes. Use it to centralize capability management across projects. Note: MCP serverName is process-level, so concurrent sessions in one project may show a conflict indicator.
请帮我了解并安装插件:【dsh-plugin-capability-panel】【https://github.com/chengdb/dsh-plugin-capability-panel】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add "github:chengdb/dsh-plugin-capability-panel#v0.7.0"
把 chengdb/dsh-plugin-capability-panel 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
@chengdb/capability-panel
一个 DeepSeek Harness(DSH)插件: 在 Web GUI 里可视化管理项目的全部能力——Skills、MCP 服务器、快捷消息, 全部支持项目级 / 全局级双作用域,全部可以不离开浏览器完成安装、启停与分发。

它能做什么
| 能力域 | 浏览/搜索 | 新增/安装 | 编辑 | 启用/禁用 | 删除 | 导入/导出 |
|---|---|---|---|---|---|---|
| Skills | ✅ 双作用域 + 详情 | ✅ 上传 / 宿主路径 / URL 三种来源 | ✅ | ✅ 一键开关 | ✅ 两击确认 | ✅ 下载 zip / 复制到宿主目录 |
| MCP 服务器 | ✅ 双作用域 + 实时挂载状态 | ✅ 表单新增(stdio/sse/http) | ✅ | ✅ 热重挂 | ✅ | ✅ .mcp.json 与 Claude Code 格式兼容 |
| 快捷消息 | ✅ 双作用域 + 搜索 | ✅ 多行正文 | ✅ | ✅ | ✅ | ✅ JSON 配置文件即数据 |
亮点
🗂 一个面板,管住三个能力域
侧栏底部(Settings 旁)新增「能力面板」入口,点击弹出锚定浮层。面板顶部在 快捷消息 / Skills / MCP 三个域之间切换,每个域内部再按 全部 / 项目 / 全局 过滤,支持关键词搜索。头部下拉框还可以把"项目" 钉选到任意已知工作区——不切 session 也能管理别的项目。

📥 Skills:三种方式安装,一键导出分享
- 浏览器上传:拖入单个
.md、整个 skill 目录、或.zip压缩包 (浏览器端 DecompressionStream 解压,零依赖);路径防穿越, 200 文件 / 20MB 上限。 - 宿主路径:把磁盘上已有的 skill 目录或
.md复制进受管根。 - URL 下载:GitHub 仓库(
https://github.com/<owner>/<repo>,可带/tree/<branch>/<子目录>)、任意.zip、raw.md(宿主端 30MB / 30s 限速)。
压缩包/仓库归档自动剥离公共顶层目录并定位唯一 SKILL.md;落盘名以
frontmatter 的 name 为准,同名冲突报错、可选覆盖。磁盘格式与官方
filesystem provider 逐字节兼容(flat <name>.md / 目录型
<name>/SKILL.md),装完立刻可被 agent 调用。
导出同样简单:flat skill 直接下载 .md,目录型 skill 在浏览器端打成
store-only zip;也可以复制到宿主任意目录。

⚡ 一键启用/禁用,不动正文
每个 skill 详情卡片上有「已启用 / 已禁用」开关。禁用只写入
user-invocable: false + disable-model-invocation: true 两个扁平键——
正文与其它元数据原样保留,启用即清除恢复。禁用的 skill 会立刻从输入框的
Skills 快捷弹层中消失。只读条目(custom / bundled)不显示操作按钮。

🔌 MCP:改配置即热挂载,不重启、不改 preset
- 配置文件与 Claude Code 的
.mcp.json格式兼容:项目级<projectRoot>/.mcp.json,全局级<dshHome>/mcp.json,同名 key 项目级覆盖全局级;env/headers/args支持${VAR}环境变量插值。 - host 插件监听
agent/created,把启用的 server 逐个挂进 agent 自己的 Cordis context——工具以mcp__<serverName>__<tool>出现在该 session 内,按 session 隔离,agent 销毁自动卸载。 - 面板里每次新增/编辑/删除/启停,都会自动重挂受影响 session 的 MCP 连接;列表上的圆点实时显示挂载状态(绿=已挂载,黄=冲突,灰=未挂载)。

💬 快捷消息:常用提示词,一键入草稿、一键直发
把高频提示词存成快捷消息(项目级 .dsh/quick-messages.json +
全局 <dshHome>/quick-messages.json),面板里增删改、启停、搜索。
禁用的消息只从输入框弹层隐藏,配置仍然保留。

⌨️ 输入框里的「能力工具组」
输入框左下角注册了一组三个按钮(顺序与面板域 Tab 一致): 快捷消息 / Skills / MCP。点击在输入框上方展开弹层,三个弹层共用 同一锚点,切换不跳位;Esc / 点击外部关闭,彼此互斥。

Skills 弹层:按项目/全局分组列出 user-invocable 的 skill(可搜索), 点击把
/name追加进草稿——与宿主/菜单同一口令形式,发送后宿主 自动注入 skill 正文。草稿里已含已知口令时按钮实心变绿。快捷消息弹层:点击把正文追加进草稿;行尾 hover 浮现纸飞机按钮, 一键直发整条消息(不经过草稿)。

MCP 弹层:带已启用数量徽标,逐行开关直接启用/禁用 server—— 写配置文件 + 自动热重挂,与面板同一语义。

工作原理
浏览器客户端 宿主(host)
┌─────────────────────┐ RPC ┌──────────────────────────────┐
│ sidebar.footer │ ────────► │ ctx.capabilityPanel 服务 │
│ └ 能力面板浮层 │ /capability│ ├ skills 磁盘 CRUD │
│ conversation.input │ -panel │ ├ mcp 配置 CRUD + │
│ └ 能力工具组×3 │ 通道 │ │ 热挂载 loader │
│ conversation.input │ │ └ quickMessages 配置 CRUD │
│ └ 弹层×3 │ │ agent/created → dsh-mcp-client│
└─────────────────────┘ └──────────────────────────────┘
- 不重复注册 skills provider:读取复用
ctx.skills与受管根目录直读, 与官方 filesystem provider 口径一致。 - MCP 按 session 隔离:挂在 agent 自己的 Cordis context 上,agent
dispose 即自动卸载;已知限制是
serverName预留为进程级,同项目两个 session 并存时后到者显示黄色冲突圆点,不影响先挂载者。 - UI 纯增量:侧栏入口与输入框按钮都注册在宿主的列表槽(list slot)里, 不顶替、不遮蔽任何内置 UI,也不绑定特定 session。
安装
安装最新 release(推荐,版本钉死):
dsh plugin --profile web add "github:chengdb/dsh-plugin-capability-panel#v0.7.0"
dsh web # 打开 Web GUI,侧栏底部可见「能力面板」
跟随 master 最新代码(无 release 时可临时用):
dsh plugin --profile web add "github:chengdb/dsh-plugin-capability-panel#master"
卸载
dsh plugin --profile web remove @chengdb/capability-panel
移除后重新运行 dsh web 即可,侧栏入口与输入框工具组随之消失。卸载不会触碰
你已经管理的任何数据——.dsh/skills、.mcp.json、quick-messages.json
等文件全部原样保留,随时可重新安装接管。
本地开发
cd <本仓库路径>
pnpm install
pnpm build # tsc(lib/*.js + .d.ts)→ tsdown(lib/client.js 包裹版)
dsh plugin --profile web add "link:<本仓库路径>"
dsh web
发布新版本
pnpm build # 重新构建 lib/ 产物
git add -A
git commit -m "chore: release vX.Y.Z" # 与 package.json 版本号一致
git tag vX.Y.Z
git push origin master --tags
gh release create vX.Y.Z --generate-notes # 可选,创建 GitHub Release 页面
lib/构建产物随提交进入 git,GitHub 安装(github:...#<tag>)直接可用,无需 在发布机上额外构建;每次发版前务必重新pnpm build并提交lib/。- tag 名即安装时
#后面的版本号,#master始终跟随最新提交。
目录结构
src/
index.ts 宿主插件入口——暴露 ctx.capabilityPanel 服务
client.ts 客户端插件入口(侧栏入口 + 输入框工具组 + 弹层)
remote.ts host↔client RPC 接线(endpoint 按域前缀路由)
shared/ 项目根探测 / 文件写锁 / skill 根定位(两域共用)
skills/ skills 域:磁盘读写、CRUD、安装/导出、URL 下载、校验
mcp/ MCP 域:.mcp.json 读写、agent 自动挂载、写后热重挂
quick-messages/ 快捷消息域:JSON 配置读写、CRUD
client/ React 面板、三个 composer 弹层、zip 工具、自含样式
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS