dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness 插件市场(Plugin Marketplace)。
在 DSH Web 对话页新增「插件市场」Tab,用来浏览、搜索、查看并安装 GitHub 上的 DSH 插件;同时提供「插件管理」Tab,用来检查更新、一键更新、查看详情和卸载已安装插件。插件同时向 Agent 暴露 market_search / market_info / market_install / market_debug 四个工具。
以下两种方式任选其一。安装完成后重启 DSH,对话页出现「插件市场」Tab 即表示安装成功。
dsh plugin --profile web add github:zr-promise/dsh-plugin-market
在 DSH 对话页输入框粘贴上面的命令,助手会代为执行安装,无需自己操作终端。
zr-promise/dsh-plugin-market 一键安装即可。dsh plugin --profile web add @zr-promise/dsh-plugin-market 安装。topic:dsh-plugin,还会合并 dsh in:name 高星仓库,避免“没打 topic 但确实是 DSH 插件”的项目漏掉。~/.dsh/profiles/*/package.json 的 bundles 与 ~/.dsh/plugin-src/ 目录,在列表和详情页标注「已安装」(60 秒缓存)。bundle:真·一键安装。Host 自动 git clone 到 ~/.dsh/plugin-src/<repo>,写入 profile(bundles + link 依赖)、安装包依赖并创建 node_modules 链接,失败自动回滚,重启后生效;支持子目录皮肤和 npm 已发布包的推荐安装。dynamic:动态插件。拉取源码后自动填入对话指令,由助手完成 define + run。list:收录 / 资料类仓库,不可直接安装。git fetch + reset(无 .git 且目录独立则重新 clone);npm 安装走 pnpm add <name>@<最新版>(显式指定版本,避免 pnpm v11 的 minimumReleaseAge 静默装到旧版)。更新前自动备份,失败自动回滚;更新后自动重装依赖并做入口预检,重启 DSH 生效。@deepseek-ai/* 插件不可卸载。dsh-routing-suite),卸载时会连带删除关联的源码目录和 agent preset,并在界面明确展示“关联组件/预设”。ghp_… / github_pat_…),验证通过后保存到 ~/.dsh/github-auth.json,API 限额从 60 次/小时提升到 5,000 次/小时(搜索 30 次/分钟)。~/.dsh/dsh-plugin-market.json 配置代理({"proxy": "http://127.0.0.1:7890"})。| 工具 | 说明 |
|---|---|
market_search | 搜索/浏览 DSH 插件,支持分页、刷新 |
market_info | 查看仓库详情、README、清单文件与安装形态 |
market_install | 获取插件源码并识别安装形态(dynamic / bundle / list) |
market_debug | 诊断 curl、GitHub 网络、认证与代理状态 |
第三方“套装/预设”类安装可以在 ~/.dsh/dsh-suite-manifests/*.json 写入清单,让市场自动识别为“套装”,并支持整体卸载与仓库信息补全:
{
"id": "my-suite",
"label": "My Suite",
"plugins": ["@scope/my-plugin"],
"repos": {
"@scope/my-plugin": "owner/my-repo"
},
"components": [
{ "label": "my-plugin 源码", "path": "C:/Users/you/.dsh/my-plugin-src" },
{ "label": "my-preset 预设", "path": "C:/Users/you/.dsh/.agent-presets/my-preset" }
]
}
plugins:该套装包含的 bundle 插件名。repos:可选,给本地缺少 repository 元数据的插件补全 GitHub 仓库名,用于“检查更新”。components:卸载时需要一并删除的目录/预设,会显示在插件管理详情中。lib/index.js(ESM,运行在 DSH Node 进程)
tools 与 webServer;connection 以 ctx.get 可选读取(缺失则路由 503 失败关闭)。webServer.register({ kind: 'prefix', path: '/market-api', handler }) 暴露 API,先过 connection.requestRejection 认证围栏,再校验环回来源。subprocess + curl.exe,支持 --proxy、重定向跟随,并解析 GitHub 限流头。lib/client.js(Web bundle)
window.__ModuleLoader__.load 加载,使用 require('react')。fetch('/market-api/…', { credentials: 'same-origin' }) 同源调用宿主端(带上认证 cookie)。slots.inject('conversation.view', …) 注册「插件市场」Tab(id dsh-market,order 12)。<style>,只依赖主题 token,不依赖额外运行时 API。前缀:/market-api(仅本机环回)
所有端点都先过宿主认证围栏:ctx.get('connection').requestRejection(req)(Host/Origin 校验 + 浏览器会话 cookie),未认证返回 401、跨站/不可信来源返回 403;缺少 connection 服务时返回 503 失败关闭。围栏之后再叠加环回来源(127.0.0.1 / ::1)兜底。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /search | 搜索/浏览插件 |
| POST | /info | 仓库详情 + README + 清单 + 安装形态 |
| POST | /install | 获取安装源码并识别形态 |
| POST | /install/run | 真·一键安装(clone + 写 profile + 依赖同步) |
| POST | /auth/login | 登录 GitHub |
| POST | /auth/logout | 注销 |
| POST | /config/get | 读取代理配置 |
| POST | /config/set | 保存代理配置 |
| POST | /manage/list | 已安装第三方插件列表 |
| POST | /manage/check-updates | 检查更新 |
| POST | /manage/update | 一键更新到最新版 |
| POST | /manage/uninstall | 卸载插件(含源码/套装组件) |
| POST | /manage/remove-src | 删除未引用的源码残留目录 |
~/.dsh/github-auth.json,请妥善保管。已在 @deepseek-ai/dsh@0.1.2-rc.1 上实测(Host 工具、/market-api 全端点、Client bundle 加载与 slot 注册、隔离环境的一键安装/卸载全链路)。
dsh.client.inject 已清空:DSH 0.1.2-alpha.2 起移除了 @deepseek-ai/dsh-client-runtime,本插件客户端只依赖 react(shell seed)与 slots 服务,不需要额外包行。/market-api 已按官方要求接入 connection.requestRejection;裸 webServer 路由不继承宿主认证,缺失围栏等于把安装/卸载暴露给任意同源页面。ctx.get('connection')),不在 apply 时缓存——connection 的 fiber 可能晚于本插件就绪(它自身 inject: [webRuntime]),早期缓存会让路由永久 503。Unexpected token 'c', "connection"... is not valid JSON这是客户端把 503 的纯文本响应当 JSON 解析的结果。现已修复:
{"ok":false,"error":"…"}),不再吐裸文本;callApi 先读 text 再尝试解析,非 JSON 时给出可读原因(会话未认证 / 请求被拒 / 认证服务未就绪),不再抛解析异常;POST /market-api/status:认证后返回本插件视角的服务可见性(services),用于排查围栏问题。若仍看到该报错,说明浏览器加载的仍是旧 bundle:刷新页面(必要时 Ctrl+F5)即可。
lib/index.js 为宿主端单一文件,lib/client.js 为客户端 bundle(无构建步骤,纯手写)。C:\Users\<user>\.dsh\plugin-src\dsh-plugin-market\,热重载或重启 DSH 生效。scripts/:smoke-host.mjs、smoke-client-render.mjs、uninstall-test.mjs、install-run-test.mjs、edge-test.mjs、scan-repos.mjs。PUBLISH.md。License: MIT