safer-dsh-market
主打安全,提倡先审查再安装的DeepSeek Harness市场。深度扫描 5 分钟,放心使用每一天。
- Stars
- 8
- Language
- TypeScript
- Created
- Aug 15, 2026
- Updated
- Oct 4, 2026
Introduction
safer-dsh-market
发现插件,按需安装。
中文 | English
DeepSeek Harness(DSH)的第三方插件市场。数据来自社区推荐目录 awesome-dsh-plugin,可按名称、包名、功能标签和分类搜索;通过宿主官方插件管理器直接安装,安装后可选择 AI 审查已安装版本。
[!IMPORTANT] 包名已从
dsh-desktop-safe-market更名为safer-dsh-market,GitHub 仓库同步更名为bruc3van/safer-dsh-market。旧包不会自动升级为新包。迁移步骤:停用旧插件 → 安装并启用新插件 → 按需重新设置原来的配置。缓存和待卸载记录沿用原存储路径,无需迁移。

为什么需要它
装插件,本质上是在自己的机器上运行别人写的代码。普通目录只回答「有哪些插件」,而「这个插件安全吗」——你点下安装那一刻真正在赌的问题——始终没人回答。
这个插件把社区推荐数据和官方安装能力连在一起:按用途发现插件,确认后直接安装;安装后可选择只读 AI 审查,检查潜在风险。事后审查不能阻止插件在安装启用时执行。
功能一览
- 插件市场:打开即展示编辑精选;浏览、搜索、按分类筛选社区推荐插件,支持手动刷新数据与离线缓存。
- 直接安装与可选审查:安装统一调用官方
pluginManager;安装成功后或已安装卡片上可生成只读审查草稿,由你发送。 - 已安装面板:查看当前 profile 的插件,一键停用/启用(即时生效)或卸载。
- 技能页:列出当前会话可用的技能及其来源、调用方式,可一键打开技能所在文件夹。
- 按需加载目录:启用前不联网读取社区目录;这不控制宿主或其他插件的网络活动。
DSH 版本兼容
0.9.1 支持 DSH 0.1.7-rc.2 与 0.2.x,最低要求 0.1.7-rc.2,不兼容旧版宿主。 新版已迁移到新接口且没有保留旧版回退路径:不兼容 DSH 0.1.1 和 0.1.2 系列,也不兼容 0.1.5 系列。请先确认宿主版本,再选择对应的插件版本。
| DSH 宿主版本 | 插件版本 | npm 安装目标 |
|---|---|---|
0.2.x、0.1.7-rc.2(当前适配) | 0.9.1 | safer-dsh-market@0.9.1 |
0.1.5 系列,最低 0.1.5-rc.1 | 0.5.2 | dsh-desktop-safe-market@0.5.2 |
0.1.2 系列,最低 0.1.2-alpha.3 | 0.4.3 | dsh-desktop-safe-market@0.4.3 |
0.1.1 系列 | 0.3.0 | dsh-desktop-safe-market@0.3.0 |
旧宿主请固定插件版本,不要安装 latest 或使用不带版本号的包名升级。例如继续使用 DSH 0.1.5 时,在支持 CLI 管理的 profile 中(先替换 <profile>,不适用于 Electron desktop):
dsh plugin --profile <profile> add dsh-desktop-safe-market@0.5.2
从旧版升级到 0.9.1 的注意事项:
- 先把 DSH 升级到
0.1.7-rc.2或0.2.x; - 市场开关现由宿主保存在当前 profile 的
cordis.patch.yml中,即时生效、重启后保留; - 旧版
settings.yaml里的safe-market设置不会自动迁入,升级后若市场处于关闭状态,在页面上重新启用一次即可。
安装
以下 CLI 示例仅适用于可由 CLI 管理的 profile,不适用于 Electron 的 desktop。将 <profile> 替换为已核实的实际名称。推荐从 npm 安装指定版本:
dsh plugin --profile <profile> add safer-dsh-market@0.9.1
也可以把安装交给你的 Agent,复制这段提示词发过去:
帮我安装 DSH 安全市场 0.9.1:确认宿主兼容 DSH 0.1.7-rc.2 或 0.2.x,并核实当前实例的 profile。优先使用官方 plugin_manager 的 install_bundle,target 为 safer-dsh-market@0.9.1。desktop 禁止用 CLI;没有工具时交接我使用 Electron 官方插件管理界面。其他 profile 仅在工具不可用且确认 CLI 管理同一实例时使用显式 --profile 命令。不要改装到其他 profile,按官方结果说明是否需要重启。
需要锁定到本文档对应版本时,使用 GitHub release tarball:
dsh plugin --profile <profile> add https://github.com/bruc3van/safer-dsh-market/archive/refs/tags/v0.9.1.tar.gz
官方管理器负责安装依赖和登记插件,无需手工修改 package.json。按返回结果判断是否需要重启:applied 表示已生效,restart-required 表示安装完成但需重启当前实例;失败或配置覆盖不能当作已生效。
浏览器与桌面客户端连接同一 profile 时看到的是同一份市场数据;CLI 只负责安装和管理插件,不显示界面入口。
快速上手
1. 启用市场
市场默认是关闭的,页面上只有一张说明卡片和「启用安全市场」按钮。
启用后才会联网读取社区目录。开关由宿主持久化,重启后保留;页面没有「停用市场」按钮。如需关闭目录读取,可通过宿主支持的配置方式将 enabled 设为 false。
2. 打开市场
| 入口 | 位置 | 依赖 |
|---|---|---|
| 左侧导航 | 「新会话」下方、「工作区」上方的「安全市场」,在主区域浏览 | DSH 全局面板及侧栏导航插槽 |
| 右侧栏 | 打开会话 → 「打开右侧边栏」→「开始」页选择「安全市场」 | 右侧 Sidebar 服务 |
两个入口共用开关和操作逻辑,设置页不再重复提供入口。

