DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Plugin Subitem Status — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-plugin-subitem-status

Plugin Subitem Status

插件页卡片显示包内组件状态,设置页配置选项卡显示提供者包名,便于排查问题。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:lingmingxi/dsh-plugin-subitem-status#fbb77d0b053d718dde174748fcf59b679ac02456
README兼容性版本

兼容性与来源证明

Plugin Subitem Status 以 dsh-plugin-subitem-status 发布,当前版本为 1.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/11

版本

1.1.0stable
2026/10/11

相关插件

正在加载相关插件…

最新版
1.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/11
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Remotedsh-remoteDeepSeek Harness 的远程工作助手:连接 SSH(密码/密钥/代理/键盘交互/代理跳转),选择远程工作区,使用 22 个 rw_* 工具操作该工作区(包括 rw_edit/rw_stat/rw_mkdir/rw_remove/rw_move/rw_forward),具备冲突感知的镜像 syFind Plugindsh-find-plugin在代理中查找 DeepSeek Harness 插件——实时搜索 GitHub 上的 dsh-plugin 主题,并按星标数排序。Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)

README

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.pluginManagerfailedfailedfailed
['remote','locale','remote.pluginManager']activepending(照样卡死)pending
[] + 全部走 ctx.get()activeactiveactive

把命名空间写进 inject 看似正确,但该服务尚未挂载时 fiber 会变 pending,同样卡死启动。 只有 ctx.get() 在所有环境下都安全(官方插件页自己也用 this.ctx.get("productAnalytics")?.)。

测试

npm test

五个套件:

文件覆盖内容
tests/smoke.mjs纯逻辑:状态合成 vs 官方映射、多组件、文案兜底、注册形态
tests/dom.mjsDOM 粘合:单/多组件渲染、挂载位置、重渲染重放、实时更新、卸载清理
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