前言¶
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。
- 目录页:lyufeng000/dsh-market-console
- 源码:GitHub — lyufeng000/dsh-market-console
- 许可证:MIT(见仓库
package.json)
核心功能¶
已安装视图¶
- 插件条目(
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。
手工三步(摘要)¶
- 将本包 junction 到
$DSH_HOME\profiles\node_modules\dsh-market-console($DSH_HOME一般为$env:USERPROFILE\.dsh)。 - 在
$DSH_HOME\profiles\<profile>\package.json的dependencies增加"dsh-market-console": "0.1.0"。 - 在同 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 仅做静态检查)。
典型用法¶
- 完成安装并重启(或 HMR 生效)后,打开 DSH 设置 → 插件,进入「插件市场」标签页。
- 发现:输入关键词搜索 npm 上带
dsh-plugin关键字的包,选择 registry,对未安装包走安装流程;若出现待批准构建,按提示确认approvedBuilds后重试。 - 已安装:用过滤框定位包;对第三方条目/组合包启停;组合包卸载前确认对话框;需要时可打开「隐藏官方」只看自装插件。
- 备注:在卡片底部编辑个人说明,或恢复内置文案。
全程写操作经官方 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 后使用。