3. 浏览与搜索
- 查找插件:「精选 / 已安装 / 全部」切换编辑精选、本机管理与完整目录,默认打开精选。搜索框支持名称、包名、功能或分类,在精选中输入会自动切到「全部」搜索完整目录;「全部」下的功能分类使用下拉菜单。筛选后可点击「清除筛选」恢复目录。
- 编辑精选:按编辑给出的顺序展示,数量取自上游目录;精选不按热度排序,卡片不显示 Star 数。
- 插件卡片:显示分类、作者和最近更新日期,同一列表中的卡片等高、按钮底部对齐。已安装的插件标出「已安装 vX」,按钮显示「管理」,点击跳转到「已安装」。
- 刷新数据:右上角按钮读取最新目录,刷新中禁止重复点击。
- 更多操作(⋯):GitHub 仓库、联系作者。
- 滚动:标题、页签、搜索和筛选栏固定,卡片列表独立滚动。宽度足够时(至少 440px),插件页和技能页向下滚动都会把搜索框收起到页签右侧,回滚或回到顶部时复原。
- 回到顶部:滚动超过约半屏(至少 240px)后右下角出现按钮;遵循系统「减少动效」偏好。
安装插件
安装统一通过当前宿主的官方管理器执行,不依赖会话的 Standard / Creator 模式。
直接安装
点击卡片上的「安装」,在弹窗中选择组件并确认,由当前宿主的官方插件管理器检查、安装并启用。不需要工作区,也不发送任何提示词。
没有可用安装目标的插件(目录未提供安装信息,或只提供手动说明)按钮显示「安装说明」,弹窗提示「非标准插件,暂无可用安装目标,请前往 GitHub 查看安装说明」,并附上游提供的手动说明和 GitHub 链接。
- 安装前:可展开「安装详情」查看安装引用、要求与备注;只有多个目标时才显示组件选择。
- 多个安装目标:支持勾选多个组件,按列表顺序逐个安装;默认只勾选第一项,请按需选择,避免同时安装同一插件的不同来源。来源中的 profile 仅作参考,实际安装到当前宿主的 profile。
- 依赖脚本:若依赖需要运行安装脚本,会单独请求授权,允许后才继续。
- 取消与恢复:失败或需要脚本授权时暂停队列,重试只处理当前组件;连接中断时先「查询安装结果」,确认成功后继续。取消后不再启动后续组件;已安装成功的组件保留,不自动回滚。被其他配置覆盖时停止队列,请到官方插件页检查。
- 结果:区分「已生效」「需要重启」「被其他配置覆盖」「失败」「已取消」。
说明:
- 只使用目录中
packages.targets[].install作为安装目标,command字段永远不会被执行; manual条目或缺少合法目标的条目只展示说明,不会猜测安装地址;- 需要宿主提供
pluginManagerRemote(兼容基线0.1.7-rc.2); - 直接安装不做 AI 安全审查。目录收录和 README 核验都不代表安全或兼容保证。
安装后的 AI 审查
安装成功后可点击「AI 审查已安装版本」,也可在「已安装」卡片点击「AI 审查」。批量安装只把已生效或已安装待重启的组件列入审查目标;部分失败时仍可审查已成功的组件,不把失败、取消、被覆盖或未知结果计作成功。
点击后在当前或最近工作区打开会话,将审查草稿填入输入框,不自动发送。没有工作区时先选择文件夹;取消或打开失败时可以重试。普通 Standard 模式即可使用只读文件工具审查,不要求 plugin_manager 或 Creator。

