dsh-mcp-studio
維護狀態: 活躍functy23/dsh-mcp-studio
DeepSeek Harness 的 MCP 服務與 Skills 管理器:面板裡增刪改 MCP 行、掃描匯入其他 Agent 配置、管理 Skills(DSH Web 外掛)
$ dsh plugin add dsh-mcp-studio1
星數
0
Fork
TypeScript
語言
MIT
授權條款
2026-09-26
建立於
2026-09-27
最近推送
README
dsh-mcp-studio
DeepSeek Harness 的 MCP 服务与 Skills 管理器 —— Tauri 桌面版的扩展面板,整合成一个跨端插件。
📦 这是什么
Tauri 桌面版(deepseek-harness-desktop)的扩展面板功能原本分散在三个互相依赖的插件里:
| 上游包 | 作用 | 依赖 |
|---|---|---|
dsh-tauri-panel-extension |
扩展面板本体:Skills / MCP / 插件市场 三个 tab + host 路由 | dsh-tauri、dsh-tauri-ui |
dsh-tauri |
宿主/客户端框架桥:defineRoutes、defineService、definePanel、defineRegister、locale、store |
— |
dsh-tauri-ui |
面板用的组件库:Button/Chip/Modal/SegmentedControl/PanelPage/图标… | dsh-tauri |
要装 MCP 管理,就得把这三个一起装上,而且只在 Tauri 发行版里可用。
dsh-mcp-studio 把它们整合成一个包:上游源码原样搬运(src/panel、src/vendor/dsh-tauri、src/vendor/dsh-tauri-ui),
用构建期模块映射(src/bridge)把旧的裸包名 dsh-tauri / dsh-tauri/client / dsh-tauri-ui/client 指到本地文件,
再补上通用化所需的最小改造 —— 界面本身一行 UI 都没重写。
✨ 整合方式
src/ ← 活代码:从产物入口走得到的部分
├── panel/ ← dsh-tauri-panel-extension(原样搬运)
│ ├── host/ service(mcp / skills / agents / repos / restart / rmtree)、routes(mcp / skill / import / roots / host)
│ ├── client/ components(mcp-tab / mcp-editor-form / mcp-import-dialog / skills-tab / extension-panel / market-tab)、
│ │ register(extension-panel / skill-creator-prefill / styles)、locales、styles、store、apis
│ └── shared/
├── vendor/
│ ├── dsh-tauri/ ← dsh-tauri(host 框架工具 + client 框架桥;Tauri 专属的 invoke/iframe 桥保留但不进产物)
│ └── dsh-tauri-ui/ ← dsh-tauri-ui(面板用到的组件与样式工具)
└── bridge/ 构建期模块映射:旧裸包名 → 本地源码
vendor-archive/ ← 走不到产物入口的 vendor 子树(Tauri 专属桥、未搬运模块的测试)
不参与构建 / typecheck / 测试,只作上游对照
产物只有两个文件:lib/index.js(host 半,ESM)与 lib/client.js(client 半,DSH ModuleLoader CJS)。
通用化改造(三处适配 + 行为修复)
- 模块映射:
dsh-tauri、dsh-tauri/client、dsh-tauri-ui/client→src/bridge/*,因此上游源码不需要改 import。 - profile 探测(
src/panel/host/service/profile.ts):上游只认--profile开关(Tauri 壳会传), 嵌入 Web / Desktop 后必须补上DSH_PROFILE/DSH_PROFILE_DIR/ 启动参数里的<DSH_HOME>/profiles/<name>, 否则 MCP 行会写错 profile。 - 独立标识:插件 id 与路由前缀从
dsh-tauri-panel-extension改为dsh-mcp-studio(/dsh-mcp-studio/api/*), 可与 Tauri 版共存、互不覆盖。
此外还有面板行为修复(依赖新版核心的导航能力变化,见 CHANGELOG.md):
- 「新建技能」链路:新版核心把导航能力从
workspaces上移走,改为优先复用活跃会话,拿不到会话才回退上游链路。
Tauri 专属部分(dsh-tauri/client 的 invoke / listen / iframe 消息桥、桌面侧边栏注入)保留在 vendor 里但不被引用,
所以产物不会访问 window.__TAURI__,在 Web 与 Desktop 上同样工作。
🚀 安装
当前只支持 DSH Web 版 —— 插件声明的是 dsh.client.platform: web(面板的客户端半注册在 Web 客户端上):
dsh plugin --profile web add dsh-mcp-studio@latest
包内声明了 dsh.bundle.patch,安装即自动挂载;host 半更新后重启一次 DSH,然后硬刷新浏览器(Cmd/Ctrl+Shift+R)。
桌面版(
--profile desktop)目前不可用,请勿安装。 桌面版 profile 用的是 Electra 客户端 (客户端能力由@deepseek-ai/dsh-client-runtime提供),而本插件的客户端半依赖 Web 客户端的 官方模块(ui-layout / ui-primitives / ui-renderer / locale)。两者不通用,装上后侧边栏不会出现「扩展」。 Tauri 版同理(本插件只是把 Tauri 版的三个包搬过来整合,产物里没有任何 Tauri 运行时依赖, 但也不反过来替换 Tauri 版的原生插件)。
本地开发(link):
pnpm install && pnpm build
# ~/.dsh/profiles/<profile>/package.json
# "dependencies": { "dsh-mcp-studio": "link:/abs/path/to/dsh-mcp-studio" }
# "dsh": { "profile": { "bundles": [ ..., "dsh-mcp-studio" ] } }
pnpm install --dir ~/.dsh/profiles/<profile>
🧭 界面
装好后侧边栏出现 扩展(Puzzle 图标),点开就是原来的三 tab 面板:
| Tab | 能力 |
|---|---|
| MCP | 服务器列表(项目级 / 全局、启用状态、传输方式、URL / 命令)、新增与编辑表单、启用 / 停用、重启、连接检查、复制片段、从其他 DSH profile 或 Claude / Cursor / Windsurf / VS Code 配置导入扫描、JSON 导出导入 |
| Skills | 技能列表(按来源分组)、搜索、启用 / 停用、查看与编辑 SKILL.md、新建技能、删除、打开目录、刷新 |
| 插件市场 | 面板内嵌市场入口(检测到市场服务时才接管,否则保留其原设置页入口) |
技能启停沿用上游策略:写 SKILL.md 的 user-invocable 策略位,不新增旁路状态。
🌐 HTTP API
面板的客户端半与脚本共用同源路由(沿用上游的安全闸门:变更方法要求本机回环来源、Origin 与 Host 不符直接 403):
| 方法 | 路径 |
|---|---|
| GET | /dsh-mcp-studio/api/skills、/api/mcp、/api/skill?name=、/api/roots、/api/import/scan |
| POST | /api/mcp、/api/mcp/toggle、/api/mcp/check、/api/mcp/copy、/api/skills/refresh、/api/skill、/api/skill/policy、/api/import/apply、/api/roots、/api/open/dir、/api/host/restart |
| DELETE | /api/mcp、/api/skill、/api/roots |
🛠 开发
pnpm install
pnpm typecheck # tsc --noEmit,解析宿主真实类型(当前全绿)
pnpm build # node scripts/build.mjs → lib/index.js + lib/client.js
pnpm test # node scripts/run-tests.mjs(vitest;见下方说明)
本仓库没有 CI:验证依赖 DSH 宿主与 macOS 签名,跑在干净 runner 上只能验一半, 所以
typecheck/test/build一律以本地为准。
pnpm test不是裸vitest run:vite 加载的 rollup 原生绑定既没签名,DSH 自带 Node 又带 hardened runtime,两处都会让dlopen失败。包装脚本scripts/run-tests.mjs会先补一次 ad-hoc 签名, 再挑一个不带 hardened runtime 的 Node 跑 vitest(找不到会给出下一步)。旧裸包名的映射共三处,改一处要三处同改:
scripts/build.mjs(esbuild alias)、tsconfig.json(paths)、vitest.config.ts(resolve.alias)。
构建用 esbuild:DSH 运行时的 Node 开启了 macOS 库验证(library validation), rollup/rolldown 的
.node绑定因 Team ID 不同会dlopen失败。详见 AGENTS.md。
🙏 鸣谢
- deepseek-harness-desktop(Tauri 桌面版,作者 Hairyf 与贡献者)——
本项目搬运的
dsh-tauri-panel-extension、dsh-tauri、dsh-tauri-ui三个包全部来自该仓库, 界面、交互与 host 服务逻辑均为其原始实现;没有它就没有这个插件。请优先支持上游与 Tauri 桌面版。 - 官方插件开发文档:https://deepseek-harness.github.io/deepseek-harness/develop/basic/
📄 License
MIT(见 LICENSE)。搬运的上游代码同样以 MIT 发布,并附带 Additional Terms — No Commercial Secondary Development: 不得用于商业性二次开发,本项目亦以非商业开源形式分发。
更多「MCP 與協定」外掛
ruflo
作者 ruvnet
原版智慧體元框架(meta-harness):支援多智慧體叢集部署、自主工作流編排與對話式 AI 系統構建,內建自適應記憶、自學習智慧與 RAG 檢索,原生整合 Claude Code / Codex / Hermes 等大量工具。
reactive-resume
作者 reactive-resume
開源簡歷製作外掛,強調隱私保護,支援自定義、可移植和自託管。
everos
作者 evermind-ai
為所有 AI 智慧體提供的便攜統一記憶層,本地優先、Markdown 原生、資料歸使用者所有,跨應用與工作流自進化。
openpencil
作者 zseven-w
全球首個開源 AI 原生向量設計工具,支援併發智慧體團隊,可在畫布上直接通過提示詞生成 UI。
