跳到正文

开源 DSH 插件查找工具 · 一条命令装好

DSH 插件查找工具:先安检,再安装

dsh-plugin-radar 是装进你自己 DeepSeek Harness 的 DSH 插件查找工具。用大白话问它要什么,它去 GitHub `dsh-plugin` topic 里的四千多个仓库按需检索,对照两层精选注册表核对身份,对你选中的插件跑一遍装前安全扫描,你点头之后才动手安装。

dsh-plugin-radar:查找、安检、安装

三步装好这个 DSH 插件查找工具

两种安装方式装的是同一份能力,选一种就行。命令里的 web 换成你实际启动的 profile 名。

dsh plugin --profile web add 'github:dshplugin-me/dsh-plugin-radar#v0.1.1'

复制不会执行任何命令。执行前请自己核对一遍。

官方 profile bundle 安装方式,命令形式来自 DeepSeek Harness 官方文档。PATH 里没有全局 dsh 就换成 npx -y @deepseek-ai/dsh plugin …,从源码跑 dsh 的在 checkout 根目录用 pnpm dsh plugin …。钉死 v0.1.1 是为了让之后推的新提交改不了你 profile 里挂的东西。纯 JavaScript、没有构建步骤,git 安装后没东西要编译,pnpm 不会向你要 allowBuilds 授权——那个授权的含义是允许这个包在安装时执行代码,不该当例行步骤点过去。

装完先验证,再启动

dsh --profile web --dump-config
dsh --profile web

第一条只读配置、不启动;输出里要能看到 dsh-plugin-radar 这一层。

git clone --depth 1 https://github.com/dshplugin-me/dsh-plugin-radar
cp -r dsh-plugin-radar/skills/plugin-radar "${DSH_HOME:-$HOME/.dsh}/skills/"

复制不会执行任何命令。执行前请自己核对一遍。

不想动 profile 依赖就用这种:把 skill 目录拷进任意一个发现目录即可。只给当前项目用就拷到 <项目根>/.dsh/skills/,跨 agent 共用拷到 ~/.agents/skills/。目录有 watcher,放进去立刻生效,不用重启。

  1. 01

    选一种安装方式并执行

    bundle 装进指定 profile,skill 拷进发现目录。同一台机器把 DSH 插件查找工具装两遍没有意义,选一种。

  2. 02

    确认真的挂上了

    bundle 装法先用 --dump-config 看合成后的配置里有没有 dsh-plugin-radar 这一层——没有就说明它只被当普通依赖装进去了,没挂载。skill 装法直接问一句「列出你现在可用的 skills」,看回答里有没有 plugin-radar。

  3. 03

    用大白话提要求

    描述你想要什么能力,或者直接点名一个插件问它安不安全。DSH 插件查找工具两种问法都认,接下来的检索、核对、安检、安装都由它带着你走。

确认挂载

列出你现在可用的 skills

找插件这样问

有没有 DSH 插件能在网页界面里显示 token 用量?

查安全这样问

帮我看看 dsh-web-ui 装之前安不安全

你问一句之后,DSH 插件查找工具做了什么

整个流程是固定的六步,每一步做完什么、卡在哪都会告诉你,不会闷头装完再说。

  1. 01

    服务端检索候选

    把你的需求提炼成 1 到 3 个英文关键词,交给 GitHub 搜索按 star 排序过滤。不是把整个 topic 灌进上下文让模型翻——GitHub 搜索有 1000 条硬上限,结果被截断时它会明说,不把切片当全貌。

  2. 02

    两层精选交叉核对

    候选先对照 awesome-dsh-plugin 的人工收录名单,再查本站 238 条插件档案里的适用场景、限制和依赖预扫。两层都查不到才回退去现读仓库的 README 和 package.json。

  3. 03

    判定安装方式

    package.json 里有 dsh.bundle.patch 就是 bundle,只有 SKILL.md 就是 skill,README 要求改 cordis.patch.yml 就是 cordis,只剩老的 repository 格式则标记「需要迁移」。判定不了就说判定不了,绝不编一条安装命令给你。

  4. 04

    给出候选表,等你决定

    最多三行:名字、一句话用途、star、最近更新、安装方式、在不在精选名单里,外加一句为什么推荐第一名。没有合适的就直说没有,不硬凑。

  5. 05

    装前安全扫描并出报告

    不管扫没扫出问题,都出一份报告。bundle 查 lifecycle 脚本、外联域名、子进程、越界写入和凭据读取;skill 查提示注入、数据外传和越权指令。可疑的地方贴原文,不转述。

  6. 06

    你确认后安装并验证

    按判定出的安装方式执行,装完带你确认对应的界面、工具或 skill 条目真的出现了。中途冒出扫描时没见过的下载源或写入路径,它会停下来把原文交给你。

