dsh-plugin-search

DSH PLUGIN会话与消息

仓库 huangxp12/dsh-plugin-search

会话与消息 未标注验证等级 安全审查:未标注 可信度:未标注 可安装插件

给 DeepSeek Harness 的「插件」页注入关键词搜索框,按名称、描述或包名实时过滤已安装与官方插件,插件多时一筛即得。

一句话选型结论

按资料字段整理

dsh-plugin-search 是会话与消息类的 DSH 可安装插件,未做沙盒验证,暂无安全审查结论,列出 5 项功能,没有现成安装命令,需要按仓库 README 接入。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类会话与消息 收录类型可安装插件 验证等级未标注验证等级 安全审查未标注
验证等级 UNKNOWN 未标注验证等级
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-08 创建于 2026-10-08
README 8.0 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-plugin-search:给 DeepSeek Harness 插件页加上关键词搜索

  • 插件页注入实时搜索框
  • 按名称描述包名过滤
  • 多关键词空格 AND 匹配
  • 无命中整组隐藏并计数
  • Esc 或 × 一键清空

上游标签

cordisdeepseekdeepseek-harnessdshdsh-plugin

验证等级与安全审查

未标注验证等级
自动化流程结论,不是人工审核
验证等级未标注验证等级上游未给出验证结论,安装前请自行确认
安全审查未标注静态分析结论,未标注不代表已通过审查
仓库健康度未标注按仓库活跃度与最近更新时间给出
可信度未标注综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 安全审查还没结论,装之前先看仓库改了什么、要什么权限。
  • 没有现成安装命令,要按仓库 README 手动接入。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在会话与消息场景里给 DSH 补能力的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-plugin-search当前 未做沙盒验证 未标注 0 未标注 无
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方huangxp12仓库 dsh-plugin-search · 默认分支 main
分类会话与消息client
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-08 · 2026-10-08最后推送 2026-10-08
本站收录2026-10-09首次进入本站目录的时间

README 全文

8.0 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-plugin-search

给 DSH「插件」页加上一条关键词搜索框:装了很多插件时,按名字、描述或包名一筛就找到了。

它做什么

在「插件」页(侧栏 插件)页头下方注入一条搜索条,边输入边过滤卡片:

  • 命中范围:卡片上看得见的全部文字(标题、描述、「实验性」标签)+ data-plugin-package / data-plugin-item 里的包名或注册 id。
  • 匹配规则:大小写不敏感的子串匹配;空格分隔的多个关键词之间是 AND(输入 task 看板 要两个都命中)。
  • 整组隐藏:某个分组一张卡都没命中时,连组标题和计数一起藏掉 —— 不留「官方 0」这种空壳。
  • 计数:搜索条右侧显示 命中 / 总数;一张都没命中时显示「没有匹配的插件」。
  • 清空:右侧的 × 或 Esc 清空(Esc 会被就地消费,不会冒泡去关掉外壳的面板)。
  • 跟随语言:中文界面用中文文案,其余用英文。

安装

dsh plugin --profile web add github:huangxp12/dsh-plugin-search

--profile 是必需项(省略会报 required option '--profile ' not specified);
web 是标准 Web profile 的名字,dsh web 就是 dsh --profile web 的简写。
若你用别的 profile 名(例如自己建的),把它换掉即可。
装完刷新页面就生效 —— 前端插件不需要重启。

也可以手动挂到已有 profile 上(例如 ~/.dsh/profiles/desktop):

  1. 把本包放进 profile 的 node_modules(目录联接/junction 即可):
New-Item -ItemType Junction `
-Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-plugin-search" `
-Target "<本仓库路径>"
  1. 在 profile 的 cordis.patch.yml 末尾追加:
- insert:
- id: plugin-search
name: 'dsh-plugin-search'
  1. 重载页面(profile 开了 HMR 时,patch 文件本身被监听,通常不必重启)。

回滚:删掉那两行、再删掉 node_modules\dsh-plugin-search 这个 junction。

它不做什么

只读 DOM 上的显示状态,不改数据:

  • 不发任何网络请求,不读也不写会话日志;
  • 不改 Loader 的启用状态,不装卸插件;
  • 不动插件的配置;
  • 搜索词为空时,页面的 DOM 与外壳自己渲染的完全一致(所有隐藏标记都会被摘掉)。

宿主半(lib/index.js)的 apply() 是空的:它存在的唯一意义是让本包在 Loader 树里成为
一个已启用的条目 —— 客户端 bundle 只对已启用的条目提供服务。

实现要点

为什么是 DOM 注入,而不是注册一个 slot

「插件」页由 @deepseek-ai/dsh-client-ui-plugin-manager 拥有。它对外声明的扩展位只有四个:

槽位 用途
plugins.item 新增一张官方插件卡片
plugins.bundle.config 某个 bundle 的配置,画在它的详情页
plugins.row.config 某一行(row)的配置
plugins.detail.{actions,badge,section} 某个详情页的头部动作/标签/章节

列表级的工具栏没有槽位。 而承载该页的 main 是 keyed slot,"plugins" 这个 key 已经被
它自己占了 —— 想从槽位走这条路,只能整页顶替它自带的界面,那是 shadowing 外壳 UI:
升级即碎、还要自己重做安装对话框和每个包的配置页。代价和风险都不是「加个搜索框」该付的。

