🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

插件市场 uluckystar/dsh-plugin-market

DeepSeek Harnessv1.3.0
uluckystar14 天前有提交已提供中文文档扫描:含敏感能力

DSH 插件市场:在设置页浏览 mydsh.dev 插件大全5596 候选 / 3656 有效,分类/AI…

32.2/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:npm 同名包「dsh-plugin-market」归属 veloce-ailab/dsh-plugin-market,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add uluckystar/dsh-plugin-market
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

npm 同名包「dsh-plugin-market」归属 veloce-ailab/dsh-plugin-market,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-plugin-market @ 1.3.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 14:34:23

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 127 处,展示前 77 条)
  • 发起网络请求
    lib/client.js:661
    if ((await fetch("/api/plugin-market/lifecycle", {
  • 发起网络请求
    lib/client.js:1208
    const resp = await fetch(path, {
  • 读取本地文件
    lib/gateway.js:27
    return readFileSync(`/proc/${ppid}/comm`, 'utf8').trim();
  • 执行外部命令固定命令
    lib/gateway.js:30
    return execFileSync('ps', ['-o', 'comm=', '-p', String(ppid)], { encoding: 'utf8', timeout: 3000 }).trim();
  • 读取密钥环境变量
    lib/gateway.js:129
    githubToken: config?.githubToken || process.env.PLUGIN_MARKET_GH_TOKEN || process.env.GH_TOKEN || '',
  • 读取密钥环境变量
    lib/gateway.js:130
    securityInternalKey: config?.securityInternalKey || process.env.PLUGIN_MARKET_SECURITY_KEY || '',
  • 发起网络请求
    lib/gateway.js:139
    this.fetchDispatcher = this.config.proxyUrl !== '' ? new ProxyAgent(this.config.proxyUrl) : undefined;
  • 读取本地文件
    lib/gateway.js:168
    if (existsSync(this.catalogDiskPath)) {
  • 读取本地文件
    lib/gateway.js:169
    const disk = JSON.parse(readFileSync(this.catalogDiskPath, 'utf8'));
  • 发起网络请求
    lib/gateway.js:181
    const resp = await fetch(`${this.config.marketBaseUrl}/assets/plugins.json`, {
  • 写入本地文件
    lib/gateway.js:202
    mkdirSync(join(this.catalogDiskPath, '..'), { recursive: true });
  • 写入本地文件
    lib/gateway.js:203
    writeFileSync(this.catalogDiskPath, JSON.stringify({ at: now, plugins }), 'utf8');
  • 请求外部主机api.github.com
    lib/gateway.js:245
    const response = await fetch(`https://api.github.com/repos/${owner}/${repo}/contents/package.json`, this.fetchOptions(headers, controller.signal));
  • 发起网络请求
    lib/gateway.js:245
    const response = await fetch(`https://api.github.com/repos/${owner}/${repo}/contents/package.json`, this.fetchOptions(headers, controller.signal));
  • 读取本地文件
    lib/gateway.js:268
    const scheduled = existsSync(this.validatedDiskPath)
  • 读取本地文件
    lib/gateway.js:269
    ? JSON.parse(readFileSync(this.validatedDiskPath, 'utf8')) : {};
  • 读取本地文件
    lib/gateway.js:270
    const metadata = existsSync(this.validatedMetadataPath)
  • 写入本地文件
    lib/gateway.js:300
    mkdirSync(join(path, '..'), { recursive: true });
  • 写入本地文件
    lib/gateway.js:305
    writeFileSync(temp, JSON.stringify(overlay), { encoding: 'utf8', mode: 0o600 });
  • 写入本地文件
    lib/gateway.js:306
    renameSync(temp, path);
  • 删除本地文件
    lib/gateway.js:312
    unlinkSync(temp);
  • 发起网络请求
    lib/gateway.js:411
    const resp = await fetch(`${this.config.marketBaseUrl}/api/security/list`, {
  • 发起网络请求
    lib/gateway.js:456
    const resp = await fetch(`${this.config.marketBaseUrl}/api/ai-search`, {
  • 发起网络请求
    lib/gateway.js:618
    const resp = await fetch(`${this.config.marketBaseUrl}/api/security/list`, {
  • 写入本地文件
    lib/gateway.js:733
    mkdirSync(join(this.lifecycleDiskPath, '..'), { recursive: true });
  • 执行外部命令来自配置/变量
    lib/gateway.js:961
    const proc = spawn(process.execPath, [wrapper, String(process.pid), port, '--', ...restArgs], {
  • 读取本地文件
    lib/profile-ops.js:21
    const manifest = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8'));
  • 读取本地文件
    lib/profile-ops.js:25
    return typeof declared === 'string' && existsSync(join(packageDir, declared));
  • 读取本地文件
    lib/profile-ops.js:34
    if (!existsSync(pkgPath))
  • 读取本地文件
    lib/profile-ops.js:38
    raw = JSON.parse(readFileSync(pkgPath, 'utf8'));
  • 写入本地文件
    lib/profile-ops.js:55
    mkdirSync(dir, { recursive: true });
  • 读取本地文件
    lib/profile-ops.js:58
    if (existsSync(src)) {
  • 读取本地文件
    lib/profile-ops.js:60
    writeFileSync(backup, readFileSync(src, 'utf8'), 'utf8');
  • 写入本地文件
    lib/profile-ops.js:60
    writeFileSync(backup, readFileSync(src, 'utf8'), 'utf8');
  • 写入本地文件
    lib/profile-ops.js:63
    writeFileSync(backup, '{}', 'utf8');
  • 删除本地文件
    lib/profile-ops.js:73
    unlinkSync(join(dir, oldest));
  • 写入本地文件
    lib/profile-ops.js:125
    writeFileSync(pkgPath, `${JSON.stringify(next, null, 2)}\n`, 'utf8');
  • 写入本地文件
    lib/profile-ops.js:133
    renameSync(backup, pkgPath);
  • 发起网络请求
    lib/client/MarketTab.js:211
    const resp = await fetch('/api/plugin-market/lifecycle', { method: 'POST', headers: { 'content-type': 'application/json' }, body: '{}' });
  • 发起网络请求
    lib/client/index.js:13
    const resp = await fetch(path, {
  • 发起网络请求
    src/client/index.ts:32
    const resp = await fetch(path, {
  • 读取本地文件
    src/gateway.ts:45
    return readFileSync(`/proc/${ppid}/comm`, 'utf8').trim()
  • 执行外部命令固定命令
    src/gateway.ts:48
    return execFileSync('ps', ['-o', 'comm=', '-p', String(ppid)], { encoding: 'utf8', timeout: 3000 }).trim()
  • 读取密钥环境变量
    src/gateway.ts:165
    githubToken: config?.githubToken || process.env.PLUGIN_MARKET_GH_TOKEN || process.env.GH_TOKEN || '',
  • 读取密钥环境变量
    src/gateway.ts:166
    securityInternalKey: config?.securityInternalKey || process.env.PLUGIN_MARKET_SECURITY_KEY || '',
  • 发起网络请求
    src/gateway.ts:175
    this.fetchDispatcher = this.config.proxyUrl !== '' ? new ProxyAgent(this.config.proxyUrl) : undefined
  • 读取本地文件
    src/gateway.ts:204
    if (existsSync(this.catalogDiskPath)) {
  • 读取本地文件
    src/gateway.ts:205
    const disk = JSON.parse(readFileSync(this.catalogDiskPath, 'utf8')) as { at: number; plugins: MarketPlugin[] }
  • 发起网络请求
    src/gateway.ts:215
    const resp = await fetch(`${this.config.marketBaseUrl}/assets/plugins.json`, {
  • 写入本地文件
    src/gateway.ts:235
    mkdirSync(join(this.catalogDiskPath, '..'), { recursive: true })
  • 写入本地文件
    src/gateway.ts:236
    writeFileSync(this.catalogDiskPath, JSON.stringify({ at: now, plugins }), 'utf8')
  • 请求外部主机api.github.com
    src/gateway.ts:276
    const response = await fetch(`https://api.github.com/repos/${owner}/${repo}/contents/package.json`, this.fetchOptions(headers, controller.signal))
  • 发起网络请求
    src/gateway.ts:276
    const response = await fetch(`https://api.github.com/repos/${owner}/${repo}/contents/package.json`, this.fetchOptions(headers, controller.signal))
  • 读取本地文件
    src/gateway.ts:293
    const scheduled = existsSync(this.validatedDiskPath)
  • 读取本地文件
    src/gateway.ts:294
    ? JSON.parse(readFileSync(this.validatedDiskPath, 'utf8')) as Record<string, ValidationStatus> : {}
  • 读取本地文件
    src/gateway.ts:295
    const metadata = existsSync(this.validatedMetadataPath)
  • 写入本地文件
    src/gateway.ts:319
    mkdirSync(join(path, '..'), { recursive: true })
  • 写入本地文件
    src/gateway.ts:323
    writeFileSync(temp, JSON.stringify(overlay), { encoding: 'utf8', mode: 0o600 })
  • 写入本地文件
    src/gateway.ts:324
    renameSync(temp, path)
  • 删除本地文件
    src/gateway.ts:327
    finally { if (temp && existsSync(temp)) unlinkSync(temp) }
  • 发起网络请求
    src/gateway.ts:426
    const resp = await fetch(`${this.config.marketBaseUrl}/api/security/list`, {
  • 发起网络请求
    src/gateway.ts:474
    const resp = await fetch(`${this.config.marketBaseUrl}/api/ai-search`, {
  • 发起网络请求
    src/gateway.ts:630
    const resp = await fetch(`${this.config.marketBaseUrl}/api/security/list`, {
  • 写入本地文件
    src/gateway.ts:750
    mkdirSync(join(this.lifecycleDiskPath, '..'), { recursive: true })
  • 执行外部命令来自配置/变量
    src/gateway.ts:976
    const proc = spawn(process.execPath, [wrapper, String(process.pid), port, '--', ...restArgs], {
  • 读取本地文件
    src/profile-ops.ts:31
    const manifest = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8')) as unknown
  • 读取本地文件
    src/profile-ops.ts:34
    return typeof declared === 'string' && existsSync(join(packageDir, declared))
  • 读取本地文件
    src/profile-ops.ts:43
    if (!existsSync(pkgPath)) throw new Error('profile 清单不存在')
  • 读取本地文件
    src/profile-ops.ts:46
    raw = JSON.parse(readFileSync(pkgPath, 'utf8'))
  • 写入本地文件
    src/profile-ops.ts:66
    mkdirSync(dir, { recursive: true })
  • 读取本地文件
    src/profile-ops.ts:69
    if (existsSync(src)) {
  • 读取本地文件
    src/profile-ops.ts:71
    writeFileSync(backup, readFileSync(src, 'utf8'), 'utf8')
  • 写入本地文件
    src/profile-ops.ts:71
    writeFileSync(backup, readFileSync(src, 'utf8'), 'utf8')
  • 写入本地文件
    src/profile-ops.ts:73
    writeFileSync(backup, '{}', 'utf8')
  • 删除本地文件
    src/profile-ops.ts:82
    if (oldest !== undefined) unlinkSync(join(dir, oldest))
  • 写入本地文件
    src/profile-ops.ts:136
    writeFileSync(pkgPath, `${JSON.stringify(next, null, 2)}\n`, 'utf8')
  • 写入本地文件
    src/profile-ops.ts:142
    try { renameSync(backup, pkgPath) } catch { }
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:api.github.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-host-webserver
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 浏览插件大全
  • 分类与AI搜索
  • 一键安装启用停用卸载
展开完整介绍(98 字)↓

DSH 插件市场:在设置页浏览 mydsh.dev 插件大全(5596 候选 / 3656 有效),分类/AI 搜索、一键安装启用停用卸载、安全评估与自动重启。非官方社区 mydsh.dev 出品

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-market · 插件市场 在 DeepSeek Harness 设置页直接浏览 mydsh.dev 插件大全(catalog 5596 个,已核验可直接启用 3656 个)——分类浏览、本地/AI 搜索、安装、启用、停用、卸载、安全评估与一键自动重启生效。只展示已核验为可直接启用的 DSH 插件。非官方社区 mydsh.dev 出品。 预览 | 分类浏览 | 本地 / AI 搜索 | 已安装状态 | | 分类浏览 | 本地和 AI 搜索 | 已安装状态 | 详细教程见:docs/USAGE.zh-CN.md。 软推广素材见:docs/PROMOTION.zh-CN.md。
展开完整文档(README 剩余 1 节)
dsh-plugin-market · 插件市场

在 DeepSeek Harness 设置页直接浏览 mydsh.dev 插件大全(catalog 5596 个,已核验可直接启用 3656 个)——分类浏览、本地/AI 搜索、安装、启用、停用、卸载、安全评估与一键自动重启生效。只展示已核验为可直接启用的 DSH 插件。非官方社区 mydsh.dev 出品。

预览

| 分类浏览 | 本地 / AI 搜索 | 已安装状态 |
| 分类浏览 | 本地和 AI 搜索 | 已安装状态 |

详细教程见:docs/USAGE.zh-CN.md。
软推广素材见:docs/PROMOTION.zh-CN.md。

功能

- 分类浏览:全部 / Agent / MCP / 开发工具 / 界面 / 视觉 / LLM / 记忆 / 数据 / 集成 共 10 类,带计数,按星数排序,「加载更多」
- 本地搜索:毫秒级本地匹配(名称 / 中英简介 / 描述 / topics)
- AI 搜索:勾选 🤖 AI 后调用 mydsh.dev 的 AI 搜索服务,语义理解你的需求
- 安装后可控启用:安装只下载插件,不自动启用;是否启用由用户明确点击「启用」决定
- 启用 / 停用 / 卸载:启用/停用后一键自动重启生效;停用保留安装,可随时重新启用;卸载彻底移除并清理启用状态
- 生命周期七态:未安装 / 已安装·未启用 / 已启用·重启后生效 / 已启用 / 已停用·重启后生效 / 不兼容·不建议启用 / 安装失败
- 一键自动重启生效:启用/停用后点「立即重启生效」——确认弹窗如实告知预估时长与影响,重启完成后页面自动刷新。适配所有运行环境(PM2 / 手动启动 / Docker / systemd / Windows)
- 安全评估:查询 mydsh.dev 安全报告,无报告则引导提交
- 安全保护:写配置前自动备份、写后校验、失败自动回滚;DSH 核心组件保护;不兼容插件拒绝启用(防启动失败);安装失败留痕可重试;插件名白名单 + 同源校验 + 请求体上限
- mydsh.dev 引流:每个插件带详情页链接(README / 安装方式 / 相似推荐 / 中文总结)

性能

- 插件大全磁盘持久化缓存($DSH_HOME/storages/plugin_market_catalog.json,6 小时 TTL):重启不丢、不重复拉取 2MB 数据
- 严格校验缓存($DSH_HOME/storages/plugin_market_validated_bundle_v1.json):只把含 dsh.bundle.patch 声明的仓库标为可展示
- 分类切换纯本地过滤,零网络请求
- AI 搜索 6 秒超时保护,慢不阻塞本地结果

安装

方式一:从 GitHub 安装
dsh plugin --profile web add github:uluckystar/dsh-plugin-market

方式二:从本地目录安装(开发)
dsh plugin --profile web add /path/to/dsh-plugin-market

安装后重启 DSH,在 设置 → 插件 → 插件市场 查看。后续通过插件市场安装的插件需要先「启用」,再按提示重启 DSH 后生效。

配置(cordis.patch.yml)

- id: plugin-market
name: dsh-plugin-market
config:
marketBaseUrl: 'https://mydsh.dev' # 数据源 profileName: 'web' # 安装目标 profile pnpmCommand: 'npx -y pnpm@11.7.0' # pnpm 版本(匹配 profile packageManager) proxyUrl: 'http://127.0.0.1:7897' # 本机代理(加速 GitHub 下载),可置空 catalogCacheMs: 21600000 # 插件大全缓存 TTL(6 小时) installTimeoutMs: 300000 # 安装超时 githubToken: '' # 可选:GitHub API token;无 token 时使用 raw/HEAD + 代理校验

API

| 端点 | 说明 |
| POST /api/plugin-market/browse | {category, limit} 分类浏览(limit=0 全量) |
| POST /api/plugin-market/search | {query, ai} 本地 + 可选 AI 搜索 |
| POST /api/plugin-market/install | {repo} 安装到当前配置,但不自动启用 |
| POST /api/plugin-market/enable | {repo} 启用插件,必要时提示重启 |
| POST /api/plugin-market/disable | {repo} 停用插件,保留安装 |
| POST /api/plugin-market/uninstall | {repo} 卸载并清理启用状态 |
| POST /api/plugin-market/status | {repo} 查看单个插件生命周期状态 |
| POST /api/plugin-market/lifecycle | 当前配置下全部已安装插件生命周期(含运行环境与自动重启能力) |
| POST /api/plugin-market/restart | 一键自动重启 DSH(PM2 托管由监督者拉起;其余环境由插件自拉起 wrapper) |
| POST /api/plugin-market/assess | {repo} 安全评估 |
| POST /api/plugin-market/installed | 已安装清单 |

数据源

MyDSH · DeepSeek Harness 插件大全 —— 自动同步 DSH 插件候选(当前 5596 个),并通过 package.json 中的 dsh.bundle.patch 声明严格校验是否可直接启用(当前 3656 个有效 / 1940 个无效已隐藏);插件市场只展示已严格确认的仓库。未知、不可解析、纯界面包和不完整包都不会展示。非官方社区。

开发

pnpm install
pnpm run typecheck # host + client 双 tsc
pnpm run build # tsc + tsdown(产物在 lib/)
node scripts/lifecycle-smoke.mjs # 生命周期安全回归(18 项断言,临时 profile,不碰真实配置)

License

MIT —— 详见 LICENSE。

致谢

- DeepSeek Harness——一切皆插件的 Agent 运行时
- MyDSH 社区——非官方插件大全数据源

2026-10 维护说明

本站目录是候选收录,不是安装量或全部可用插件数。valid 仅表示历史检查找到插件 bundle 声明,不等于指定 DSH 版本安装、启动或安全审查通过。当前分类规则与网站统一,并包含生态桥/兼容层。

校验任务使用 $DSH_HOME,可通过 PLUGIN_MARKET_CATALOG_SOURCE 指定目录源,不强制使用某台电脑的回环代理。PLUGIN_MARKET_VALIDATE_MAX_ITEMS 同时约束新增与到期复查;有效条目周期复查,无效条目可在作者修复后重新校验。结果原子写入,网络临时失败不将已有有效结果改判为无效。

运行 node scripts/test-validation.mjs 验证批量上限和结果落盘。详情页的版本依赖来自作者声明;没有实测记录时明确标记未实测,不承诺运行兼容。

0.1.2 搜索维护

本地检索先判断关键词匹配,星数只对已匹配条目加权,避免无关高星仓库出现在结果中。AI 精排使用相关候选,并拒绝候选集外的返回;6秒超时覆盖完整响应体,失败仍返回本地结果。node scripts/test-search.mjs 覆盖这些行为。

0.1.3 持续运行

服务内临时校验按 profile 写入独立原子覆盖层,独立调度是主校验缓存的唯一写入者,避免旧内存快照覆盖调度刚更新的结果。按实际校验时间合并;临时网络失败不降级已有确定结果。AI 整体请求最多30秒,以覆盖当前模型正常响应时间,普通本地搜索仍不调用模型。
预览分享卡片长什么样 ↓uluckystar/dsh-plugin-market
分享 · DeepSeek Harness Hub
uluckystar/dsh-plugin-market

DSH 插件市场:在设置页浏览 mydsh.dev 插件大全5596 候选 / 3656 有效,分类/AI…

这是你的仓库?认领条目

回到顶部