dsh-market-console:在 DSH 设置里管理第三方插件

前言

DeepSeek Harness(DSH)把能力拆成可组合的插件;profile 里要增删、启停第三方包,往往要改 package.json、cordis.patch.yml,或依赖命令行。官方提供 @deepseek-ai/dsh-plugin-manager 的远程接口,但桌面客户端「设置 → 插件」里未必有完整的发现与安装链路。下面介绍社区插件 dsh-market-console:在同一分区增加「插件市场」标签页,搜索、安装、启停、卸载第三方 DSH 插件,写操作全部走官方 plugin-manager,而不是另起一套后端。

这是什么

dsh-market-console(维护者 lyufeng000)是 客户端 类 DSH 插件:逻辑在 Client 半边,Host 半边仅占一条 Loader 行。一句话定位:DSH 插件市场控制台——在「设置 → 插件」里完成第三方插件的浏览与管理。

package.json 声明 engines.dsh 为 >=0.2.1-rc.2 <0.3.0;README 写明实测目标为 DeepSeek Harness 0.2.0-rc.1(desktop profile)。安装与挂载针对 desktop profile 编写,profile 解析顺序为 DSH_DESKTOP_PROFILE → DSH_PROFILE → 默认 web,不要写死为 web。

核心功能

已安装视图

  • 插件条目(listPlugins)与组合包(listBundles)分组展示。
  • 每条显示标题、模块名、版本、描述、启用状态、fiber 阶段(等待 / 加载 / 运行中 / 启动失败 / 卸载中)。
  • 插件条目开关调用 setPluginEnabled(entryId, enabled);组合包开关调用 setBundleEnabled(name, enabled),卸载调用 removeBundle(name) 且需二次确认。
  • 工具栏提供本地过滤(名称 / 模块 / 条目 id)。

官方标记与筛选

  • 标题旁「官方」徽章:@deepseek-ai/*、cordis:* 等按 README 规则判定;第三方包(含本插件)无徽章。
  • 「隐藏官方」开关:已安装列表可只显示第三方插件,状态写入 localStorage(dsh-market-console/prefs)。搜索视图仍显示官方包,不受该开关影响。

插件备注

  • 内置约 196 条中文一句话说明,覆盖全部 loader 条目;用户可编辑「我的备注」,或恢复内置(删键而非存空值)。
  • 存于 localStorage(dsh-market-console/notes),仅本机 UI 偏好,不写 profile、不产生 Host 侧写入。

发现视图(npm 搜索)

  • 浏览器直连 npm registry /-/v1/search,关键词形如 keywords:dsh-plugin <你的词>。
  • Registry 可在 registry.npmjs.org 与 registry.npmmirror.com 间切换,失败自动换下一个;400ms 防抖。
  • 已安装包标记「已安装」,不显示安装按钮。

安装与错误处理

安装链路(M2):inspect → 人话化 problem → installBundle(含 requestId、registry、approvedBuilds)→ waitForInstall → application 处理。refused 的 7 种 problem、restart-required、待批准构建脚本、版本门控等均在 UI 中映射为中文说明;安装中可 cancelInstall。写操作相关 12 种错误码均有中文映射。

自身排除

本包及若干插件管理基础设施、其他市场类包在列表与搜索中为只读(开关与卸载禁用);本插件不会出现在被管理列表或搜索结果的可操作项里(实现见 README「自身排除」表)。

安装与启用

本插件没有资料中的 dsh plugin add github:... 一键命令;推荐用仓库自带脚本或手工三步挂到 profile。

解析 profile

profile = DSH_DESKTOP_PROFILE  →  DSH_PROFILE  →  web

实测示例:DSH_PROFILE=desktop 时,目录为 %USERPROFILE%\.dsh\profiles\desktop。

一键脚本(推荐)

在插件包目录执行:

pwsh -File scripts\install.ps1

或直接双击 scripts\install.cmd。脚本按上文规则解析 profile,幂等完成:junction 到 profiles\node_modules、写入 dependencies、追加 cordis.patch.yml 的 insert 块;改动前会备份 package.json 与 cordis.patch.yml。

卸载:scripts\uninstall.cmd(支持 -WhatIf、-KeepPackage)。

注意:Windows 上若禁止直接运行 .ps1,用附带的 .cmd(带 -ExecutionPolicy Bypass);脚本源文件需带 BOM 的 UTF-8,而写入 DSH 的 JSON 须无 BOM。

手工三步(摘要)

  1. 将本包 junction 到 $DSH_HOME\profiles\node_modules\dsh-market-console($DSH_HOME 一般为 $env:USERPROFILE\.dsh)。
  2. 在 $DSH_HOME\profiles\<profile>\package.json 的 dependencies 增加 "dsh-market-console": "0.1.0"。
  3. 在同 profile 的 cordis.patch.yml 末尾追加:
- insert:
    - id: market-console
      name: dsh-market-console

重启与热重载

cordis.patch.yml 通常在启动时读取;首次安装或改 package.json 建议重启客户端。若 profile 启用 @deepseek-ai/dsh-hmr,改 patch 可能触发热重载而无需重启。安装结果若返回 application: 'restart-required',UI 会提示重启(刷新页面无效)。

诊断:node scripts\diagnose.cjs(可加 --offline 仅做静态检查)。

典型用法

  1. 完成安装并重启(或 HMR 生效)后,打开 DSH 设置 → 插件,进入「插件市场」标签页。
  2. 发现:输入关键词搜索 npm 上带 dsh-plugin 关键字的包,选择 registry,对未安装包走安装流程;若出现待批准构建,按提示确认 approvedBuilds 后重试。
  3. 已安装:用过滤框定位包;对第三方条目/组合包启停;组合包卸载前确认对话框;需要时可打开「隐藏官方」只看自装插件。
  4. 备注:在卡片底部编辑个人说明,或恢复内置文案。

全程写操作经官方 remote.pluginManager 等 Typert 接口,与 Host 侧 plugin-manager 行为一致。

适用场景与注意

适合谁:使用 DSH desktop profile(或按 README 正确解析出的 profile)、希望在图形界面里完成「搜 npm → 装 bundle → 启停/卸载」的开发者与维护者。

权限与安全:插件随当前 DSH 客户端与用户 profile 运行;安装第三方包等价于信任其源码与 npm 包内容。安装前请查看仓库、许可证(本插件为 MIT)及包说明;社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,不是官方应用商店。

故障排查(摘要):若无「插件市场」标签,依次检查 cordis.patch.yml 是否含 market-console、profiles\node_modules\dsh-market-console\lib\client.js 是否存在、是否已重启;白屏时开开发者工具看 Console(常见为 Client 组件 props 与 inject 契约问题);搜索无结果时切换 registry 或检查 /-/v1/search 可达性。详见 README 第 6 节。

结尾

dsh-market-console 把 DSH 官方 plugin-manager 能力接到「设置 → 插件」:已安装管理、npm 发现、中文错误与备注,并刻意不把市场控制台自身放进可操作列表。需要图形化管第三方插件时,可按仓库脚本挂到 desktop profile 后使用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye