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

插件发现 apeiria-network/dsh-plugin-discover

DeepSeek Harness
apeiria-network8 天前有提交已提供中文文档扫描:含敏感能力

用一句话描述需求,检索并排序可安装的插件候选

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add apeiria-network/dsh-plugin-discover
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · tool
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 8 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 56 处,展示前 48 条)
  • 读取本地文件
    lib/cli.js:80
    try { return statSync(join(indexDir, current?.name ?? '', 'records.json')).size } catch { return null }
  • 读取本地文件
    lib/cli.js:130
    if (!existsSync(manifestFile)) return null
  • 读取本地文件
    lib/cli.js:135
    const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'))
  • 读取本地文件
    lib/cli.js:136
    const pkg = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8'))
  • 读取本地文件
    lib/cli.js:145
    const value = JSON.parse(readFileSync(join(indexDir, 'model.json'), 'utf8'))
  • 读取本地文件
    lib/cli.js:158
    const pkg = JSON.parse(readFileSync(join(dirname(entry), '..', 'package.json'), 'utf8'))
  • 执行外部命令来自配置/变量
    lib/cli.js:271
    child = spawn(command[0], command[1], {
  • 写入本地文件
    lib/cli.js:309
    mkdirSync(indexDir, { recursive: true })
  • 写入本地文件
    lib/cli.js:311
    writeFileSync(file, `${JSON.stringify(pointer, null, 2)}\n`)
  • 写入本地文件
    lib/runtime.js:103
    try { appendFileSync(buildLogPath(indexDir), `[${new Date().toISOString()}] ${message}\n`) } catch {}
  • 执行外部命令来自配置/变量
    lib/runtime.js:120
    child = spawn(nodeCommand(), [WORKER, indexDir], {
  • 读取本地文件
    lib/build.js:18
    return JSON.parse(readFileSync(file, 'utf8')).version ?? '0.0.0'
  • 发起网络请求
    lib/build.js:25
    const response = await fetch(url, {
  • 写入本地文件
    lib/build.js:50
    writeFileSync(path, content, 'utf8')
  • 写入本地文件
    lib/build.js:58
    mkdirSync(indexDir, { recursive: true })
  • 删除本地文件递归
    lib/build.js:127
    try { rmSync(created.dir, { recursive: true, force: true }) } catch {}
  • 读取本地文件
    lib/store.js:22
    names = readdirSync(indexDir, { withFileTypes: true })
  • 读取本地文件
    lib/store.js:34
    const name = readFileSync(currentPath(indexDir), 'utf8').trim()
  • 读取本地文件
    lib/store.js:37
    if (!dir || !existsSync(join(dir, 'manifest.json')) || !existsSync(join(dir, 'records.json'))) return null
  • 读取本地文件
    lib/store.js:38
    return { name, dir, mtimeMs: statSync(currentPath(indexDir)).mtimeMs }
  • 读取本地文件
    lib/store.js:49
    const manifest = JSON.parse(readFileSync(join(current.dir, 'manifest.json'), 'utf8'))
  • 读取本地文件
    lib/store.js:62
    const records = JSON.parse(readFileSync(join(current.dir, 'records.json'), 'utf8'))
  • 写入本地文件
    lib/store.js:75
    writeFileSync(temp, `${name}\n`)
  • 写入本地文件
    lib/store.js:77
    renameSync(temp, target)
  • 删除本地文件
    lib/store.js:81
    try { unlinkSync(target) } catch {}
  • 写入本地文件
    lib/store.js:82
    renameSync(temp, target)
  • 删除本地文件
    lib/store.js:84
    try { unlinkSync(temp) } catch {}
  • 写入本地文件
    lib/store.js:92
    mkdirSync(indexDir, { recursive: true })
  • 写入本地文件
    lib/store.js:95
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/store.js:128
    mkdirSync(indexDir, { recursive: true })
  • 删除本地文件
    lib/store.js:140
    try { unlinkSync(file) } catch {}
  • 删除本地文件
    lib/store.js:148
    try { unlinkSync(file) } catch {}
  • 删除本地文件递归
    lib/store.js:169
    rmSync(dir, { recursive: true, force: true })
  • 读取本地文件
    lib/compat.js:142
    const value = JSON.parse(readFileSync(file, 'utf8'))
  • 读取本地文件
    lib/model-client.js:23
    const pointer = JSON.parse(readFileSync(join(indexDir, 'model.json'), 'utf8'))
  • 读取本地文件
    lib/model-client.js:24
    if (pointer && typeof pointer.server === 'string' && existsSync(pointer.server)) return pointer.server
  • 读取本地文件
    lib/model-client.js:31
    if (existsSync(server)) return server
  • 执行外部命令来自配置/变量
    lib/model-client.js:71
    child = spawn(command, [this.serverPath], {
  • 发起网络请求
    lib/model-client.js:143
    const response = await this.request('embed', { texts, kind }, Math.max(this.timeoutMs, 120_000))
  • 发起网络请求
    lib/model-client.js:151
    const response = await this.request('truncate', { text, maxTokens })
  • 读取本地文件
    lib/vector-store.js:63
    if (!existsSync(file)) return map
  • 读取本地文件
    lib/vector-store.js:65
    const text = readFileSync(file, 'utf8')
  • 写入本地文件
    lib/vector-store.js:94
    mkdirSync(this.dir, { recursive: true })
  • 写入本地文件
    lib/vector-store.js:138
    appendFileSync(file, values.map(value => `${JSON.stringify(value)}\n`).join(''))
  • 写入本地文件
    lib/build-worker.js:15
    mkdirSync(indexDir, { recursive: true })
  • 读取本地文件
    lib/build-worker.js:17
    if (statSync(buildLogPath(indexDir)).size > 2 * 1024 * 1024) truncateSync(buildLogPath(indexDir), 0)
  • 写入本地文件
    lib/build-worker.js:17
    if (statSync(buildLogPath(indexDir)).size > 2 * 1024 * 1024) truncateSync(buildLogPath(indexDir), 0)
  • 写入本地文件
    lib/build-worker.js:22
    appendFileSync(buildLogPath(indexDir), `[${new Date().toISOString()}] ${message}\n`)
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

用于检索符合用户需求的deepseek-harness插件的工具。支撑根据语义搜索最接近需求的插件(需要额外下载向量化模型)。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-discover 用中文或英文口语找 DeepSeek Harness(DSH)插件。装好之后,直接对 AI 说"帮我找一个能……的插件",它会返回排好序的候选和对应的安装目标。 - 本地运行:索引是你机器上的文件——不连服务端、不上传、不采集任何数据。 - 查询不调模型:排序由代码确定、可回归;AI 只负责解释结果。 - 插件不安装:只给安装目标;装不装、何时装由你和当前LLM会话决定,走 DSH 自己的插件管理与审批通道。 - 向量模型不自动下载:向量模型是独立可选包,只有你显式拉取才会安装。不使用向量增强时不需要下载向量模型。 安装 和装任何 DSH 插件一样:Web 端 插件 → 添加插件,或命令行 dsh plugin --profile web add dsh-plugin-discover 从本地目录安装(开发或试用未发布版本): dsh plugin --profile web add link:D:\dsh-plugin-discover 包里只有代码(约 72 kB):不带索引数据、不带模型权重、不带原生二进制,安装是秒级的。
展开完整文档(README 剩余 1 节)
dsh-plugin-discover

用中文或英文口语找 DeepSeek Harness(DSH)插件。装好之后,直接对 AI 说"帮我找一个能……的插件",它会返回排好序的候选和对应的安装目标。

- 本地运行:索引是你机器上的文件——不连服务端、不上传、不采集任何数据。
- 查询不调模型:排序由代码确定、可回归;AI 只负责解释结果。
- 插件不安装:只给安装目标;装不装、何时装由你和当前LLM会话决定,走 DSH 自己的插件管理与审批通道。
- 向量模型不自动下载:向量模型是独立可选包,只有你显式拉取才会安装。不使用向量增强时不需要下载向量模型。

安装

和装任何 DSH 插件一样:Web 端 插件 → 添加插件,或命令行

dsh plugin --profile web add dsh-plugin-discover

从本地目录安装(开发或试用未发布版本):

dsh plugin --profile web add link:D:\dsh-plugin-discover

包里只有代码(约 72 kB):不带索引数据、不带模型权重、不带原生二进制,安装是秒级的。

快速开始

1. 建索引(一次性)

安装阶段不下载任何东西,先建一次本地索引:

npx dsh-plugin-discover build

下载约 25 MB(dsh.so 插件目录),视网络通常一两分钟完成。也可以直接在会话里让 AI 建库——后台执行、立即返回,不阻塞对话。

索引按用户全局存放,所有 profile 共用,约占 20 MB 磁盘:

| 系统 | 目录 |
| Windows | %LOCALAPPDATA%\dsh-plugin-discover\ |
| macOS | ~/Library/Caches/dsh-plugin-discover/ |
| Linux | ${XDG_CACHE_HOME:-~/.cache}/dsh-plugin-discover/ |

构建总是写入新目录、成功后才切换,失败不影响现有索引;同一时刻只会有一份构建(锁保护)。想彻底重置,删掉整个目录再建即可。

2. 直接问

帮我找一个任务完成时能发微信通知的插件

AI 会调用 plugin_discover 检索并解释结果,例如:

🔍 10 个候选 · 过滤 balanced(排除 1094 条)

① dsh-wecom-notify · 1★ · L5 已验证 · 低风险 DSH 插件:任务完成 / 报错 / 需要用户选择时,自动通过企业微信群机器人 webhook 发送通知 [装: github:ljnljn2005/dsh-wecom-notify] ② dsh-clawbot · 11★ · L5 已验证 · 低风险在 DSH 里接入微信官方 ilink 机器人网关:扫码绑定后,AI 能主动给自己发微信通知 [装: github:cryjkd/dsh-clawbot#1.5.0] ③ @chenweigao/dsh-perch-notify · L5 已验证 · 低风险 Webhook notifications for DSH sessions — POST on approval requests and turn ends [装: github:chenweigao/dsh-perch-notify]

数据截至 2026-10-25 · Powered by dsh.so

每条带星数、验证等级、安全风险、更新时间和安装目标;描述保持英文,由 AI 在回答里翻译。想装哪个,把安装目标交给 DSH 的插件管理即可——本工具自己永远不装。

3.(可选)开启向量模式:见可选向量模式与模型包。

它怎么工作

你的原话 + AI 给的最多 3 条改写 → 本地 BM25 词面检索(4 路查询分别检索,RRF 融合,同仓库的多个包合并成一张卡) → 质量过滤(安全 / 验证等级 / 兼容性) → 筛去不相关的候选 → 返回候选 + 安装目标

- 中文查询需要英文改写:目录里的插件名、标签、描述都是英文,AI 会自动补英文/术语改写,你不用管。
- 不要求所有词都命中:词面检索按 OR 组合,中文长句也能出结果;名称和标签的权重高于描述。
- noMatch 是正确结果:没有足够证据表明存在匹配插件时,工具返回空并建议换说法,而不是硬凑一个。宁可空,不误导。
- 重复条目会合并:同一个安装目标、同一个上游仓库只保留一张卡;fork、重传的副本并入上游,不再分别出现。同名但描述不同的独立项目不会被强行合并。
- 无法安装的条目不返回:上游仓库已删除、且只能从 GitHub 安装的插件不进入结果。
- 本地索引数据会过期:报告头部带"数据截至";索引超过更新周期(默认一周)时,下次检索会先自动刷新、等待成功后再出结果;刷新失败才用旧索引兜底,并明确提示。

工具参数

plugin_discover 的参数由会话模型填写,你不需要手工构造;列出供集成与排查参考:

| 参数 | 类型 | 语义 |
| query | string | 用户原话,不转述。检索必填;explain / refresh 时传 ""。 |
| queryAlts | string[] | 最多 3 条改写:英文/术语版(中文查询必需)、3–5 个能力词、一句使用场景。 |
| limit | integer | 返回条数,1–20;省略时用配置值。 |
| explain | string | 传结果 id / 精确名称 / 安装目标,返回该条完整记录,不检索。 |
| readme | boolean | 与 explain 同用:同时返回该插件的 README 原文。 |
| readmeMaxChars | integer | 与 explain 同用:README 字符上限,默认 200000。 |
| refresh | boolean | 立即返回,后台建/更新索引。 |
| filters | object | 临时覆盖 preset(strict/balanced/loose/off)与 minVerificationLevel(0–5)。 |

配置

打开插件管理页里本插件的详情页,配置区直接显示在页面中。保存即生效——宿主只重载本插件,进程与会话不重启。

| 配置项 | 默认 | 说明 |
| 索引目录 | 系统默认路径 | 见上表。改后 CLI 需用 --index-dir 指向同一目录。 |
| 索引更新周期 | 周(7 天) | 天 / 周 / 月(30 天)/ 3 个月(90 天)。检索时发现超过周期,先刷新并等待成功再出结果。 |
| 过滤档位 | 均衡(balanced) | 严格 / 均衡 / 宽松 / 关闭,见下表。 |
| 最低验证等级(仅均衡档) | 4 | 0 = 不限;1–5 要求验证等级 ≥ N。验证等级未知的条目不因此被删。 |
| 结果返回数量(top N) | 10 | 范围 1–20。 |
| 无关结果筛选强度 | medium | none(关闭)/ low / medium / high。越高越不容易硬凑结果,也越可能对边缘需求返回空。 |
| 向量化检索增强 | off | off / balance(字段向量)/ high(README 向量),见可选向量模式与模型包。 |
| 向量化范围(top N) | 50 | 参与向量重排的候选数,范围 2–200;增强为 off 时不生效。 |
| 单请求超时(秒) | 30 | README 单请求超时,范围 5–300。 |
| README抓取总超时时长(分钟) | 5 | 范围 1–10;超时后剩余记录跳过 GitHub、走 npm CDN。 |
| GitHub 请求并发 | 4 | 范围 1–8;速率固定为每 worker 1 次/秒,不可配置。 |

过滤档位:

| 档位 | 安全 | 验证 | 兼容 |
| strict | audited + low | L5 | 必须通过 |
| balanced(默认) | 排除 audited high/critical;未审计放行并标注 | ≥ L4(可配);缺失放行 | 通过或未知 |
| loose | 只排除 high/critical | 不限 | 只标注 |
| off | 只排除 critical | 不限 | 不判断 |

"未知"不等于"不达标":字段缺失的条目降权并标注,不过滤。过滤后不足 3 条时自动放宽一档,报告中注明。

CLI

dsh-plugin-discover build [--index-dir <dir>] [--json] [--quiet]
dsh-plugin-discover status [--index-dir <dir>] [--json]
dsh-plugin-discover search <query> [--alt <text>]... [--limit <n>] \
[--preset strict|balanced|loose|off] \
[--min-verification <0-5>] [--explain <id>] \
[--readme] [--readme-max-chars <n>] [--json]
dsh-plugin-discover model status [--index-dir <dir>] [--profile <name>] [--json]
dsh-plugin-discover model pull [--spec <spec>] [--profile <name>] \
[--index-dir <dir>] [--dry-run] [--no-verify] [--json]

- build / status:建索引、看状态。
- search:不进会话直接试查询;--alt 可重复最多 3 次给改写。
- model pull / model status:可选模型包的显式拉取与状态,见下节。

DSH 插件不能向 dsh 命令注册子命令,所以 CLI 作为包自带的 bin 提供。链接安装(link:)时没有全局 bin,用 node lib/cli.js build 代替。

可选向量模式与模型包

词面检索(默认)已覆盖大多数需求。向量模式用本地嵌入模型对候选做语义重排,能改善"说法不同但意思相近"的匹配;实测中它对多数查询没有明显优势(部分场景略优、部分略劣),所以默认关闭,想试再开。

代价是一个独立模型包 dsh-plugin-discover-model(int8 量化的 multilingual-e5-small,384 维):下载约 80 MB,连同 ONNX 运行时装完约 420 MB;运行时内存约 400–500 MB。模型跑在子进程,空闲 5 分钟自动退出,不开向量时零开销;ONNX 默认 4 线程(可用环境变量 DSH_MODEL_THREADS 覆盖)。它不是主插件的依赖,只有 model pull 才装:

默认:从 npm 安装 dsh-plugin-discover model pull

备用:从 GitHub Release 资产安装 dsh-plugin-discover model pull --spec "https://github.com/apeiria-network/dsh-plugin-discover/releases/download/model-v0.1.0/dsh-plugin-discover-model-0.1.0.tgz"

开发:从本地目录或 tarball 安装 dsh-plugin-discover model pull --spec "link:D:\dsh-plugin-discover\models\multilingual-e5-small" dsh-plugin-discover model pull --spec "file:D:\path\to\dsh-plugin-discover-model-0.1.0.tgz"

dsh-plugin-discover model status

model pull 把模型包装进当前 DSH profile,按 manifest 逐文件校验(默认 SHA-256),并在索引目录写 model.json 指针。安装时 pnpm 可能以 ERR_PNPM_IGNORED_BUILDS 警告 onnxruntime-node 的构建脚本被跳过——预编译 CPU 二进制仍然可用,这是警告不是失败;其他安装失败会返回非零退出码,并保留已安装的版本。

装好后,在插件详情页把「向量化检索增强」改为:

| 模式 | 行为 |
| off(默认) | 不加载模型、不算向量。 |
| balance | 字段向量重排:把候选的目录字段——名称、标题、标签(topics)、能力标签、描述——拼成文本算语义相似度,与词面名次加权融合。 |
| high | 字段 + README 向量重排:在字段向量之外,额外抓取候选的 README 做语义比对。 |

网络行为(仅 high 模式联网):

- README 来源顺序:GitHub raw → npm CDN 精确版本 → 字段向量兜底;命中缓存不联网。
- 固定限速(全局 4 req/s)、单请求 30 秒保护、总预算默认 5 分钟;超时自动降级,不影响整次查询。
- 无法直连 GitHub 的网络环境下自动走 npm CDN,再不行回退字段向量。
- GitHub 连续返回 403/429 或连续超时会熔断 10 分钟;结果带 readme.circuit 提示,AI 会转告你。
- 向量缓存放本地(<indexDir>/cache/),随数据更新自动失效。
- 模型缺失或启动失败时自动降级为词面排序并附提示,不会静默出错,也不会自动下载。

数据与隐私

- 主源:dsh.so 插件目录,CC-BY-4.0。每份报告带 Powered by dsh.so — DSH Developer Hub 与源数据时间戳。
- 补充:dsh-plugin-catalog,CC0-1.0(兼容信息与仓库地址)。
- npm registry 只用于解析 README 的精确版本,不参与收录与排序。
- 只收录有安装目标的条目——每条结果都能回答"怎么装"。
- 索引只是本机缓存:不上传、不共享、不作为服务分发。

已知限制

- 中文查询依赖 AI 补英文改写;改写偏了会带进相邻插件或漏掉目标。判断门槛能压掉一部分,压不干净。
- 某些泛化场景(如"手机上用"类需求)召回可能偏弱。
- updatedAt 来自目录数据;不在目录里的条目不显示更新时间。
- 上游仓库判定依赖 catalog 的 title;没有 title 的副本可能仍作为独立条目出现。
- 向量模式默认关闭;开启前需先显式拉取模型包。
- 目前仅在 Windows 上验证过;macOS / Linux 理论可用,未实测。

许可

代码 MIT。索引数据保留源许可与署名(dsh.so CC-BY-4.0,catalog CC0-1.0)。
预览分享卡片长什么样 ↓apeiria-network/dsh-plugin-discover
分享 · DeepSeek Harness Hub
apeiria-network/dsh-plugin-discover

用一句话描述需求,检索并排序可安装的插件候选

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部