dshmarketplace-cli
v0.3.0
Published
Find and install DeepSeek Harness (DSH) plugins from the CLI or from a coding agent. Machine-readable --json output.
Maintainers
Readme
在命令行里查找和安装 DeepSeek Harness(DSH)插件。
npx dshmarketplace-cli find memory
npx dshmarketplace-cli add Anionex/dsh-vision-toolkit不用全局安装,零依赖,不用注册。
这东西解决什么问题
DeepSeek Harness 是 DeepSeek
开源的 agent harness,所有能力都是插件。社区插件已经上千个,散在
dsh-plugin topic 和社区精选库里——找到对的那个,比装上它难多了。
这个 CLI 搜的是 dshmarketplace.dev 的目录,在你
运行之前告诉你这个插件会碰到什么,然后把正确的安装命令交给 dsh:能走 npm
tarball 就走 npm,否则用锁定的 GitHub 源。
命令
find <关键词>
搜能力,别搜产品名。
npx dshmarketplace-cli find memory
npx dshmarketplace-cli find vision --limit 5
npx dshmarketplace-cli find terminal --category uiinfo <owner/repo>
单个插件的分类、语言、开源协议、源码地址、识别到的风险标记,以及所有安装方式。
npx dshmarketplace-cli info Anionex/dsh-vision-toolkitadd <name...>
解析每个插件,然后走 dsh 执行一次安装。仓库名、npm 包名、混着写都行。
npx dshmarketplace-cli add NanmiCoder/dsh-agent-teams
npx dshmarketplace-cli add dsh-context dsh-mnemon @liustack/modsearch
npx dshmarketplace-cli add some/plugin --dry-run --json多个插件会合成一条 dsh plugin add a b c,pnpm 一次性解析完,不是一个一个装。
有三件事是你自己粘命令做不到的。
profile 是从磁盘上读出来的。 目录里发的每条命令都写 --profile web,因为默认装出来
就叫这个。但如果你的 profile 叫 tui,那条命令会执行成功、然后什么都不出现。这里会去读
$DSH_HOME/profiles,并且告诉你它选了哪个。
沙箱里装不上的插件会被提前剔掉,在碰你机器之前。只有 failed 和 timeout 算——
needs-approval 和 not-a-layer 都是装上了的。--force 可以强来。
被拦下的 build script 会自动放行并重装。 pnpm 会拒绝执行依赖的 build script,直到它被
写进 profile 的 onlyBuiltDependencies;在那之前 harness 可能根本不会注册这个插件——装是
装了,但它是死的。CLI 会读 pnpm 实际跳过了哪些,写进 profile 的 pnpm-workspace.yaml,
然后重装一次。--no-approve 则只把该改的地方打印出来,不动手。
| 选项 | 作用 |
| --- | --- |
| --limit <n> | 显示多少条(find,默认 10) |
| --category <id> | 按分类过滤(find) |
| --source github | 强制用 GitHub 源而不是 npm(add) |
| --profile <name> | 装进哪个 DSH profile(add,默认自动识别) |
| --no-approve | 只报告被拦的 build script,不自动放行 |
| --force | 沙箱记录为失败也照装 |
| --dry-run | 只打印命令,不执行(add) |
| --json | 机器可读输出,结构稳定(所有命令) |
preset [id]
挑好的组合。不带 id 就列出来,带 id 就把整套装上。
npx dshmarketplace-cli preset
npx dshmarketplace-cli preset essentials「一套」和「一个」不是同一个结论。目录里每条记录的结论,来自把那一个插件装进空 profile;而一套预设必须扛得住成员一起装,这会在零件不会失败的地方失败 —— 两个插件 要同一个 peer 的不兼容版本、某个 build script 只有在别的插件把宿主包拖进来之后才被拦、 cordis 拒绝重复的 loader entry id 于是插件装上了、报成功了、然后从来没被注册。
所以每套都带着那次沙箱运行的日期、结论,以及当时的 dsh 和 pnpm 版本,CLI 在动手之前
先把这些打出来。装预设走的是跟 add 同一条路,所以 profile 识别、装前拦截、build script
放行它全都有。
给 coding agent 用
所有命令都支持 --json,输出 { ok, command, version, ... }。「只解析不执行」
是一等公民:
npx dshmarketplace-cli add <owner/repo> --dry-run --json返回里带着确切会执行的命令、源码仓库地址,以及识别到的风险标记——要不要真的
运行,决定权留给调用方。包里还带了一份 SKILL.md,会读 skill 的 agent 会自动
路由过来,而不是凭训练记忆猜一个插件名——这个生态才几天,猜错比猜对容易。
环境要求
Node 18 以上,以及 PATH 里能找到 DeepSeek Harness:
npx @deepseek-ai/dsh web安全
插件是第三方代码,跑起来带的是你 agent 的权限。被这个目录收录不代表通过了 安全审计。
凡是能自动识别的,记录里都会标出安装脚本、终端执行、需要密钥,add 在真正
运行之前会先打印出来。源码地址始终会显示——装之前读一眼。
有两种失败不是你的操作问题:
--profile是必填的。dsh plugin是转发给 profile 目录里的 pnpm, 不带这个参数dsh会直接退出,什么都不装。这个 CLI 打印出来的命令已经带上了。- GitHub 源需要放行构建脚本。 pnpm 默认不让 git 来源的包跑构建脚本,要把
它打印的 key 加到 profile 的
pnpm-workspace.yaml的allowBuilds下面。 发布到 npm 的插件不需要这一步,所以 npm 排在前面。
配置
| 变量 | 用途 |
| --- | --- |
| DSHM_API | 把 CLI 指向另一个目录端点 |
相关链接
- 目录 —— https://dshmarketplace.dev
- DSH 内嵌插件 ——
dshmarketplace-plugin - DeepSeek Harness —— https://github.com/deepseek-ai/deepseek-harness
dsh-plugintopic —— https://github.com/topics/dsh-plugin
联系
- 社区 —— LINUX DO
- 问题反馈 —— GitHub Issues
致谢
- LINUX DO —— DSH 生态实际上是在这里被讨论的,这个 项目也在这里发布和收反馈。作者本人在 LINUX DO 发过帖的插件,在目录里会带 一个认证标记。
- awesome-dsh-plugin (CC0-1.0)—— 目录的收录种子来自这里。
开源协议
MIT。独立项目,与 DeepSeek 官方无隶属关系。DeepSeek 与 DeepSeek Harness 是 各自权利人的标识,此处仅用于说明这些插件是做什么用的。
