Back to home

zr-promise

dsh-plugin-market

No description

Stars
0
Language
JavaScript
Created
Aug 17, 2026
Updated
Aug 17, 2026

Introduction

@dsh-external/dsh-plugin-market

DeepSeek Harness 插件市场(Plugin Marketplace):在 DSH Web 对话页增加「插件市场」Tab, 可以浏览、搜索、查看并一键安装 GitHub 上的 DSH 插件;同时为 Agent 提供 market_search / market_info / market_install / market_debug 四个工具。

源码:https://github.com/zr-promise/dsh-plugin-market

安装

以下两种方式任选其一,安装完成后重启 DSH,对话页出现「插件市场」Tab 即表示安装成功。

方式一:命令行

dsh plugin --profile web add github:zr-promise/dsh-plugin-market

方式二:发给 DSH 助手

在 DSH 对话页的输入框中粘贴上面的命令, 助手会代为执行安装,无需自己操作终端。

安装之后

  • 市场的主要用途是搜索并安装其他 DSH 插件。
  • 想更新或重装本插件,在市场内搜索 zr-promise/dsh-plugin-market 一键安装即可。
  • (未来发布到 npm 后,也可用 dsh plugin --profile web add @zr-promise/dsh-plugin-market 安装。)

功能

  • 浏览与搜索:内置收录列表,并结合 GitHub 仓库搜索,只返回 DSH 相关插件;支持「加载更多」分页。
  • 手动刷新:点击即可强制拉取 GitHub 最新数据,绕过缓存与限流保护。
  • 筛选与排序:按来源(GitHub / 收录)和语言过滤,按 Stars / Forks / 最近更新 / 名称排序。
  • 已安装标记:扫描本机 ~/.dsh/profiles/*/package.json 的 bundles 与 ~/.dsh/plugin-src/ 目录, 在列表和详情页标注「已安装」(60 秒缓存)。
  • 插件详情:Stars / Forks / License / 默认分支 / Topics / README(内置极简 Markdown 渲染)与插件清单文件。
  • 一键安装:自动识别安装形态——
    • bundle真·一键安装。Host 自动 git clone(https)到 ~/.dsh/plugin-src/<repo>, 写入 profile(bundles + link 依赖)、安装包依赖并创建 node_modules 链接,失败自动回滚, 重启后生效;支持子目录皮肤和 npm 已发布包的推荐安装。
    • dynamic:动态插件。拉取源码后自动填入对话指令,由助手完成 define + run。
    • list:收录 / 资料类仓库,不可直接安装。
  • GitHub 登录:粘贴 Personal Access Token(ghp_… / github_pat_…),验证通过后保存到 ~/.dsh/github-auth.json,API 限额从 60 次/小时提升到 5,000 次/小时(搜索 30 次/分钟)。
  • 代理:可在 ~/.dsh/dsh-plugin-market.json 中配置代理({"proxy": "http://127.0.0.1:7890"})。
  • 配额显示:分别展示「搜索配额 / 分钟」与「API 配额 / 小时」两个 GitHub 限流桶。
  • 插件管理(「已装插件」Tab):列出所有已安装的第三方插件,显示仓库名 / 版本 / 本地更新时间 / 类型等信息,点击可查看详情与 README;支持逐个或全部检查更新;两段式确认卸载(连同源码删除), 官方 @deepseek-ai/* 插件不可卸载。所有改动在重启 DSH 后生效。

架构

  • 宿主端 lib/index.js(ESM,运行在 DSH Node 进程):注入 toolswebServer 服务, 通过 webServer.register({ kind: 'prefix', path: '/market-api', handler }) 暴露 API (仅接受 127.0.0.1 / ::1 环回请求),JSON 分发到 search / info / install / install/run / auth/* / config/* / manage/* 等接口;网络请求走 subprocess + curl.exe-D - 解析响应头,支持 --proxy 与重定向跟随),并解析 x-ratelimit-resource / x-ratelimit-remaining 等限流头;内存缓存搜索结果 10 分钟、仓库详情 / 文件树 30 分钟、 npm 查询 1 小时;最后通过 ctx.tools.register(defineTool(...)) 注册四个 Agent 工具。
  • 客户端 lib/client.js(Web bundle,经 window.__ModuleLoader__.load 加载):使用 require('react'),通过 fetch('/market-api/…') 同源调用宿主端(无 CORS 问题);用 slots.inject('conversation.view', …) 注册「插件市场」Tab(id dsh-market,order 12); 样式随 bundle 注入 <style>,不依赖主题 token 之外的任何运行时 API。

数据与限额

  • 未登录时 core 限额 60 次/小时、search 10 次/分钟;登录后提升为 core 5,000 次/小时、search 30 次/分钟。
  • 搜索结果缓存 10 分钟以减少 GitHub 调用;翻页上限 10 页(GitHub 搜索的分页限制)。
  • 登录 Token 以明文存放在 ~/.dsh/github-auth.json(与 DSH 其他配置同目录),请妥善保管。

开发与发布

  • lib/index.js 是宿主端单一文件,lib/client.js 是客户端 bundle(无构建步骤,纯手写)。
  • 修改后重新安装插件并重启 DSH 即可生效。
  • 回归测试与 npm 发布步骤见 PUBLISH.md

License: MIT