审查先核实当前实例、profile、本地实际包名、精确版本、来源与文件。安装请求引用不是最终版本;不会改审 latest 或上游 main,monorepo 必须定位真实子包。检查外连、凭据访问、文件操作、子进程、脚本、依赖、权限、提示词注入和宿主修改,并报告证据与无法核实项。
插件可能已经执行。审查是事后检查,不提供安装前保护,也不能撤销已发生的执行。 审查不执行被审代码,不安装、更新、停用或卸载插件,不改配置。发现风险后给出建议,由你通过界面处理。
更新
官方插件管理器目前没有更新功能,并且会拒绝重复安装已安装的包,因此市场暂不提供更新入口:目录中已安装插件的卡片显示「管理」,点击后跳转到「已安装」。需要更新时,请按上文的安装方式指定新版本重新安装。已安装卡片的「AI 审查」只检查当前版本,不执行更新。
已安装面板
以下是现有已安装管理功能,后端仍包含本地清单编辑和 pnpm remove,尚未全部迁移到官方 pluginManager。安装入口使用官方管理器;AI 审查只读,不执行这些管理动作。
在插件页选择「已安装」,可以看到:
- 当前 profile 通过官方管理器或 CLI 安装的插件(同时出现在
dependencies与dsh.profile.bundles中),含版本、简介和当前运行状态; - 桌面客户端自动接入的市场插件;
- 写在
dependencies里、但没进dsh.profile.bundles的插件(装上了却不会加载),这类只能卸载,不能启用。
DSH 模板自带的插件不在此列。

