在插件卡片上直接显示各组件运行状态与包名
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/12 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lingmingxi/dsh-plugin-subitem-status该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 卡片显示子项状态
- 设置页显示提供者包名
DSH 插件界面增强:卡片显示子项状态,设置页显示提供者包名,方便 AI 定位插件并节省 token。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-subitem-status
给 DeepSeek Harness 的插件页(侧栏「插件」,不是设置页)加上子项状态显示:每张插件卡片上直接标出这个包里有哪些组件没启用、哪些异常,不用点进详情页才发现。
解决什么问题
插件页的卡片只反映 bundle 级的开关。包开着,但里面某个组件其实没跑起来——卡片上完全看不出来,必须点进详情页看「包含的组件」那一行才发现。
这个插件把那行状态(● 运行中 / ● 已关闭 / ● 未运行 / ● 异常)原样搬到卡片上:
┌──────────────────────────────────────────────┐
│ ▣ some-plugin-kit │
│ 一组示例插件 │ │ 主组件 ● 运行中 附属组件 ● 已关闭 │ ← 新增 └──────────────────────────────────────────────┘
- 文案与状态点直接取自官方字典命名空间,与详情页一字不差;官方改措辞这里跟着变。
- 一个包里多个组件就逐条列出,不会只显示第一个。
- 每个组件显示一条状态(包括正常运行),没有组件时不占位。
设置页包名提示
设置中的配置页面导航及「插件」内部选项卡,标题下方显示淡色的提供者 npm 包名。
长包名省略显示,鼠标悬停可查看完整名字。
展开完整文档(README 剩余 1 节)
dsh-plugin-subitem-status
给 DeepSeek Harness 的插件页(侧栏「插件」,不是设置页)加上子项状态显示:每张插件卡片上直接标出这个包里有哪些组件没启用、哪些异常,不用点进详情页才发现。
解决什么问题
插件页的卡片只反映 bundle 级的开关。包开着,但里面某个组件其实没跑起来——卡片上完全看不出来,必须点进详情页看「包含的组件」那一行才发现。
这个插件把那行状态(● 运行中 / ● 已关闭 / ● 未运行 / ● 异常)原样搬到卡片上:
┌──────────────────────────────────────────────┐
│ ▣ some-plugin-kit │
│ 一组示例插件 │ │ 主组件 ● 运行中 附属组件 ● 已关闭 │ ← 新增 └──────────────────────────────────────────────┘
- 文案与状态点直接取自官方字典命名空间,与详情页一字不差;官方改措辞这里跟着变。
- 一个包里多个组件就逐条列出,不会只显示第一个。
- 每个组件显示一条状态(包括正常运行),没有组件时不占位。
设置页包名提示
设置中的配置页面导航及「插件」内部选项卡,标题下方显示淡色的提供者 npm 包名。
长包名省略显示,鼠标悬停可查看完整名字。
- 从 Slot 注册来源和实际加载的模块清单核对包名,不用中文标题推测。
- 6.0.1 中大量来源被压缩为 mf;对此使用已逐条核对注册源码的 ID→包名兜底表,且仍要求包名出现在当前模块清单中。表内覆盖 21 个设置页面、5 个内部选项卡。
未收录的新页面显示「包名未声明」;其他插件覆盖同一 ID 时,此兜底信息可能不再准确。
- 来源未声明或无法确定时,显示「包名未声明」,不输出本机路径。
- 这是排障用的诊断信息,不是提供者身份的安全认证。
- 不读取配置值、聊天记录、账户凭据,不向外部服务发送数据。
把准确包名告诉 AI,减少 token 消耗
用途不只是方便查看:让 AI 修改或排查插件时,可以直接告诉它 npm 包名,避免 AI 从中文显示名称开始逐个搜索、读源码猜来源,减少定位过程中的 token 消耗。
1. 打开设置,找到需要修改的插件配置选项卡,查看标题下面的包名小字。
2. 需要复制完整名称时,在浏览器中右键小字选择 「检查」,或按 F12 打开开发者工具,用元素选择器选中这行小字。在 Elements(元素)面板读取或复制该元素的文本; title 属性也包含完整包名,长名称不会因为界面省略显示而丢失。
3. 把完整包名与具体需求一起告诉 AI,例如:
请检查 dsh-feature-toggles,设置里「余额」页面显示异常。先定位这个包,再排查问题。
不需要调试工具时,也可以直接看小字或悬停查看完整名称。若显示「包名未声明」,不要把它当作真实包名提供给 AI;应进一步核实来源。
安装
dsh plugin add github:lingmingxi/dsh-plugin-subitem-status --profile <你的 profile>
或用 tarball / 本地路径:
npm pack
dsh plugin add ./dsh-plugin-subitem-status-1.1.0.tgz --profile <你的 profile>
装完重启 DSH(客户端插件生效需要重启,除非 profile 启用了 client-hmr)。
设计要点
纯客户端 DOM 增强,不覆盖 DSH 内核。
插件页的卡片是内核 @deepseek-ai/dsh-client-ui-plugin-manager 里硬编码的 PackageCard, 没有任何卡片级 slot 可用(可用的只有 plugins.item 新增卡片、以及详情页的 plugins.detail.badge/.actions/.section)。所以「在父级卡片上显示子项状态」只能走 DOM 增强:观察已渲染的卡片,往里补一行。
- 数据源与官方插件页同源:remote.pluginManager.listBundles() + listPlugins()。
- 卡片定位只用稳定属性 [data-plugin-package] / [data-plugin-panel]; 类名是 CSS-module 哈希,绝不硬编码。
- 被 React 重渲染抹掉时,由 MutationObserver 自动重放(自身写入的回调会跳过,避免死循环)。
- 卸载时清干净:样式、承载行、observer、订阅、定时器。
关于 inject: [](重要)
本插件的客户端 factory 声明 inject: [],所有服务一律用 ctx.get() 惰性读取。
这不是偷懒,是必须的。cordis 的 ctx 是注入代理:读一个没写进 inject 的属性会直接抛 cannot get property "..." without inject。而 DSH Web 的启动门禁要求每个 entry 的 fiber 都 active,任何一个不合格就整页打不开(web boot: N entry did not activate)。
两种写法的实测结果:
| inject 声明 | 服务齐全 | 命名空间缺失 | remote 缺失 |
| ['remote','locale'] 且直接读 ctx.remote.pluginManager | failed | failed | failed |
| ['remote','locale','remote.pluginManager'] | active | pending(照样卡死) | pending |
| [] + 全部走 ctx.get() | active | active | active |
把命名空间写进 inject 看似正确,但该服务尚未挂载时 fiber 会变 pending,同样卡死启动。
只有 ctx.get() 在所有环境下都安全(官方插件页自己也用 this.ctx.get("productAnalytics")?.)。
测试
npm test
五个套件:
| 文件 | 覆盖内容 |
| tests/smoke.mjs | 纯逻辑:状态合成 vs 官方映射、多组件、文案兜底、注册形态 |
| tests/dom.mjs | DOM 粘合:单/多组件渲染、挂载位置、重渲染重放、实时更新、卸载清理 |
| tests/boot-gate.mjs | 启动门禁:用真实 cordis 在 5 种服务组合下断言 fiber 必须 active |
| tests/lifecycle.mjs | 同步异常、迟到响应、卸载后的回调隔离 |
| tests/settings.mjs | 包名来源、未知/路径过滤、设置导航与内部 tab 对齐、重放与清理 |
boot-gate.mjs 需要 @deepseek-ai/cordis。可用 DSH_CORDIS_PATH 指向你自己的 cordis/lib/index.js(支持绝对路径和 file: URL);找不到或加载失败则测试失败,避免假绿灯。
tests/lifecycle.mjs 另外验证同步异常及卸载后迟到响应不会继续运行。
为什么需要 boot-gate:这类 bug 用普通对象桩测不出来——桩里的 ctx.remote 是普通对象,读 .pluginManager 不会报错,而真实 ctx 是注入代理。本插件第一版就是这么炸的,所以补了这个用真实 cordis 的回归测试。
兼容性
- 平台:Web(dsh.client.platform: "web")
- 无第三方运行时依赖,不 require 任何 Harness Client 包
- 只使用 --dsw-alias-* 主题 token,跟随明暗主题
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
lingmingxi/dsh-plugin-subitem-status
在插件卡片上直接显示各组件运行状态与包名
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,399未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,384已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13950 个插件含 PR 收录与…
★ 360已汉化DSH
71.9
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。