安检具体查什么

公开研究扫描了数万个 agent skill,结论是 26.1% 含漏洞、5.2% 疑似恶意。插件跑在你的 DSH 进程里,能读会话、能调工具、能执行命令——装它等于授权,所以 DSH 插件查找工具把这一步做成必经环节,不能跳过。

威胁分类参考 NVIDIA SkillSpector 与 Cisco AI Defense 的公开文档

bundle / cordis:可执行代码

  • package.json 的 preinstall / install / postinstall / prepare 脚本
  • 源码里的 fetch、HTTP、WebSocket 外联域名,逐个对照插件声称的用途
  • child_process / execSync / spawn 的调用点,以及参数从哪来
  • 往 $DSH_HOME 之外写文件、改 .zshrc / .bashrc、动系统设置
  • 读取会话日志、settings、.env、credentials、ssh key、浏览器数据
  • 运行时依赖的数量和来源,带 lifecycle 脚本的依赖一路查到底

skill:注入进上下文的指令

  • 提示注入:让 agent 无视既有规则、假冒系统权威、「别告诉用户」
  • 数据外传:把会话内容、文件、凭据发到外部 URL 或写到意外位置
  • 越权诱导:curl | sh、下载即执行、改权限这类与用途无关的命令
  • 触发词滥用:frontmatter 里说「格式化代码」,正文却在读凭据
  • 随 skill 附带的 scripts/ 目录,按左边那套完整再查一遍
报告最后一定有一句:本次扫描只覆盖已知模式,没有发现不等于没有风险。静态清单挡不住新手法,DSH 插件查找工具把话说满就是对你不负责。

DSH 插件查找工具常见问题

DSH 插件查找工具和这个网站是什么关系?

网站是给人看的目录,DSH 插件查找工具是给 agent 用的接口,数据同源。你在网页上搜索、筛选、读插件档案;装上 dsh-plugin-radar 之后,同样的档案数据会在你的 DSH 会话里被直接引用,省掉你自己开浏览器对照的那一步。

装这个 DSH 插件查找工具需要 GitHub token 吗?

不是必须。它优先用环境变量里的 GITHUB_TOKEN 或 GH_TOKEN,其次用本机 gh 的登录态,两者都没有就走公开 API。区别只在速率限制:公开 API 每小时 60 次搜索,遇到限流时执行一次 gh auth login 再重试即可。

bundle 和 skill 两种装法有什么区别?

装成 bundle 是把仓库作为依赖装进某个 profile,由插件在启动时注册 skill,profile 之间互不影响;装成 skill 是把目录拷进发现目录,改动即时生效、不碰依赖。功能完全一样,需要多 profile 隔离就用 bundle,只想快速试用就用 skill。

它会不会不打招呼就把插件装到我机器上?

不会。流程里有两处硬停顿:给出候选表之后等你选,安全报告出完之后再问一次要不要继续。你不点头它不会执行安装命令,中途发现扫描时没见过的行为也会停下来把原文交给你。

安全扫描能保证插件是安全的吗?

不能,任何静态扫描都做不到。它查的是已知的风险模式:安装脚本、外联域名、子进程、凭据读取、提示注入。报告最后固定会写「没有发现不等于没有风险」,高价值环境请自己再读一遍源码。

找不到合适的插件它会怎么办?

直说没有。GitHub 搜索有 1000 条硬上限,topic 里又有四千多个仓库,所以任何一次检索都可能是切片;结果被截断时它会在输出里标注,不会把切片说成整个生态,也不会为了给答案硬推一个不相干的插件。