🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

插件控制台 AlexYin-Tongji/dsh-plugin-console

DeepSeek Harnessv0.3.2
AlexYin-Tongji58 天前有提交已提供中文文档扫描:含敏感能力

在设置页管理插件安装、更新、删除与试运行

29.8/100
综合分
1
GitHub 星标
289
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plugin-console
npm 源 · dsh-plugin-console 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
数据截至 2026/10/23·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 58 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-plugin-console @ 0.3.2
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/21 23:47:10

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 68 处,展示前 27 条)
  • 写入本地文件
    lib/index.js:25
    await mkdir(dirname(path), {
  • 写入本地文件
    lib/index.js:38
    await rename(temporary, path);
  • 删除本地文件
    lib/index.js:40
    await rm(temporary, { force: true }).catch(() => void 0);
  • 读取本地文件
    lib/index.js:426
    const record = cacheRecord(JSON.parse(await readFile(this.options.cachePath, "utf8")), this.options.sourceUrl);
  • 读取本地文件
    lib/index.js:675
    await access(path);
  • 读取本地文件
    lib/index.js:692
    return await realpath(candidate);
  • 读取本地文件
    lib/index.js:943
    const directory = await opendir(current);
  • 读取本地文件
    lib/index.js:947
    const stat$1 = await lstat(targetPath);
  • 读取本地文件
    lib/index.js:953
    const link = await readlink(targetPath);
  • 删除本地文件
    lib/index.js:960
    await rm(targetPath, { force: true });
  • 删除本地文件
    lib/index.js:965
    await rm(targetPath, {
  • 写入本地文件
    lib/index.js:996
    await mkdir(dirname(targetRoot), {
  • 执行外部命令固定命令
    lib/index.js:1050
    const child = spawn("taskkill", [
  • 写入本地文件
    lib/index.js:1227
    await copyFile(source, destination);
  • 写入本地文件
    lib/index.js:1246
    mkdir(canaryProfileDir, {
  • 写入本地文件
    lib/index.js:1250
    mkdir(tempDir, {
  • 删除本地文件
    lib/index.js:1285
    await rm(root, {
  • 删除本地文件
    lib/index.js:1345
    await rm(root, {
  • 执行外部命令来自配置/变量
    lib/index.js:1387
    const child = spawn(dshBin, [
  • 发起网络请求
    lib/index.js:1641
    const rootResponse = await fetch(`http://127.0.0.1:${String(port)}/`, {
  • 发起网络请求
    lib/index.js:1654
    const bundleResponse = await fetch(`http://127.0.0.1:${String(port)}${clientUrl}`, {
  • 删除本地文件
    lib/index.js:1770
    await rm(prepared.root, {
  • 发起网络请求
    lib/index.js:1941
    const rootResponse = await fetch(`http://127.0.0.1:${String(port)}/`, {
  • 发起网络请求
    lib/index.js:1966
    const bundleResponse = await fetch(`http://127.0.0.1:${String(port)}${url}`, {
  • 执行外部命令来自配置/变量
    lib/index.js:2512
    const child = spawn(command$1, ["--version"], {
  • 执行外部命令来自配置/变量
    lib/index.js:2868
    const child = spawn(executable, [...args], {
  • 发起网络请求
    lib/client.js:32463
    const response = await fetch("/api/plugin-console", {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-group@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-app-boot@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-home-paths
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 管理插件安装更新删除
  • 插件试运行
  • 社区插件目录

DSH 插件控制台:为 DeepSeek Harness 打造的社区插件目录与配置档管理器,插件均经审核

v0.3.12026-08-23
纯文档发布,修正了升级路径。Host 和客户端代码均无改动。 · 变更 · README 安装命令固定为 @latest:dsh plugin --profile web add dsh-plugin-console@latest —— 全新安装时总能解析到最新版本。 · 说明重跑不带版本号的安装命令 dsh plugin --profile web add dsh-plugin-console 不会升级已有配置档:pnpm 会保留已固定的 ^x.y.z 范围并提示「Already up to date」。升级请用 add dsh-plugin-console@latest 或内置的一键自更新(设置 → 插件管理器 → 已安装),然后重启 dsh web 并刷新浏览器。 · 新增故障排查章节:registry/镜像同步延迟、查看配置档实际固定/已安装的版本、遗漏重启。 · RELEASING.md:写死的示例版本号换成占位符;补充发布后验证步骤。 升级:dsh plugin --profile web add dsh-plugin-console@latest,然后重启。
v0.2.22026-08-20
· 更新日志 DSH Plugin Console 的所有重要变更都记录在这里。项目遵循语义化版本。 · [0.2.2] - 2026-08-20 · 新增 · 已安装的社区插件和 dsh-plugin-console 自身支持一键更新;执行路径上保留现有的金丝雀、配置档锁、过期计划检查和回滚,之后照常发出重启提示。 · GitHub CI 和发布任务会安装固定版本的 DSH 命令行,隔离激活测试需要它;发布任务可以针对已有的 v* 标签手动重试。 · 修复 · 操作完成后刷新已安装投影来保留更新发现能力,不再用缺少最新版本数据的快照替换它。 · 拒绝在配置档有未完成变更时执行更新,也拒绝请求来源在同一版本上已变化的过期暂停/移除计划。 · 限制 npm 仓库元数据响应大小,清理命令超时定时器,终止超时的能力探测,并防止目录刷新与初始引导相互竞争。 · CI 打包校验不再在 npm pack --dry-run 里重跑完整测试套件;回滚测试夹具在 prepack 运行期间打包时,不再继承 npm 的 dry-run 标志。 · 常见命令、计划、目录和恢复失败状态改为本地化文案,不再暴露内部错误码。 · [0.2.1] - 2026-08-19 · 新增 · 安装和更新的隔离激活金丝雀:临时 DSH Web 配置档在系统分配的本地端口启动,校验确切的包版本、目标 Loader 条目、客户端 bundle 的语法/执行/注册/模块依赖和 HTTP 资源,通过后才接受真实配置档,随后终止;浏览器界面交互仍需重启后手动检查。 · 变更 · 金丝雀失败时自动恢复之前的配置档元数据和依赖图,不再先删除整个 node_modules 目录。
v0.2.12026-08-20
· 更新日志 DSH Plugin Console 的重要变更都记录在这里。项目遵循语义化版本。 · [0.2.1] - 2026-08-19 · 新增 · 安装和更新时启用隔离激活金丝雀:临时 DSH Web 配置档在系统分配的本地端口启动,校验确切的包版本、目标 Loader 条目、客户端 bundle 的语法/执行/注册/模块依赖和 HTTP 资源,然后在正式配置档被接受前终止;浏览器 UI 交互仍需重启后手动检查。 · 变更 · 金丝雀失败时自动恢复之前的配置档元数据和依赖图,不再先删除整个 node_modules 目录。 · 操作结果和确认 UI 会报告隔离金丝雀是通过还是失败。 · 金丝雀现在会评估完整组合后的配置档,因此与现有第三方 bundle 的初始化冲突会被视为更新失败;不确定的恢复会保留原始依赖快照供检查。 · 配置档锁以原子方式回收陈旧目录,元数据恢复使用原子写入。 · 移除操作现在会验证包已从配置档依赖和 dsh.profile.bundles 中消失,修复旧版或被替换的 DSH 启动器遗留的陈旧 bundle 条目;任何修复或组合失败都会恢复之前的配置档状态。 · 移除成功后会说明运行中的 Host 和浏览器仍持有启动时的模块图,必须重启/刷新;更新发现保持只读,每次安装/更新都需要可见的审查和确认控件。 · [0.2.0] - 2026-08-19 · 新增 · 一级设置 → 插件管理器页面,包含目录和已安装包视图。 · 持久化的暂停和恢复操作,覆盖已安装 bundle 贡献的每个 Loader 条目,包括聚合 bundle。 · 针对 README 的 GFM 渲染器,支持净化后的常见 HTML、GitHub 相对链接和图片,以及源码视图。 · 明确报告 dsh 和 pnpm 能力,本地化暂停/恢复状态,以及聚焦的操作诊断。 · 变更 · 当 npm 版本已存在时,发布是幂等的,新版本要求仓库 npm 环境提供 NPM_TOKEN。 · 配置档能力检查接受可选的工作区和锁文件,完整性校验遵循根 pnpm 导入器和带 peer 后缀的解析。 · 待处理的安装可以在重启前移除,从而干净地取消安装。 · 修复
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
DSH 插件控制台 CI npm license dsh-plugin-console 是一个可安装到 DeepSeek Harness Web profile 的插件管理器:它把社区目录、当前 profile 的包清单和 Loader 运行态放在 Settings 的一级“插件管理”页面里,并通过官方 dsh plugin 命令完成安装、更新和删除。 已实现 - 插件商店:默认同步 awesome-dsh-plugin,支持搜索、分类、分页和本地 last-known-good 缓存。 - 安装前验证:npm 包检查合法 SemVer、repository、HTTPS tarball、SHA-512 integrity、dsh.bundle.patch 和生命周期脚本;GitHub 包固定到 40 位 commit,并确认 package.json 与声明的 patch 文件存在。 - 已安装清单:读取当前 profile 的 direct dependencies、bundle 顺序、解析后的 package manifest、Loader entry/Fiber phase 和 Web client 能力。
展开完整文档(README 剩余 1 节)
DSH 插件控制台

CI
npm
license

dsh-plugin-console 是一个可安装到 DeepSeek Harness Web profile 的插件管理器:它把社区目录、当前 profile 的包清单和 Loader 运行态放在 Settings 的一级“插件管理”页面里,并通过官方 dsh plugin 命令完成安装、更新和删除。

已实现

- 插件商店:默认同步 awesome-dsh-plugin,支持搜索、分类、分页和本地 last-known-good 缓存。
- 安装前验证:npm 包检查合法 SemVer、repository、HTTPS tarball、SHA-512 integrity、dsh.bundle.patch 和生命周期脚本;GitHub 包固定到 40 位 commit,并确认 package.json 与声明的 patch 文件存在。
- 已安装清单:读取当前 profile 的 direct dependencies、bundle 顺序、解析后的 package manifest、Loader entry/Fiber phase 和 Web client 能力。
- 使用说明:读取 Markdown、MDX、RST、TXT 和无扩展名 README;Markdown 使用 README 专用的 GFM + 安全 HTML renderer,支持常见段落、链接、徽章和相对图片,所有文档都可切换到保留原文的源码视图。
- 快捷更新:不会自动安装或更新。发现新版本后只显示更新按钮;用户点击后仍需复核目标版本和来源、勾选确认并再次点击“确认执行”。社区目录中的包按已验证 artifact 更新;目录外 npm 包只有在同名、同 repository、合法升级版本和 integrity 都成立时才可更新,并在确认页单独警告。
- 快捷删除:只允许删除 direct dependency,系统 bundle 受保护;删除会同时清理 dsh.profile.bundles 中的对应层,确保下次启动不再加载已删除插件;删除包不会擅自删除包创建的数据。
- 暂停使用:保留已安装依赖,通过 profile 的结构化 Loader patch 持久化 disabled 状态;可随时恢复,管理器自身不会允许自暂停。
- 隔离试运行:安装或更新后,在临时 DSH_HOME、随机本地端口和隔离 HOME/TMP 中启动完整 Web profile;已安装的其他第三方 bundle 也会一起启动,因此插件间、插件与 DSH/Cordis 的初始化冲突会在新版本写入前被发现。目标 bundle 的 Loader 条目、精确包版本、客户端 bundle 的语法/执行/唯一包名注册/模块依赖和 HTTP 资源全部通过后才保留新版,否则自动恢复旧版本。浏览器内 UI 交互仍由用户在重启刷新后人工确认。
- 变更确认:所有写操作先生成 5 分钟有效的 plan;执行前重新校验 profile 指纹、当前包状态和 artifact integrity,同一时间只允许一个变更。元数据实际变化后才按恢复后的 lockfile 做 frozen reinstall,不会先删除整个 node_modules;供应链策略在命令开始前拒绝时不会破坏现有依赖。
- 重启提示:变更由 pnpm/profile manifest 持久化,当前 Loader 不会被伪装成已更新,页面会明确显示隔离试运行结果和重启后生效状态。
- DSH 一键更新:左侧边栏底部新增 Harness 更新入口,图标常显当前版本,有更新时显示待更新版本角标;点开面板可查看运行中/已安装/最新版本与更新通道(latest/next 全部通道取最高版本,如 rc 系列中 latest 落后于 next 时会直接显示 next 的更新),并可强制「重新检查」绕过缓存、一键更新 DeepSeek Harness 本体。更新只支持 npm 全局安装(自动解析运行中 dsh 可执行文件所属的 npm prefix);执行时先精确校验新旧版本,再用新 Harness 在隔离副本中启动完整 profile——所有已安装插件的 Loader 条目、激活状态、client bundle 图与 HTTP 表面全部通过才接受,任何插件初始化失败都会自动重装旧版 Harness 并再次隔离验证;更新成功后运行中的 Host 保持旧版本,重启 DSH 后生效。

安装与更新

在 DSH 安装所在环境运行:

npm 发布版(显式 @latest,重复执行即可升级到最新版)
dsh plugin --profile web add dsh-plugin-console@latest

本地源码检出目录
dsh plugin --profile web add .

升级到新版本

已安装旧版时,重新执行不带版本号的 add 不会升级:pnpm 会保留 profile 中已有的 ^x.y.z 版本范围并报告 "Already up to date"。升级方式任选其一:

方式一:显式 @latest 重新解析最新版
dsh plugin --profile web add dsh-plugin-console@latest

方式二:在插件管理页面一键自更新(0.2.2 起内置)——Settings → 插件管理 → 已安装 → dsh-plugin-console → 更新。

无论哪种方式,更新完成后都需要重启 dsh web 并刷新浏览器:Web client module roster 在进程启动时扫描 profile 包,运行中的 Host 与已打开的页面仍持有旧的启动模块图。

没有拿到最新版?
1. 确认 registry 上的最新版本,并与 GitHub Releases 对比:
npm view dsh-plugin-console version
若输出落后于 Releases,通常是镜像源同步延迟或本地缓存——检查 npm config get registry / pnpm config get registry(官方源为 https://registry.npmjs.org/),或稍后重试。
2. 确认 profile 实际安装的版本:查看 $DSH_HOME/profiles/web/package.json 的依赖声明与 $DSH_HOME/profiles/web/node_modules/dsh-plugin-console/package.json 的 version 字段。
3. 若版本已是最新但界面仍是旧版,重启 dsh web 后强制刷新浏览器。

验证 bundle 层:

dsh --profile web --dump-config

配置

bundle 默认配置位于 cordis.patch.yml。可在 profile 的 cordis.patch.yml 中覆盖完整行配置,注意 DSH patch 对 config 是整段替换:

- id: plugin-console
config:
catalogUrl: https://awesome-dsh-plugin.com/plugins.json
cacheMaxAgeMs: 172800000
requestTimeoutMs: 15000
maxCatalogBytes: 5000000
maxReadmeBytes: 262144
operationTimeoutMs: 300000
canaryTimeoutMs: 60000
dshBin: dsh
npmBin: npm

也支持环境变量:

- DSH_PLUGIN_CONSOLE_CATALOG_URL
- DSH_PLUGIN_CONSOLE_DSH_BIN
- DSH_PLUGIN_CONSOLE_NPM_BIN

目录缓存写入 $DSH_HOME/cache/plugin-console/catalog.json。上游不可用时保留最后一次有效目录,不会用空响应覆盖缓存。catalogUrl 必须是绝对 HTTPS URL。dshBin / DSH_PLUGIN_CONSOLE_DSH_BIN 与 npmBin / DSH_PLUGIN_CONSOLE_NPM_BIN 是管理员级配置,会被作为本机可执行文件启动,不应接受不可信输入。

Harness 更新版本来自 @deepseek-ai/dsh 的全部 npm dist-tag(latest/next 等),面板显示版本所在的通道,并总是取各通道中的最高合法 SemVer;「重新检查」会绕过 5 分钟缓存强制重新拉取 dist-tags。

安全边界

DSH 插件是 Host 进程中的受信任代码,不是隔离的浏览器扩展。这个管理器遵循以下边界:

1. 社区 feed 只用于发现,不执行 feed 中的 install 字符串。
2. 浏览器 API 只有 typed install、update、remove、pause、resume,没有任意 pnpm argv 或 shell 接口。
3. 子进程使用参数数组和 shell: false 调用 dsh plugin。
4. 安装、更新固定传 --ignore-scripts;需要构建脚本的包不会被静默放行。
5. GitHub 来源必须固定到 commit;npm 来源使用精确版本,并在安装后核对 lockfile integrity。
6. pnpm 成功后还会运行 composition 校验与隔离启动 canary;完整 profile 的启动、精确版本、bundle、integrity、目标 Loader entry、客户端 bundle 协议或 HTTP 任一不匹配都视为失败并进入恢复。
7. canary 会实际执行新版及其现有依赖的第三方代码以发现初始化崩溃;临时 DSH/HOME/TMP 隔离常规数据路径,但不是操作系统安全沙箱,插件仍属于受信任代码边界。
8. API 仅接受同源 POST;变更请求还必须来自 loopback。profile 路径从 Loader baseUrl 推导并限制在 $DSH_HOME/profiles 下。
9. README 使用独立的不可信内容 renderer;raw HTML 只允许安全标签和协议,事件属性、脚本、iframe、危险 URL 会被清理,非 Markdown 和源码模式只展示纯文本。
10. 删除只改变 package-manager/profile 状态,不清理未知的插件数据目录;清理 Bundle 配置或组合失败会恢复删除前的 profile。
11. Harness 更新只作用于解析出的 npm 全局安装(POSIX /lib/node_modules 或 Windows /node_modules 布局,且 prefix 的 bin 面存在);其他安装方式只展示状态,不提供更新按钮。更新目标固定为 @deepseek-ai/dsh 的精确 npm 版本,命令参数数组固定、shell: false。
12. Harness 更新在写入前用 --dump-config 快照完整组合(含 !!js 表达式的本地求值),写入后校验精确版本与 CLI 输出,再以新二进制运行全 profile 隔离 canary;失败自动重装旧版并再次验证。更新的是 Harness 本体,属于执行新一版受信任代码,确认页明确警告。

“已验证”只表示 manifest 和 artifact 结构符合 DSH 安装约定,不表示作者或代码经过安全背书。

开发

要求 Node.js 22.19+ 或 24+、pnpm 10+。Host/Client peer contract 固定到已验证的 DSH 0.1.0-rc.6:

pnpm install
pnpm run typecheck
pnpm run test
pnpm run build

如果本机 pnpm 因 approve-builds 阻止开发依赖的安装脚本,可以直接运行已安装的工具:

node node_modules/typescript/bin/tsc --noEmit
node node_modules/vitest/vitest.mjs run
node node_modules/tsdown/dist/run.mjs -c tsdown.config.ts

包结构: text src/catalog.ts 社区 feed、缓存、npm/GitHub 验证 src/profile.ts profile manifest、包清单、Loader 运行态 src/operations.ts plan、串行 dsh CLI 变更、失败恢复 src/harness.ts DSH 安装解析(npm global prefix)与更新状态 src/harness-operations.ts Harness 更新 plan/execute、版本校验、回滚 src/canary.ts 插件隔离 canary + 全 profile Harness canary src/index.ts Host API /api/plugin-console src/client/index.ts Web Settings slot + 侧边栏入口注册 src/client/PluginManageSettingsTab.tsx 商店、已安装、详情和确认 UI src/client/HarnessUpdateAction.tsx 侧边栏 DSH 更新入口与确认面板 src/client/*.module.css 主题变量和响应式布局 tests/ 目录、profile、事务、canary、Harness 更新与构建契约测试

贡献、安全与发布说明:

- CONTRIBUTING.md
- SECURITY.md
- CHANGELOG.md
- docs/RELEASING.md

DSH 插件开发原则

这个包遵循 DSH 官方的 Cordis 方式:插件通过 apply(ctx) 注册能力,依赖通过 inject 声明,外部资源通过 ctx.effect() 回收;持久化 profile 由 dsh plugin / pnpm 负责,Loader 只负责当前进程生命周期。

官方参考:

- DeepSeek Harness architecture
- First plugin tutorial
- Package and install a plugin
- Extension cookbook

参考与致谢

本项目的主体业务实现为独立编写,但使用或改写了以下 MIT 项目的接口与实现模式:

- DeepSeek Harness:bundle/profile、Cordis 生命周期、Loader/Fiber 投影、Web client module 与 Settings slot 契约。
- DSH Plugin Marketplace:双端外部 bundle、同源私有 API、短时 review plan / recovery 架构,以及 tsdown.config.ts 的 client envelope 与 CSS-module bundler。构建配置是直接改写,不只是产品灵感。

以下项目仅作为产品和交互行为参考,没有直接并入其源码:

- dshmarket
- dsh-plugin-store / Plugin Hub

完整版权、revision 和 MIT notice 见 THIRD_PARTY_NOTICES.md。

关于 AI 摘要

目录同步和 artifact 验证使用结构化 metadata,不把 AI 输出当成安装依据。后续可以增加一个只读的 AI 摘要层,用于从已验证 README 生成“能做什么 / 怎么用 / 注意事项”,但摘要必须标注为模型生成,安装目标、版本和风险仍以 Host 的 manifest 验证为准。

License

MIT
预览分享卡片长什么样 ↓AlexYin-Tongji/dsh-plugin-console
分享 · DeepSeek Harness Hub
AlexYin-Tongji/dsh-plugin-console

在设置页管理插件安装、更新、删除与试运行

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部