停用 / 启用
向 profile 的 cordis.patch.yml(用户补丁层)写入或移除一行 - id: <条目> / disabled: true,同时直接驱动 loader 条目——立即生效,无需重启,重启后依旧有效。写入时保留文件中原有的注释和手工内容。
市场插件自身不提供停用按钮,避免关闭当前管理界面。
卸载
- 用户插件:由市场后端先在本会话停用(市场自身卸载跳过即时停用,避免中断操作),再于 profile 目录执行
pnpm remove(与官方dsh plugin remove同一原语),一并去掉依赖、锁文件、node_modules和dsh.profile.bundles条目,并清理pnpm-workspace.yaml中该包的allowBuilds/minimumReleaseAgeExclude条目。 - 失败处理:
pnpm remove失败时改为修改清单并说明磁盘未修剪;清单移除也失败时报告卸载失败,重启清理会保留停用行。 - 同会话重装:刚卸载的插件被残留的停用行按住,卡片会提示「点启用即可恢复」。
第三方 DSH Desktop 接入的旧版插件
此兼容逻辑仅针对第三方 DSH Desktop 曾通过复制文件和归属标记接入的市场,不代表官方 Electron 的安装方式。页面将识别出的副本标为「客户端内置」,并提供移除入口;正常通过官方管理器安装的包仍按普通插件管理。
卸载时先移除当前 profile 的 bundles 条目,再检查其他 profile 是否仍引用同一份副本;仍被引用、无法检查或目录不在受管位置时保留文件,避免影响其他 profile。
如果客户端仍在且没有关闭连接设置里的「接入内置安全市场」,它下次启动会重新接入。要彻底移除,请在客户端关闭该开关。没有归属标记的 in-box bundle 属于部署自身,面板不列出也不提供卸载。
市场关闭时,插件页显示启用说明,不展示已安装管理;技能页独立可用。
技能页
列出当前会话能解析到的技能,包括名称、说明、来源目录和调用方式(AI 可调用 / 可通过 /名称 调用),支持搜索。
技能来自当前会话所属 Agent 的可见范围,切换会话后会重新读取。没有打开会话时显示引导;部分来源加载失败时提示列表可能不完整。来源目录可能显示为工作区相对路径、用户目录相对路径或完整路径。
来源目录后的文件夹图标会通过宿主官方的路径打开能力,在系统文件管理器中打开该技能自己的目录(鼠标悬停可看到完整路径)。宿主会先核实路径确实存在于本机;宿主没有桌面环境(如无界面或远程部署)时不显示图标。

