前言¶
在 DeepSeek Harness(DSH)里,第三方插件市场 dshmarket 可以通过设置页相关槽位完成安装与配置,但没有注册 sidebar.footer.action,因此在 Web 左侧边栏底部看不到入口。官方内置的 dsh-community-market 自带侧边栏入口,而桌面端在一个 profile 里对市场提供方是二选一,不能同时挂两套市场 UI。
dsh-market-sidebar 是 Palpitate1388 维护的独立配套插件:不修改 dshmarket 本体,只在侧边栏底部补一个入口,位置在 Agents-Anywhere「远程控制」的右侧。下面介绍它解决什么问题、如何工作,以及如何在 profile 里安装与调整。
这是什么¶
- 名称:
dsh-market-sidebar(npm 包名,GitHub:Palpitate1388/dsh-market-sidebar) - 版本(package.json):1.0.0
- 许可证:MIT
- 定位:把
dshmarket的入口放进 DSH Web 左侧边栏底部;市场自我更新(例如dshmarket -> dshmarket@x.y.z)不会动本包文件。
为什么需要它¶
dshmarket 已注册的槽位包括 settings.section、settings.plugins.tab、plugins.bundle.config、settings.plugin.item,以及仅用于安装提示的 shell.overlay,未注册 sidebar.footer.action。官方 dsh-community-market 有侧边栏入口,但 profile 内市场提供方由桌面端强制二选一。本包作为外挂配套,与 dshmarket 解耦,便于在选用 dshmarket 时仍能从侧边栏打开市场面板。
核心功能¶
侧边栏入口与排序¶
- 注册
sidebar.footer.action槽位;与 Agents-Anywhere「远程控制」共用底部一行。 - 排序按
(priority, order)升序:「远程控制」为order: 26,本包为order: 27,因此落在其右侧。 - 通过 CSS 把宿主内联
display: contents的锚点改为横向 flex,并用:has()配合本条目data-icon="market-sidebar"做margin-left: auto,将入口推到该行最右端(不依赖宿主 CSS 模块类名)。
点击行为¶
点击后打开浮层,内容由市场服务提供:ctx.provide("market", marketControl) 后调用 market.render(),将市场面板嵌入宿主容器;bundle 经宿主模块表解析 React,与调用方共享同一 React 实例。
依赖 market 时的安全注册¶
注册逻辑在 ctx.inject(["market"], ...) 中:若未安装 dshmarket、被禁用,或桌面端已切到官方社区市场,则不注册任何 UI,避免出现无效按钮。
宿主端为空实现¶
lib/index.js 仅含空的 apply,刻意不在宿主端执行业务逻辑:DSH 启动全有全无,宿主端抛错会导致整个 profile 无法启动;功能均在客户端 lib/client.js(window.__ModuleLoader__.load)完成。
安装与启用¶
本插件没有文档中的 dsh plugin add github:... 一类命令;安装方式为把包放入 profile 的 local-plugins/,并在 profile 的 package.json 中声明 file: 依赖与 bundle 列表。
- 将本仓库内容放到目标 profile 的
local-plugins/dsh-market-sidebar/下。 - 在 profile 的
package.json中增加依赖,并把包名写入dsh.profile.bundles:
{
"dependencies": {
"dsh-market-sidebar": "file:./local-plugins/dsh-market-sidebar"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-market-sidebar"]
}
}
}
- 执行
pnpm install(带cordis.patch.yml的file:依赖满足 reconcile 保留条件,不会被当成多余包清掉)。 - 重启 DSH 后生效。
cordis.patch.yml 会把本插件 insert 进 profile 层栈;package.json 中声明了 dsh.bundle.patch 与 dsh.client.platform: web。
典型用法与调整¶
打开市场¶
侧边栏底部(「远程控制」同一行、偏右)点击市场入口,浮层内即为 dshmarket 提供的完整市场面板(需 profile 中已启用 dshmarket 且桌面端未强制使用官方社区市场)。
调整入口位置¶
修改 lib/client.js 中的 ORDER 常量:
ORDER |
位置 |
|---|---|
| 小于 26 | 「远程控制」左侧 |
| 大于 26 | 「远程控制」右侧 |
若希望紧贴「远程控制」而不是贴到行尾,删除 STYLE_TEXT 里最后一条针对 [data-slot="sidebar.footer.action"]>:has(...) 的规则即可。客户端 bundle 改动需重启 DSH 才会进入模块图。
卸载¶
从 profile package.json 删除 dsh-market-sidebar 依赖与 dsh.profile.bundles 中的同名条目,删除 local-plugins/dsh-market-sidebar/ 目录,然后重启 DSH。
适用场景与注意¶
适合谁:已在 profile 中使用 dshmarket、希望从 Web 左侧边栏快速打开市场,又不想改 dshmarket 源码或与其更新流程绑死的开发者。
权限与安全:插件随当前 DSH profile 与进程权限运行;安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认与您的环境策略一致。社区插件目录(如 SkillHub)为独立生态站点,与 DeepSeek / 幻方无官方从属关系。
构建说明:lib/client.js 为手写客户端 bundle,无单独构建步骤;react、@deepseek-ai/dsh-client-store、@deepseek-ai/dsh-client-ui-primitives 等平台 seed 可直接 require。
结尾¶
dsh-market-sidebar 用最小 patch 补上 dshmarket 缺失的侧边栏槽位,并与官方社区市场二选一的约束兼容(无 market 时不注册 UI)。需要细节时可查仓库 README 与 lib/client.js。
- 目录页:https://www.skillhub.cn/plugins/Palpitate1388/dsh-market-sidebar
- GitHub:https://github.com/Palpitate1388/dsh-market-sidebar