跳到主内容

dsh-web-plugins/packages/dsh-web-plugins

20Star1Fork1Issue0Watching

为 webdsh 浏览器版 DSH 提供插件管理:注册 /plugin 命令并在「设置 → 插件」下增加「添加插件」「已安装」标签页——浏览器没终端,dsh plugin add 用不了。

机审证据4/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科

ⓘ 此插件是大仓库 futrime/webdsh 的子包,星数与活跃度统计的是整个仓库。

语言
TypeScript
License
Apache-2.0
分支
main
deepseekdeepseek-harnessdshdsh-plugin

安装

命令web profile
$ dsh plugin --profile web add github:futrime/webdsh#path:packages/dsh-web-plugins

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 futrime/webdsh/packages/dsh-web-plugins:先查看仓库 https://github.com/futrime/webdsh 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

给浏览器版 DSH(webdsh)加上"在网页里装插件"的能力:把原本要敲 dsh plugin add 的命令变成 /plugin 斜杠命令,并在设置页里多出两个标签页,让用户用表单也能安装、启用、停用、卸载插件。

核心能力

  • 注册 /plugin 斜杠命令:在聊天 composer 里就能装、列、删、启、停插件
  • 在「设置 → 插件」下注入两个标签页:「Add a plugin」用于安装,「Installed」用于管理
  • 安装来源覆盖 npm 包名、tarball URL、owner/repo#ref 形式的 GitHub 仓库、本地文件系统路径,以及用户从自己电脑上传的 .tgz / .tar.gz 文件
  • 在「Installed」标签页里直接开关、删除已安装的插件,每行显示版本、状态、是否带有浏览器侧面板
  • 没有声明 cordis 组合层的纯依赖包会被识别出来,对应的 Enable 按钮自动置灰并说明原因

技术实现

  • 语言: TypeScript(host 端)+ TypeScript + React(client 端)
  • 关键依赖: @deepseek-ai/cordis(host 端上下文)、@deepseek-ai/dsh-commands(命令注册)、@deepseek-ai/dsh-client-runtime 与 @deepseek-ai/dsh-client-ui-settings(client 注入目标,由 dsh.client.inject 声明)
  • 架构模式: Cordis 双面插件;host 端 src/index.ts 通过 apply(ctx) 把 plugin 命令注册进 ctx.commands;client 端 src/client.tsx 通过 apply(ctx) 调用 slots.inject('settings.plugins.tab', ...) 在设置侧栏挂载两个标签组件。安装器逻辑不归本插件所有,由宿主 app 通过 globalThis.__DSH_WEB_PLUGINS__(client 端)与 setPluginManager()(host 端)注入
  • 入口文件: packages/dsh-web-plugins/src/index.ts(host 端)+ packages/dsh-web-plugins/src/client.tsx(client 端),由 package.json 的 exports 暴露为 . 与 ./client

适用场景

所有在 webdsh 浏览器版 DSH 上想自己加装第三方插件、又不想打开终端敲 dsh plugin add 的人——既能在聊天框里用 /plugin 走命令,也能在设置页里点几下完成安装、启停与卸载。

前置依赖与兼容性

依赖最低版本说明
DSH0.1.0-rc.7父 monorepo 将全部 @deepseek-ai/dsh-* 固定为 0.1.0-rc.7;本插件的 cordis.patch.yml 与 dsh.client.platform="web" 假设宿主 webdsh 使用同一系列
Node.js>=22父 package.json 的 engines.node 要求;本插件自身未单独声明 engines
平台Web(浏览器)packages/dsh-web-plugins/package.json 的 dsh.client.platform 显式限定为 web,非 web profile 不会加载此插件
原生模块无仅 TypeScript / React,宿主依赖里的 v86 / sql.js / WebContainers 等不归本插件

安装方式

dsh plugin --profile web add github:futrime/webdsh/packages/dsh-web-plugins

配置项

本插件无需额外配置。安装源(npm 名 / tarball / 仓库 / 路径 / 本地文件)由用户在使用时填入,不是 schema 字段;插件管理器本身由宿主 webdsh 注入(globalThis.__DSH_WEB_PLUGINS__ 与 setPluginManager()),用户不需要手动设置。

常见问题

Q: 安装 / 启用 / 卸载后要立即生效吗?

A: 不需要任何额外步骤,但页面要刷新一次。插件组合在启动时固定——「Add a plugin」和「Installed」两个标签页每次变更都会提示「Reload to apply — composition is fixed at boot」,点页面上的「Reload now」按钮或手动刷新即可。

Q: 启用按钮是灰的、点不动怎么办?

A: 该包没有声明 cordis.patch.yml(组合层),属于纯依赖——src/client.tsx 的 Enable 按钮在这种情形下被永久 disabled,并显示 tooltip "This package adds no rows to the composition."。它没法给组合增加任何行,所以没有开关可开。

Q: 可以从本地 .tgz 文件安装吗?

A: 可以。Settings → 插件 → Add a plugin 标签页里有「From file…」按钮,accept=".tgz,.tar.gz,application/gzip,application/x-gzip";文件会先被 stage 到宿主虚拟文件系统,再走 install。

Q: 这个「Installed」标签页和「Plugin list」有什么关系?

A: 「Installed」只列出你用本插件安装的插件。构建时随 webdsh 一同发布的插件是构建期 composition 层,不在「Installed」里出现,也没法在那里关掉——它们在「Plugin configuration」和「Plugin list」里。

Q: /plugin 命令和设置页里的两个标签页是同一个东西吗?

A: 是的。src/index.ts 注册 /plugin 命令,src/client.tsx 注册两个标签页——同一插件的两个面:命令行面给聊天 composer 用,UI 面给设置页用。

Q: 这个插件只能在浏览器里用吗?

A: 是。packages/dsh-web-plugins/package.json 的 dsh.client.platform="web",platform 不匹配的 profile 不会加载它。

Q: 安装时报 "The plugin manager is not ready yet." 怎么办?

A: 这是宿主还没把 PluginManager 注入到 setPluginManager() 时段报的——通常出现于启动早期。如果持续存在,说明你运行的 webdsh 构建没有装插件管理器,请检查 host 是否正常。

上手难度

入门 — 打开设置页 → 插件就能用,没有 schema 配置项,也不需要命令行知识。

已知问题与限制

  • 组合在启动时固定:任何 install / enable / disable / remove 都要 reload 页面才会真正生效,源码与 UI 文案已明确提示(src/client.tsx:184-208、src/index.ts:90-100)
  • Enable 按钮对没有 cordis 组合层的包被永久置灰,提示文案 "This package adds no rows to the composition." 不会自动消失(src/client.tsx:252-258)
  • 仅 web profile 可用:dsh.client.platform="web",在 cli / api 等其他 profile 下既不加载 host 端也不加载 client 端(packages/dsh-web-plugins/package.json:13-24)
  • host 端 manager 是模块级单例变量(src/index.ts:33),需要宿主 app 主动调用 setPluginManager() 注入;若宿主忘了注入,/plugin 命令会一直返回 "The plugin manager is not ready yet."(src/index.ts:73-75)

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/futrime/webdsh/packages/dsh-web-plugins)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录