数据来源
默认读取 market-v2.json,失败时改用同一 npm 包的 unpkg 镜像。支持 ETag、本地缓存和手动刷新。
- 支持 schema 1 和 2。v2 附带
packages安装信息,经 Host 校验后才进入客户端,功能标签也参与搜索; - 信封中的
featured/featured_count提供编辑精选:条目按full_name匹配目录中的插件;不在目录中的精选须自带packages才会显示,否则跳过;字段缺失或格式异常时不显示精选,其余功能不受影响; - 升级后若本地缓存由旧版本解析,首次读取会完整重新下载一次,不会沿用缺少新字段的旧结果;
- 安装目标只接受受支持的 npm spec 和 GitHub HTTPS 地址,不接受命令、环境变量、路径或 shell 片段;
- 自定义
catalogBase不会被替换,可填完整 JSON URL,也兼容旧的目录地址(自动追加/market.json)。
协议详见 docs/market-json-spec.md。
配置
市场优先使用宿主 profileContext 提供的名称和实际目录,不默认选择 web。没有宿主信息时才使用显式 profile 配置;两者均缺失时不启动,避免操作错误目标。CLI 示例里的 <profile> 仅可替换为允许 CLI 管理的名称,不能填入 Electron desktop。
通过宿主支持的配置入口调整以下选项。常规 CLI profile 的配置文件为 <DSH_HOME>/profiles/<profile>/cordis.patch.yml;应用管理的目录以宿主为准,不应为绕过安装限制手改文件。
| 字段 | 默认值 | 说明 |
|---|---|---|
enabled | false | 是否允许读取社区目录;页面上的操作由宿主即时保存 |
catalogBase | npm feed 的 market-v2.json 完整 URL | JSON 地址,或包含 market.json 的目录 |
marketSize | 1000 | 返回给界面的最大条数(实际条数由上游目录决定) |
profile | ""(自动识别) | 仅在宿主没有 profileContext 时作为显式后备值;不能覆盖当前实例 |
安全边界
收录不代表安全背书。 直接安装不做安全审查;AI 审查是一次有依据的辅助判断,不是安全结论。
安装
- 安装只调用官方
pluginManagerRemote;可选的安装后审查只准备只读草稿; - 从不执行目录中的
command字段; - AI 审查由你发送草稿后开始,发现风险时只建议你通过界面处理;
- 审查交接全程使用官方公开服务(workspaces / sessions / conversation),不读 DOM、不代发消息。
目录数据
- 市场文件在 Host 侧读取并重新校验后才发给浏览器(精选目录,而非完整爬取快照),由宿主的
safe_market存储域持久化,实际路径由宿主决定;缓存过期或主动刷新时使用 ETag 条件请求,默认地址不可达时改用 unpkg 镜像,两边都不可达才使用上次的目录; - 仓库链接由
owner/name重新拼装,不采信文件中的地址——被投毒的文件无法塞进自己的 URL scheme,wire codec 也会强制校验这一形状; - 卡片全部以纯文本渲染;
- 市场关闭时 Remote 接口直接拒绝,无法绕过开关读取目录。
提示词
- 不插入目录描述等自由文本,只提供目标 profile 和 JSON 定位数据(已安装包名/版本,或成功安装的请求引用及应用状态);定位数据不视为指令,实际产物仍需核实;
- profile 名需通过形状校验(
[A-Za-z0-9][A-Za-z0-9._-]{0,63}):它由宿主的运行信息优先提供,用于限定审查实例,不合格时插件直接拒绝启动。
已安装面板
- 操作只接受经 wire codec 校验、且确实在 profile 清单中的包名;
- 停用与桌面客户端插件的卸载只做本地文件编辑和 loader 调用;
- 用户插件卸载会在 profile 目录运行
pnpm remove(Windows 通过命令解释器启动.cmd),包名限制为安全字符并拒绝选项形态。
已知限制
- 技能仅支持浏览:市场当前不提供技能安装功能。
- 暂无更新功能:官方插件管理器尚未提供更新,市场不提供更新入口(见「更新」)。
- 审查依赖可读证据:当前会话无法读取安装目录时只能报告未核实;AI 审查不等于安全保证。
开发
pnpm install # 不要加 --ignore-workspace:pnpm 11 只从 workspace 文件读取构建脚本授权
pnpm run check # 依次进行类型检查、构建、测试;部分测试读取构建产物
devDependencies 固定在与运行时一致的 @deepseek-ai/* 已发布版本;peerDependencies 全部可选,实际由 profile 的 node_modules 提供。
发版
- 同步修改版本号:
package.json、dsh.plugin.json,以及两份 README 中的安装命令和 tarball 地址。pnpm test中的版本门禁(test/version.test.ts)会核对这些位置,CI(.github/workflows/check.yml)在每次推送和 PR 上运行同一套检查。 - 推送
vX.Y.Z标签,CI(.github/workflows/release.yml)会创建 GitHub Release,并通过 Trusted Publishing 发布到 npm,无需手动npm publish。
首次发布前,需要在 npm 包设置中把本仓库的 release.yml 配置为 Trusted Publisher(user bruc3van,repo safer-dsh-market,workflow filename release.yml,允许 npm publish)。由于包已更名,safer-dsh-market 需要单独完成这一配置。
相关项目
作者维护
- dsh-desktop:让 Agent 安全常驻桌面的独立 DeepSeek Harness 客户端。官方 Web UI 原封不动,长任务常驻托盘,支持社区插件管理。本市场在桌面端以 in-box 方式内置。
- awesome-dsh-plugin:30 秒为你的 DeepSeek Harness 找到合适的插件。GitHub 上所有带
dsh-plugin标签的仓库每天由脚本自动抓取,再经人工逐个核实——真插件进目录,蹭热度的进黑名单,每条剔除理由公开可查。也是本市场的数据来源。
官方仓库
- deepseek-harness:DeepSeek Harness: Everything is a Plugin. 官方
dsh与 Web UI 的上游项目。本插件是其插件体系上的第三方市场,市场里的每个插件最终都装进它的 profile、运行在它之上。