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

插件市场 ZASENJC/dsh-plugins-store

DeepSeek Harnessv0.1.4
ZASENJC4 天前有提交已提供中文文档扫描:含敏感能力

DSH 插件市场面向 DeepSeek Harness 生态,自动收录同时带有 dsh-plugin 与…

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ZASENJC/dsh-plugins-store
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · market
装得上吗
npm 包存在但缺 main/exports/bin 入口声明,源码安装也可能起不来
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

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

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

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

✓npm 包dsh-plugins-store @ 0.1.4
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 20:45:01

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 60 处,展示前 58 条)
  • 删除本地文件递归
    packages/dsh-plugins-store/build.mjs:8
    await rm(outDir, { recursive: true, force: true })
  • 写入本地文件
    packages/dsh-plugins-store/build.mjs:9
    await mkdir(outDir, { recursive: true })
  • 写入本地文件
    packages/dsh-plugins-store/build.mjs:61
    await writeFile(new URL('./client.js', outDir), wrapped)
  • 发起网络请求
    packages/dsh-plugins-store/lib/client.js:4
    `)}function q(e){return e?.list?.getSnapshot?.().current}function Je(e,s){let a=q(e);return a&&a!==s?Promise.resolve(a):typeof e?.list?.subscribe!="fu
  • 发起网络请求
    packages/dsh-plugins-store/lib/client.js:5
    ${h instanceof Error?h.message:String(h)}`)}}};return t.createElement(d.Modal,{open:e!==null,onClose:k,title:o(b?"store.updateRiskTitle":"store.riskTi
  • 读取本地文件
    packages/dsh-plugins-store/src/plugin-manager.js:45
    const value = JSON.parse(await readFile(join(profileDir, 'package.json'), 'utf8'))
  • 写入本地文件
    packages/dsh-plugins-store/src/plugin-manager.js:53
    await writeFile(join(profileDir, 'package.json'), `${JSON.stringify(manifest, null, 2)}\n`)
  • 读取本地文件
    packages/dsh-plugins-store/src/store-skill.js:28
    return parseBundledStoreSkill(readFileSync(SKILL_URL, 'utf8'))
  • 读取本地文件
    src/lib/catalog-filter-navigation.test.ts:6
    const homepageSource = readFileSync(
  • 读取本地文件
    src/lib/catalog-filter-navigation.test.ts:10
    const detailSource = readFileSync(
  • 读取本地文件
    src/lib/catalog-view-switch.test.ts:6
    const homepageSource = readFileSync(
  • 读取本地文件
    src/lib/catalog-view-switch.test.ts:10
    const navigationSource = readFileSync(
  • 读取本地文件
    src/lib/catalog-view-switch.test.ts:14
    const verifiedPageSource = readFileSync(
  • 读取本地文件
    src/lib/catalog-view-switch.test.ts:18
    const rankingPageSource = readFileSync(
  • 读取本地文件
    src/lib/catalog-view-switch.test.ts:45
    expect(existsSync(fileURLToPath(new URL('../pages/catalog.json.ts', import.meta.url)))).toBe(true)
  • 读取本地文件
    src/lib/catalog-view-switch.test.ts:46
    expect(existsSync(fileURLToPath(new URL('../pages/verified.json.ts', import.meta.url)))).toBe(false)
  • 读取本地文件
    src/lib/category-filter-ui.test.ts:6
    const homepageSource = readFileSync(
  • 读取本地文件
    src/lib/category-filter-ui.test.ts:10
    const projectCardSource = readFileSync(
  • 读取本地文件
    src/lib/category-filter-ui.test.ts:14
    const rankingListItemSource = readFileSync(
  • 读取本地文件
    src/lib/favicon.test.ts:11
    const image = readFileSync(path)
  • 读取本地文件
    src/lib/favicon.test.ts:18
    expect(existsSync(faviconPath)).toBe(true)
  • 读取本地文件
    src/lib/favicon.test.ts:19
    expect(existsSync(faviconSmallPath)).toBe(true)
  • 读取本地文件
    src/lib/favicon.test.ts:25
    const layout = readFileSync(layoutPath, 'utf8')
  • 读取本地文件
    src/lib/favicon.test.ts:33
    const layout = readFileSync(layoutPath, 'utf8')
  • 读取本地文件
    src/lib/hero-visual.test.ts:9
    const homepageSource = readFileSync(homepagePath, 'utf8')
  • 读取本地文件
    src/lib/hero-visual.test.ts:19
    expect(existsSync(vectorMarkPath)).toBe(true)
  • 读取本地文件
    src/lib/hero-visual.test.ts:20
    if (!existsSync(vectorMarkPath)) return
  • 读取本地文件
    src/lib/hero-visual.test.ts:22
    const vectorMark = readFileSync(vectorMarkPath, 'utf8')
  • 读取本地文件
    src/lib/hero-visual.test.ts:27
    expect(existsSync(gridMarkPath)).toBe(true)
  • 读取本地文件
    src/lib/hero-visual.test.ts:28
    if (!existsSync(gridMarkPath)) return
  • 读取本地文件
    src/lib/install-banner.test.ts:6
    const homepageSource = readFileSync(
  • 读取本地文件
    src/lib/plugin-detail-install.test.ts:6
    const detailSource = readFileSync(
  • 读取本地文件
    src/lib/publication-budget.test.ts:133
    const topicSource = readFileSync(
  • 读取本地文件
    src/lib/ranking-ui.test.ts:6
    const pageSource = readFileSync(fileURLToPath(new URL('../pages/index.astro', import.meta.url)), 'utf8')
  • 读取本地文件
    src/lib/ranking-ui.test.ts:7
    const rowSource = readFileSync(fileURLToPath(new URL('../components/RankingListItem.astro', import.meta.url)), 'utf8')
  • 读取本地文件
    src/lib/ranking-ui.test.ts:8
    const rankingSource = readFileSync(fileURLToPath(new URL('./ranking.ts', import.meta.url)), 'utf8')
  • 读取本地文件
    src/lib/site-i18n.test.ts:6
    const readSource = (relativePath: string) => readFileSync(
  • 读取本地文件
    src/lib/theme-ui.test.ts:6
    const readSource = (relativePath: string) => readFileSync(
  • 读取本地文件
    src/lib/validation-ui.test.ts:6
    const cardSource = readFileSync(fileURLToPath(new URL('../components/ProjectCard.astro', import.meta.url)), 'utf8')
  • 读取本地文件
    src/lib/validation-ui.test.ts:7
    const indexSource = readFileSync(fileURLToPath(new URL('../pages/index.astro', import.meta.url)), 'utf8')
  • 读取本地文件
    src/lib/validation-ui.test.ts:8
    const detailSource = readFileSync(fileURLToPath(new URL('../pages/plugins/[id].astro', import.meta.url)), 'utf8')
  • 执行外部命令来自配置/变量
    validation/sandbox/channel-mock-smoke.mjs:55
    const child = spawn(contract.smokeCommand[0], contract.smokeCommand.slice(1), {
  • 读取本地文件
    validation/sandbox/copy-source.mjs:9
    for (const name of await readdir(path)) {
  • 读取本地文件
    validation/sandbox/copy-source.mjs:11
    const stat = await lstat(child)
  • 删除本地文件递归
    validation/sandbox/copy-source.mjs:18
    await rm(destination, { recursive: true, force: true })
  • 写入本地文件
    validation/sandbox/copy-source.mjs:19
    await mkdir(dirname(destination), { recursive: true })
  • 读取本地文件
    validation/sandbox/host-tool-smoke.mjs:12
    const sourceManifest = JSON.parse(await readFile(resolve(pluginRoot, 'package.json'), 'utf8'))
  • 读取本地文件
    validation/sandbox/host-tool-smoke.mjs:23
    const profileManifest = JSON.parse(await readFile(resolve(profileRoot, 'package.json'), 'utf8'))
  • 读取本地文件
    validation/sandbox/host-tool-smoke.mjs:33
    const manifest = JSON.parse(await readFile(resolve(installedRoot, 'package.json'), 'utf8'))
  • 读取本地文件
    validation/sandbox/host-tool-smoke.mjs:43
    const nodeModulesRootReal = await realpath(nodeModulesRoot)
  • 读取本地文件
    validation/sandbox/host-tool-smoke.mjs:44
    const installedRootReal = await realpath(installedRoot)
  • 读取本地文件
    validation/sandbox/host-tool-smoke.mjs:49
    const entrypointReal = await realpath(entrypointPath)
  • 读取本地文件
    validation/sandbox/postflight.mjs:4
    const rows = (await readFile(path, 'utf8')).trim().split('\n').slice(1)
  • 读取本地文件
    validation/sandbox/postflight.mjs:15
    const profiles = (await readdir(profilesRoot, { withFileTypes: true }))
  • 读取本地文件
    validation/sandbox/postflight.mjs:19
    await readFile('/validation/dsh-home/profiles/validation/package.json', 'utf8')
  • 读取本地文件
    validation/sandbox/verify-uninstall.mjs:5
    const manifest = JSON.parse(await readFile('/validation/dsh-home/profiles/web/package.json', 'utf8'))
  • 执行外部命令固定命令
    validation/sandbox/web-smoke.mjs:12
    const server = spawn('dsh', ['web', '--host', '127.0.0.1', '--port', String(port)], {
  • 发起网络请求
    validation/sandbox/web-smoke.mjs:25
    const response = await fetch(url)
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-native-command
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 自动分类社区插件
  • 收录社区插件
  • 验证社区插件

自动分类、收录并验证 DeepSeek-Harness 社区插件的市场。

README

由 DeepSeek 最新模型翻译生成
DSH 插件市场面向 DeepSeek Harness 生态,自动收录同时带有 dsh-plugin 与 deepseek-harness Topic 的公开项目,提供目录检索、排行榜与 公开 API。配套的 DSH Web 插件可独立安装并接入 /store 和 Agent 会话;验证结果来自固定源码 SHA 的结构检查与 Linux 隔离沙箱。 访问 DSH 插件市场(DeepSeek Harness 插件目录) 功能 - 自动收录同时带有 dsh-plugin 与 deepseek-harness Topic 的公开仓库,并排除归档仓库、Fork 和宿主应用 - 提供独立的 目录、已验证和 排行榜页面,支持搜索、分类、筛选和排序 - 排行榜支持 24 小时 Star 增速、最多 Star、最新发布和最近更新;项目详情展示分类依据、同标签项目和验证进度 - 每 30 分钟自动同步 GitHub 仓库数据 - 配套 DSH Web 插件支持通过 /store、设置页和 Agent 会话浏览市场,并在用户明确请求和确认后安装、更新或移除 Web profile 插件 安装 DSH Web 插件 以下命令安装市场自身的 DSH Web 插件: dsh plugin --profile web add npm:dsh-plugins-store
展开完整文档(README 剩余 1 节)
DSH 插件市场面向 DeepSeek Harness 生态,自动收录同时带有 dsh-plugin 与 deepseek-harness Topic 的公开项目,提供目录检索、排行榜与 公开 API。配套的 DSH Web 插件可独立安装并接入 /store 和 Agent 会话;验证结果来自固定源码 SHA 的结构检查与 Linux 隔离沙箱。

访问 DSH 插件市场(DeepSeek Harness 插件目录)

功能

- 自动收录同时带有 dsh-plugin 与 deepseek-harness Topic 的公开仓库,并排除归档仓库、Fork 和宿主应用
- 提供独立的 目录、已验证和 排行榜页面,支持搜索、分类、筛选和排序
- 排行榜支持 24 小时 Star 增速、最多 Star、最新发布和最近更新;项目详情展示分类依据、同标签项目和验证进度
- 每 30 分钟自动同步 GitHub 仓库数据
- 配套 DSH Web 插件支持通过 /store、设置页和 Agent 会话浏览市场,并在用户明确请求和确认后安装、更新或移除 Web profile 插件

安装 DSH Web 插件

以下命令安装市场自身的 DSH Web 插件:

dsh plugin --profile web add npm:dsh-plugins-store

安装完成后重启 DSH Web 并刷新浏览器。源码安装、本地构建、卸载、市场工具及 search-dsh-store skill 的完整说明见 packages/dsh-plugins-store/README.md。

项目截图

展开查看项目截图

DSH 插件市场截图 1

DSH 插件市场截图 2

DSH 插件市场截图 3

DSH 插件市场截图 4

DSH 插件市场截图 5

收录与验证

项目分类优先使用仓库公开的 GitHub Topics,并与站内词典和词根规则比对。标签不足时,项目会保留为“其他”或“待识别”,不会根据名称强行推断。

收录仅表示仓库同时出现在 dsh-plugin 与 deepseek-harness Topic,且未被识别为归档仓库、Fork 或宿主应用,不代表项目已经通过安装、兼容性、安全性或质量验证。目录同步模块只读取公开仓库元数据,不执行第三方代码;可选 DSH Web 插件只会在用户阅读风险提示并明确确认后发起安装。

独立验证流程先对固定 SHA 做源码特征分类,再只对分类后的待验证目录进入一次性 Linux 沙箱。沙箱无商店密钥、非 root、资源受限,安装、激活、入口导入和 apply 调用均在隔离环境中完成;失败结果带错误码进入人工复核,不会进入源码排除名单。只有绑定当前仓库 ID、SHA、DSH 版本、平台和验证器版本的通过结果才显示“已验证”;该标记不等于完整安全审计或官方背书。

商店 API

商店提供公开、只读的完整目录接口:

GET https://api.dshmk.com/

- 无需鉴权,不接收查询参数。
- 返回整个目录,不提供服务端搜索、筛选或分页;调用方应在本地处理。
- 目录约每 30 分钟刷新一次。请使用 schemaVersion 判断响应是否兼容,不要依赖仓库数组顺序。
- 生产响应允许跨域读取,浏览器插件可直接请求;命令行、Node.js 或其他服务端同样可直接调用。

使用示例

使用 curl 获取目录并读取基础信息:

curl --fail --silent --show-error \
--header 'Accept: application/json' \
https://api.dshmk.com/ \
| jq '{schemaVersion, generatedAt, stats}'

在 Node.js 22+ 中筛选当前已验证的插件:

const response = await fetch('https://api.dshmk.com/', {
headers: { Accept: 'application/json' },
})ts
if (!response.ok) {
throw new Error(目录请求失败:HTTP ${response.status}) }

const catalog = await response.json()
if (catalog.schemaVersion !== 1 || !Array.isArray(catalog.repositories)) {
throw new Error('不兼容的目录响应') }

const verifiedPlugins = catalog.repositories.filter((repository) =>
repository.projectType === 'plugin'
&& repository.validation?.overall === 'verified',
)

响应字段

| 字段 | 说明 |
| schemaVersion | 目录数据结构版本,当前为 1 |
| generatedAt | 本次目录生成时间,ISO 8601 格式 |
| source | 收录来源,目前为 GitHub dsh-plugin 与 deepseek-harness Topic 交集 |
| stats | 收录数量及分类、项目类型、验证状态统计 |
| repositories | 仓库列表 |
| repositories[].repositoryId | GitHub 数字仓库 ID,作为稳定身份标识 |
| repositories[].fullName | GitHub 仓库全名,如 owner/repository |
| repositories[].projectType | 项目类型,如 plugin、skill、collection 或 unknown |
| repositories[].category / categories | 主分类及全部匹配分类 |
| repositories[].validation | 当前验证状态、绑定的源码 SHA、DSH 版本、平台及各阶段证据 |
| repositories[].install | README 安装证据以及解析后的候选;没有可靠安装证据时省略 |
| repositories[].install.candidate.action | 结构化安装动作,当前固定为 add |
| repositories[].install.candidate.specifier | 与 profile 无关的机器安装标识;已验证 GitHub 候选会固定到验证 SHA |
| repositories[].install.candidate.executable | 当前目录策略是否允许进入一键安装确认流程,不代表安全保证 |

判断当前验证状态时,只应使用 repositories[].validation.overall === "verified"。status.verification、历史验证链接或曾经通过的记录不能替代当前结果。

安装消费者应读取 action 与 specifier,再由本地 DSH 环境选择 profile 并执行结构化参数。例如 DSH Desktop 应使用 desktopProfiles.current 作为 profile 真值,并把 ['add', candidate.specifier] 交给 desktopPnpm.runPlugin()。command 与 args 为普通 DSH 展示和旧消费者保留,其中可能包含 web profile;不要把 command 当作 shell 文本直接执行。确认、来源校验、超时、取消和执行结果均由消费者负责,目录 API 不接收或推断用户的本地 profile。

自动化架构

自动化主链只有三步:源码分类、增量验证、目录同步与生产发布。分类每小时自动运行,目录每 30 分钟独立刷新;验证完成后也会触发目录同步。验证没有新结果或执行失败时,发布流程继续使用最近一次成功状态,不会中断网站更新。
mermaid
flowchart TB
CLASSIFY["1. Classify plugins源码分类,不执行第三方代码"]
VALIDATE["2. Validate plugins增量结构检查与 Linux 隔离验证"]
SYNC["3. Sync catalog目录同步、测试构建与生产发布"]

CLASSIFY -->|分类完成后自动触发| VALIDATE
VALIDATE -->|验证完成后自动触发| SYNC
SYNC -.->|最新发现快照进入下一轮| CLASSIFY

CLASSIFY_TIMER["每小时自动分类"] --> CLASSIFY
SYNC_TIMER["每 30 分钟自动刷新"] --> SYNC
TOPICS["GitHub 社区项目"] --> SYNC

SYNC --> ORIGIN["生产服务器原子版本切换"]
ORIGIN --> CLOUDFLARE["Cloudflare"]
CLOUDFLARE --> SITE["dshmk.com目录、已验证、排行榜、详情"]
CLOUDFLARE --> API["api.dshmk.com公开目录 API"]
API --> PLUGIN["DSH Web 插件/store、设置页与 Agent 工具"]

deploy-pages.yml 仅用于 GitHub Pages 预览或备用站点,不属于上述生产链路。正式网站和 API 由 sync-catalog.yml 构建并发布到生产服务器,再通过 Cloudflare 对外提供服务。

本地开发

需要 Node.js 22 或更高版本。

运行站点 bash
npm ci
npm run dev

默认访问地址:http://localhost:4321/。

构建 DSH Web 插件 bash
npm run build:plugin
npm pack ./packages/dsh-plugins-store

同步目录 bash
npm run sync

同步脚本支持读取 GITHUB_TOKEN 或 GH_TOKEN。未提供 Token 时会受到 GitHub API 的较低请求限额约束。

检查与构建 bash
npm test
npm run build

社区交流

欢迎加入 QQ 群或微信群,与社区成员交流 DSH 插件的使用、开发和生态动态。
| QQ 群 | 微信群 |

许可证

项目代码采用 MIT License,可自由使用、复制、修改和分发,但必须在软件副本或主要部分中保留原版权声明与许可声明。软件按原样提供,不附带任何明示或暗示的担保。
预览分享卡片长什么样 ↓ZASENJC/dsh-plugins-store
分享 · DeepSeek Harness Hub
ZASENJC/dsh-plugins-store

DSH 插件市场面向 DeepSeek Harness 生态,自动收录同时带有 dsh-plugin 与…

回到顶部