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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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,可自由使用、复制、修改和分发,但必须在软件副本或主要部分中保留原版权声明与许可声明。软件按原样提供,不附带任何明示或暗示的担保。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ZASENJC/dsh-plugins-store
DSH 插件市场面向 DeepSeek Harness 生态,自动收录同时带有 dsh-plugin 与…
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7