dsh-marketplace
v0.1.3
Published
Plugin marketplace for DeepSeek Harness Web: browse, search, install and remove DSH plugins right from the Plugins settings section.
Downloads
261
Maintainers
Readme
dsh-marketplace
插件市场 —— DeepSeek Harness Web 的插件浏览/搜索/安装/卸载界面。
在「设置 → 插件」区块新增一个「插件市场」标签页:打开即展示按每月安装量
排序的推荐列表,支持按名称/描述搜索 DSH 插件,查看已安装插件,并
一键安装/卸载(内部执行 dsh plugin --profile web add|remove <spec>)。
环境要求
- DeepSeek Harness Web(
dsh web),任意版本 dshCLI 可用(安装/卸载插件时执行)
安装
dsh plugin --profile web add dsh-marketplace本包声明
dsh.bundle,安装后自动加入 profile 的 bundle 层, 重启dsh web后生效。
使用
重启后打开:设置 ⚙️ → 插件 → 插件市场
- 推荐列表:打开即按每月安装量展示热门插件(数据来自 npm downloads API)
- 搜索:按名称/描述过滤生态目录(如
monitor、quota、worktree) - 安装/卸载:一键操作,完成后按界面提示重启生效
- 推荐排序:可切换「按安装量」(npm downloads API)或「按 Star」(GitHub)
Star 数据:默认从 GitHub API 匿名拉取(60 次/小时);想让 Star 数据更 完整、更快,可在启动
dsh web前配置GITHUB_TOKEN环境变量(GitHub Personal Access Token,配额 5000 次/小时):export GITHUB_TOKEN=ghp_xxx # 或 export GITHUB_TOKEN=$(gh auth token) dsh web未配置或配额耗尽时自动降级(Star 列不显示,不影响其他功能)。
卸载
dsh plugin --profile web remove dsh-marketplace常见问题
| 问题 | 解决 |
|---|---|
| 装完看不到「插件市场」标签 | 重启 dsh web |
| 安装某个插件后没生效 | 该插件可能是普通依赖而非 bundle 插件,重启后也不会自动挂载(属正常) |
| 搜索搜不到某插件 | 该插件可能没打 dsh/plugin keywords;按完整包名搜索可命中 |
工作原理
- Host 半(
lib/index.js):注册pluginMarketplaceTypert Remote 服务, 提供search/installed/add/drop四个方法(add/drop不叫install/remove,是因为这两个名字与客户端RemoteNamespaceService自身的 方法冲突)。Remote 描述符 通过ctx.typert.register({ invocations })程序化注册,无需生成 Typert 产物或 decorator。安装/卸载复用dsh plugin(PATH 上没有dsh时回退为 直接运行 pnpm 并手动 reconcile bundle 层)。生态目录(keywords:dshkeywords 查询,131 个包)带 5 分钟 TTL 缓存,避免连续搜索触发 npm 限流; 搜索在目录内按名称/描述客户端过滤(npm 文本索引对低流量 dsh 包权重过低, 纯文本搜索会淹没它们)。 - Client 半(
lib/client.js):手写__ModuleLoader__bundle,把settings.plugins.tab的marketplace标签页挂进现有的「插件」设置区块。 apply 先await ctx.remote.$mount(...)再注册标签页,并通过ctx.get('remote.pluginMarketplace')(免 inject 的 store 读取,避免自挂载 死锁)获取命名空间服务后调用 Host 方法。 - Patch(
cordis.patch.yml):一行insert条目同时挂载 Host 半与(因dsh.client声明而被 client-modules 节点端发现的)浏览器半。
发版(维护者)
npm version patch # bump 版本
npm publish # 需要 npm 2FA 验证码
# 使用方升级:
dsh plugin --profile web update dsh-marketplace本地开发注意事项
- 本包以
link:方式安装到 profile,代码仍位于仓库目录;Host 半需要解析@deepseek-ai/dsh-typert-protocol等运行时依赖,因此包目录内放了一个指向 DSH 安装目录node_modules的符号链接(node_modules -> <dsh安装目录>/node_modules)。 移动包目录后需重建该链接。 - 改完代码无需重装(link 生效);重启
dsh web即可看到改动。
配置
| 环境变量 | 默认值 | 说明 |
|---|---|---|
| DSH_MARKETPLACE_PROFILE | web | 市场管理的 profile 名 |
| GITHUB_TOKEN | 无 | GitHub 访问令牌;配置后 Star 排序更完整(匿名模式 60 次/小时) |
已知限制
- 安装/卸载需要重启
dsh web才生效(界面会提示)。 - 非 bundle 包(未声明
dsh.bundle.patch)可安装为普通依赖,但不会自动挂载。 - 官方
@deepseek-ai/dsh-*包未打 keywords,不会出现在目录浏览里;按完整 包名搜索(如@deepseek-ai/dsh-monitor)可以命中。 - npm downloads API 只收录了部分 dsh 生态包,推荐列表里多数插件没有下载量 数据(显示为空),排序退化为搜索分数。
