DeepSeek Harness 插件目录:统一管理已安装插件

前言

在 DSH 的「插件 → 已安装」页面,插件列表由官方提供,没有搜索入口,也没有按分类分组。面对已安装的大量插件,尤其是内置配置项(如 plugins.item 里的子智能体、网页搜索、Agent 循环、终端等)和实验性组合包,查找和归类变得繁琐。插件目录(dsh-plugin-catalog)向「已安装」页添加搜索框,并将插件按内置、实验性、社区(按下载时的市场分类)和未分类进行分组,使列表更易浏览。

是什么

插件目录是一个 DSH 插件,由维护者 LUTAO581314 开发。它将 DSH「已安装」页原本分散的列表(社区插件、内置配置、实验性插件)合并成一份统一的目录,支持全文搜索和多维度分组,并保留启用/停用开关和详情入口。

核心功能

搜索

支持按以下字段过滤:插件标题、包名、描述、作者、市场关键词和分类名。多个词必须全部命中(空格分隔)。

分类分组

  • 内置:DSH 自带的 plugins.item 配置项(子智能体、网页搜索、Agent 循环、终端等)归入此组。
  • 实验性:DSH 随附的 official bundle(包括「更多」里的实验性组合包)归入此组。
  • 社区插件:按下载时插件市场的分类分组。同一版本不会被后来的市场改分类覆盖;升级到新版本才按新下载重新记录。提供「重新同步分类」功能。
  • 未分类:市场索引里没有的第三方插件归入此组。

图标与交互

  • 内置配置项使用官方原语图标(终端 / Agent 循环 / 子智能体 / 网页搜索)。
  • 其他插件优先使用包自带的 meta.icon,没有时使用官方默认插件图标。
  • 每行右侧保留启用/停用开关(内置配置项没有开关,点击行主体进入详情页)。
  • 列表宽度与插件页其它区块一致(max-width: 960px),页面居中显示。

安装与启用

从 npm 安装(发布后可用):

dsh plugin add @lutao581314/dsh-plugin-catalog

或直接从 GitHub 安装(无构建步骤):

dsh plugin add github:LUTAO581314/dsh-plugin-catalog

本地开发时,把本仓库链接进 desktop profile:

dsh plugin --profile desktop add link:<本仓库的本地路径>

等待 HMR 重新组合(或完全退出并重开 DSH 一次),打开侧栏 插件 → 已安装 即可看到搜索框和分类分组。

卸载:

dsh plugin remove @lutao581314/dsh-plugin-catalog

典型用法

安装后,在「已安装」页顶部会出现搜索框。输入关键词(如包名、描述、分类名)可过滤列表。列表按内置、实验性、社区(按分类)和未分类分组。点击行主体进入对应插件或配置项的详情页;点击右侧开关启用或停用插件(内置配置项除外)。

数据与接口

快照保存在 $DSH_HOME/dsh-plugin-catalog/state.json(默认 C:\Users\<你>\.dsh\dsh-plugin-catalog\state.json),只在第一次写入时创建。宿主提供三个路由:

路由 作用
GET /dsh-plugin-catalog/state 获取当前快照
POST /dsh-plugin-catalog/capture 记录一批分类(JSON body)
GET /dsh-plugin-catalog/status 获取目录、条目数、更新时间

capture 的语义:

  • mode: "capture"(默认):首次记录为准。同版本的插件不会被覆盖;记录里的 version 和已记录版本不同时,视为一次新的下载并更新;之前「未收录」的插件后来出现在市场里,也会补上分类。
  • mode: "resync":按提交值整体覆盖(界面上的「重新同步分类」)。

快照条目示例:

{
  "version": 1,
  "updatedAt": 1792600000000,
  "categories": { "usage": { "zh": "用量与计费", "en": "Usage & Billing" } },
  "categoryOrder": ["agi", "ui", "usage"],
  "packages": {
    "dsh-cost-meter": {
      "name": "dsh-cost-meter",
      "listed": true,
      "categoryId": "usage",
      "category": { "zh": "用量与计费", "en": "Usage & Billing" },
      "indexUrl": "https://cdn.jsdelivr.net/gh/realguan/dsh-plugin-market@dist/dsh-index.json",
      "marketTitle": { "zh": "DSH 插件市场", "en": "DSH Plugin Market" },
      "author": "…",
      "keywords": ["cost", "usage"],
      "version": "1.9.15",
      "source": "download",
      "capturedAt": 1792600000000
    }
  }
}

source 取值:download(首次看到)、backfill(本功能上线时对已有插件的回填)、update(版本变化)、resync(手动同步)。

插件通过浏览器半身(browser half-body)的 ctx.remote.pluginMarket.search(indexUrl, { text: 包名, sort: { kind: "relevance" } }) 一次查一个已安装插件,从返回的 metadata.category 与 metadata.categories 里取分类 id / 标题。索引只由宿主拉取一次(宿主有 10 分钟缓存),因此本插件不会自己下载索引文件。

兼容性

DSH 0.2.1-rc.2(在 desktop profile 上验证)。package.json 同时声明了 engines.dsh 与 dsh.compatibility.dshReleases,便于市场判断版本。

适用场景与注意

适合需要统一管理、快速查找已安装插件的 DSH 用户。插件以当前 DSH 进程权限运行,安装前建议查看源码与许可证(MIT)。

小结

插件目录将 DSH「已安装」页的列表整合为可搜索、可分组的统一视图,内置与实验性插件自动归类,社区插件按下载时的市场分类分组。配合搜索框和开关,提升了插件管理的效率。

  • 目录页:https://www.skillhub.cn/plugins/LUTAO581314/dsh-plugin-catalog
  • GitHub:https://github.com/LUTAO581314/dsh-plugin-catalog
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye