dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness 的自定义插件集合。 为 Web 设置页贡献管理面板、为左栏贡献一个 MCP 市场入口,并提供一套可复制扩展的面板骨架。
包 · 设置页分区 · 能做什么 @dsh-plugins/mcp-panel · MCP 服务 · 添加 / 编辑 / 删除 / 启停 MCP 服务器,两种传输方式,自定义环境变量与请求头,展开查看 URL 与工具列表 @dsh-plugins/skill-panel · 技能 · 列举技能、阅读 SKILL.md(内置 Markdown 渲染)、导入 zip 技能包、删除技能、一键新建(自动开新会话并预填 /create-skill) @dsh-plugins/bundled-skills · — · 随插件分发的技能内容(create-skill),首次挂载时自动引导到用户技能目录 @dsh-plugins/mcp-market-panel · 左栏「MCP 市场」 · 浏览 / 搜索两套 MCP 目录(随插件离线分发的社区目录 300 条 + 官方 MCP Registry 实时联网),填凭据后一键安装;安装窗逐字展示将执行的命令与将写入的配置,并报告是否真的连上 @dsh-plugins/plugin-kit · — · 共享基座:面板注册、Remote 代理、字典注册、自抄 UI 控件、零依赖 Markdown 渲染 @dsh-plugins/example-panel · 示例 · 无 Remote 的最小面板骨架,复制它即可开始写新面板
当前未发布到 npm,请从源码安装(见下)。
随插件分发的 MCP 目录数据来自 Apache-2.0 许可的上游,归属见
THIRD_PARTY_LICENSES.md。
0.2.0-rc.1、0.2.1-alpha.1(均实机验证)与 0.2.1-rc.3(源码级复核通过,见下;0.1.7-rc.2 亦通过)。 升级到 0.2.1-alpha.1 时未改一行插件代码:逐文件比对该区间内我们 import 的 18 个 harness 目录(10 个 ts 源码零改动),宿主插槽、--dsw-alias-* 主题词表(只增不删)、 Remote 契约均无破坏性变化;在 0.2.1-alpha.1 运行时上复跑市场/服务/技能三个面板, 左栏挂载、Registry 搜索、安装写路径、状态点三态、编辑回填、技能查看器全部通过,控制台无报错。 0.2.1-alpha.1 → 0.2.1-rc.3(npm 上的最新 stable 为 0.2.1-rc.2,next 为 0.2.1-rc.3) 区间内 typert 协议引入了新增的 resources/principal 面(RemoteMethodOptions 加宽为 { name?, mode?, resources? }、生成物 TYPERT_REMOTE 从字面量对象改为 createTypertRemoteInfo(...) 惰性载体),但均为纯增量:本仓库只用 @Remote / @Remote('name') 两种形式,RemoteError 构造器、RemoteResult 形状、已提交 lib/typert.* 产物被 loader 的校验面(新增字段全是可选)全部兼容;宿主插槽 (settings.section owner close、sidebar.panellist + main 成对注册)、 --dsw-alias-* 词表(rc.3 仍是 101 个,本仓库用到的 31 个全在)、mcp-client 的 cwd: z.string().default('') 均复核无变化。因此无需重跑 `gen:typert`, 也无需改面板代码;升级后请在真实 harness 上复跑一次设置页冒烟。 面板依赖 harness 的 Cordis 插件框架、设置页插槽与左栏 sidebar.panellist / main 插槽。
^22.19.0 || >=24.0.0packageManager: pnpm@11.7.0 锁定)git clone https://github.com/seanchen88/dsh-pluginHive.git
cd dsh-pluginHive
pnpm install
pnpm build # 产出各包的 lib/index.js 与 lib/client.js
# 把需要的面板装进当前 dsh profile
dsh plugin add ./packages/mcp-panel
dsh plugin add ./packages/skill-panel
dsh plugin add ./packages/mcp-market-panel # 左栏「MCP 市场」dsh plugin add 会把包写入 profile 的依赖与 bundle 列表,插件自带的 packages/*/cordis.patch.yml 负责挂载宿主端,浏览器端由包内 dsh.client 声明被自动发现。 重新打开设置页即可看到「MCP 服务」「技能」两个分区;装了市场面板的话,左栏「插件」下方 会出现「MCP 市场」入口。市场面板不自己写配置,安装动作复用 mcp-panel 的写路径, 所以要装市场就同时装 mcp-panel。
只想要其中一个面板,就只 add 其中一个。
打开 设置 → 插件 → 安装引导,填入本仓库的 GitHub 地址 (https://github.com/seanchen88/dsh-pluginHive)。
注意:monorepo 里每个面板是独立包,应用内安装若不能定位到子包目录,请改用方式一。
Streamable HTTP:服务名称、URL、请求头、请求超时时长STDIO:服务名称、命令、参数、工作目录、环境变量、请求超时时长KEY=value。按第一个 = 切分,所以值里可以再含 =(例如 base64 形式的密钥)。留空则不写入该键。
配置最终写入 profile 的补丁层(见数据位置),harness 热加载,无需重启。
⚠️ 环境变量与请求头以明文保存,其中通常含 API Key。请把该文件当作凭据对待,
不要提交进任何公开仓库。
SKILL.md(frontmatter 单独成表),超过 256 KiB 会截断并提示。/SKILL.md 结构的 .zip,上限 25 MiB;同名技能会先征求确认。create-skill 受保护,只能查看。/create-skill 创建一个技能,要求如下:(/create-skill 渲染为技能引用)。若当前部署缺少会话服务,则降级为复制引导词到剪贴板并提示。
安装后入口出现在左栏「插件」下方(不是设置页)。两套目录:
registry.modelcontextprotocol.io,游标翻页、按关键词搜索。安装流程:
${VAR} 占位符会渲染成待填字段(名字含 KEY/TOKEN/SECRET的按密码框显示)。必填项没填时「确认安装」是禁用的 —— DSH 不展开环境变量占位符, 带着 ${...} 装出去只会得到一个连不上的坏服务。
执行第三方 npx / uvx / docker 命令,请先确认来源可信。
「写入结果」与「连接状态」(是否真的拉到工具)。
stdio 与 streamable-http,sse-only 的条目会被明确标为不支持而不是悄悄装坏。
深色主题跟随宿主 token:
市场面板不自己实现持久化:安装走mcp-panel的mcpAdmin远端,因此必须同时安装
mcp-panel。它缺席时面板照常渲染,安装按钮给出降级说明。引导你和模型一起把一个流程沉淀成技能:弄清意图 → 访谈 → 写 SKILL.md → 校验 → 试触发 → 迭代。 含一个零依赖校验器,可单独使用:
node packages/bundled-skills/skills/create-skill/scripts/validate_skill.mjs <技能目录>完整的工程约定、架构不变量与踩坑清单见 AGENTS.md(包括给 AI 编码助手看的部分)。
常用命令:
命令 · 作用 pnpm build · 构建全部包(宿主端 + 浏览器端) pnpm typecheck · 独立类型检查(用 typecheck/stubs.d.ts,不需要 harness checkout) pnpm verify · 类型检查 + zip 导入用例(11 项)+ 市场目录映射用例(33 项) pnpm test:zip / pnpm test:market · 单独跑某一组用例 pnpm watch · 监听构建 pnpm gen:cordis · 生成本地开发用的 cordis.yml pnpm gen:catalog · 从上游 servers.json 重新生成市场面板内置的本地目录(见 THIRD_PARTY_LICENSES.md) pnpm setup:harness · 从本地 harness checkout 链接 @deepseek-ai/* peer(见下) pnpm gen:typert · 重新生成 Remote 产物(需要 harness checkout) pnpm dev:web · 构建后以本仓库补丁启动 harness Web 端
新增一个面板:复制 packages/example-panel/,按 AGENTS.md 的「新增面板」 改名并接线。
pnpm install / build / typecheck / verify 都不需要 DeepSeek Harness 的 checkout: @deepseek-ai/* 是 peer 依赖,类型由 typecheck/stubs.d.ts 提供,构建时按 external 处理。
只有两件事需要它:
--preserve-symlinks,Node 会按包的真实路径向上解析);这时把 harness clone 到同级目录(或用 DSH_REPO 指定路径):
DSH_REPO=/path/to/deepseek-harness pnpm setup:harnesslib/typert.*.js / lib/typert.*.d.ts 是生成产物,但作为构建输入随仓库提交, 这样普通 clone 无需 harness 也能构建;只有改动 @Remote 方法签名时才需要重新生成。
内容 · 位置 MCP 服务配置 · ~/.dsh/profiles//cordis.patch.yml(每台 server 一条 insert 记录,id 形如 mcp-)。市场面板安装的服务写的是同一个文件、同一套实现 用户级技能 · ~/.agents/skills//SKILL.md、~/.dsh/skills//SKILL.md 项目级技能 · /.agents/skills//SKILL.md、/.dsh/skills//SKILL.md 随插件分发的技能 · packages/bundled-skills/skills/(引导安装到用户技能目录,按内容哈希决定是否升级)
面板没出现在设置页 确认 pnpm build 已成功、dsh plugin add 指向的是包目录(含 package.json 与 cordis.patch.yml), 以及 harness 版本满足要求。运行期从本仓库直连时,先执行 pnpm setup:harness。
技能不出现在列表里 最常见原因是 frontmatter 的布尔键写成了 camelCase(userInvocable / disableModelInvocation)—— 必须用 kebab-case(user-invocable / disable-model-invocation),否则整个技能会被静默忽略, 只在宿主日志留一行 warn。用上面的 validate_skill.mjs 检查。
保存 MCP 后界面没反应 写请求的返回值在 harness 重载补丁层时可能丢失,面板已内置超时兜底:超时后重新拉取列表, 以列表结果为准。若列表确实没变,看宿主日志。
`pnpm install` 之后 `pnpm build` 报 `ERR_PNPM_FETCH_404` 说明 @deepseek-ai/* 被链接进了 harness 源码树而 pnpm 又去解析它们的 workspace:* 依赖。 仓库已在 pnpm-workspace.yaml 里关闭 verifyDepsBeforeRun 与 autoInstallPeers 规避; 若你改回了默认值就会复现。
dsh-pluginHive/
├── assets/screenshots/ # README 配图
├── packages/
│ ├── plugin-kit/ # 共享基座(面板注册 / Remote 代理 / UI 控件 / Markdown 渲染)
│ ├── mcp-panel/ # MCP 服务面板(设置页)
│ ├── mcp-market-panel/ # MCP 市场(左栏入口;含内置社区目录,见 THIRD_PARTY_LICENSES.md)
│ ├── skill-panel/ # 技能面板
│ ├── bundled-skills/ # 随插件分发的技能(create-skill)
│ └── example-panel/ # 新面板模板
├── scripts/ # gen-cordis / gen-catalog / gen-typert / setup:harness
├── typecheck/ # 独立类型检查配置 + @deepseek-ai/* 类型 stub
├── cordis.yml # 本地开发加载入口(pnpm gen:cordis 生成)
├── THIRD_PARTY_LICENSES.md # 非 MIT 的再分发内容(内置目录数据等)
└── AGENTS.md # 工程约定与架构不变量每个面板包都是双端结构:src/index.ts(Node 宿主端)与 src/client/(浏览器端), 由 tsdown 分别产出 lib/index.js 与 lib/client.js,再通过包名在运行时接上。
本仓库源码采用 MIT。
随插件分发的 MCP 目录数据来自 Apache-2.0 许可的上游,以及若干被内联进浏览器产物的 第三方运行库(zod / clsx 等)——完整归属见 THIRD_PARTY_LICENSES.md, 再分发时请一并保留。