所以这里用与 dshmarket 的 settings-nav-icon 同一套做法:认准页面自带的稳定 data-*
契约,把搜索框挂进去,按关键词切换卡片的显示。

依赖的 DOM 契约

选择器 含义
[data-plugin-panel] 页面根;列表态才有 direct child ``,所以详情页自然没有搜索框
[data-plugin-group="official"\|"bundles"] 分组;整组无命中时整组隐藏
[data-plugin-package="<包名>"] 一个已安装/官方 bundle 的卡片
[data-plugin-item=""] 一个官方插件(注册过配置页)的卡片

这些属性是外壳自己写在 JSX 上的,是它的对外 DOM 契约,不随构建改变的哈希类名漂移:
CSS 模块类名(fO69Vq_page 这种)一个都没用。外壳改版时最坏情况是少一个搜索框,
而不是把页面搞坏。

抗重挂

外壳的列表是 React 渲染的:首屏加载完成、切列表/详情、装卸插件都会重挂卡片甚至整页。
所以:

  • 一个 MutationObserver(观察 document.body,覆盖面版本身被卸载重建)驱动重新同步,
    queueMicrotask 合并同一帧内的多次 mutation;
  • 搜索词住在 fiber 闭包外面的那层 ctx.effect 里 —— 卡片被 React 换掉之后过滤自动重算,
    用户输入的那半不会丢;
  • 定位会挪动 DOM 节点(打断焦点),所以挪之前存、挪之后恢复焦点与光标位置;
  • 样式表每次同步都确认一次存在(` 被重建时补回来),而不是只在apply()` 里插一次。

视觉

颜色/圆角全部走外壳的主题 token(--dsw-alias-*),明暗主题自动跟随,不写死色值。

搜索条带 data-window-drag-recall:页头整块是桌面端窗口拖拽区(外壳给 打了 `data-window-drag`,macOS 上整块可拖动),而外壳为「拖拽区里的可交互内容」准备了这个反标记 (`[data-window-drag-recall]{-webkit-app-region:no-drag}`)。用它比在自有样式表里重写一遍更可靠: 即使我们的 还没插进去,外壳的规则也已经生效,不会出现「点搜索框变成拖窗口」。

开发

# 纯逻辑(关键词切分、匹配、文案)+ 加载契约:41 项
node test/unit.test.mjs

# DOM 行为(jsdom,夹具照抄 ui-plugin-manager 真实渲染的层级与属性):47 项
node test/dom.test.mjs

# 另有可直接用浏览器打开的 test/dom-harness.html(43 项,真实 Chrome 里跑过)

两套都不启动 GUI:unit 用迷你 __ModuleLoader__ 抓下 bundle 注册的那一行,
dom 用 jsdom 搭出与真实页面同构的 DOM 再断言过滤行为。夹具里的层级与 data-*
属性就是被测代码赖以定位的契约 —— 夹具改了、lib/client.js 没跟上,测试就该红。

还有第四套端到端检查(tools/verify-live.mjs,17 项):向正在运行的 dsh web 确认
宿主的启动图里有本包、bundle 取回来与仓库里的文件逐字节一致、/ 与 /api 的鉴权没被
改动。它刻意不随仓库发布:为了访问本机 GUI,它要用 ~/.dsh/.credentials.yaml 里的
client-connection/browser-session 密钥签一枚回环会话 cookie,而插件仓库不是存放
「会读取凭据的文件」的地方 —— 无论它多无害,那正是评审该多看一眼的形状。需要时按上面的
说明在本机重建即可;上面三套不需要任何凭据,且覆盖插件自身的行为。

文件

  • lib/client.js — 浏览器半,手写 bundle(window.__ModuleLoader__.load({id, factory})),
    零构建链:容器里 require("react") 之类由外壳的模块表提供,本插件连 react 都不需要。
  • lib/index.js — 宿主半,apply() 为空。
  • test/ — 两套测试 + 一个可直接用浏览器打开的 dom-harness.html。
  • docs/preview.svg — 预览图,由 tools/render-preview.mjs 跑真实 lib/client.js 生成
    (不是手绘示意图):输入「看板」后两个分组各留一张命中卡片,搜索条上显示 2 / 9。
  • tools/render-preview.mjs — 重新生成 docs/preview.svg 与 assets/screenshot-1.png:
    两者都由真实 bundle 驱动着跑一遍,所以截图不会和代码走散。
  • tools/asar-extract.mjs — 从 app.asar 里读外壳源码的只读工具(本次开发用来核对
    ui-plugin-manager 的 DOM 契约),与插件运行无关。

常见问题

7 问
答案由本站依据条目字段整理,不引用上游原文
dsh-plugin-search 怎么安装?

本站没有抓到该条目的安装命令,请到仓库主页确认安装方式;这类条目多数是生态应用或尚未发布安装包的项目。

dsh-plugin-search 的验证等级是什么意思?

未标注验证等级。上游未给出验证结论,安装前请自行确认

dsh-plugin-search 安全吗?

未标注。

dsh-plugin-search 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-plugin-search 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-plugin-search 有哪些功能?

插件页注入实时搜索框、按名称描述包名过滤、多关键词空格 AND 匹配、无命中整组隐藏并计数、Esc 或 × 一键清空。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

3 条
不同作者的仓库分开列,请确认你要装的是哪一个
会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

huangxp12 的其它插件

1 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。