DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Ecosystem Panel — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
E

dsh-ecosystem-panel

Ecosystem Panel

Read-only ecosystem overview panel for a DSH instance: plugin bundles, cordis.patch inserts, patch health, skills, upgrade health and decoupling health. One tab per category. Zero runtime npm dependencies.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:kira905/dsh-ecosystem-panel#59af07c861ab4547ddaa7d62ab189d9b7e224100
READMECompatibilityVersions

Compatibility and provenance

Ecosystem Panel is published as dsh-ecosystem-panel and currently resolves to version 0.4.4. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/16/2026

Versions

0.4.4stable
10/16/2026
0.4.3stable
10/12/2026
0.4.2stable
9/28/2026
Show 2 more versionsCollapse versions
0.4.1stable
9/21/2026
0.4.0stable
9/21/2026

Related plugins

Loading related plugins…

Latest
0.4.4
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
AGPL-3.0-only
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/16/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI pluginsAb Chartdsh-ab-chartChart rendering tool with the browser card that draws its calls, in one publishable plugin packageWhale Widgetdsh-whale-widgetDeepSeek balance whale widget in the bottom-right corner of the DSH Web interface: balance/today’s usage/peak-off-peak pricing, customizable bubble click sequence (text/balance/today/peak-off-peak/image/random phrases and parallel weighted selection), per-line styles and fonts, floating quick editin

README

dsh-ecosystem-panel

English: README.en.md

给 DSH 实例装一块只读的生态总览面板:插件有没有加载、补丁还在不在、技能 frontmatter 有没有写坏、 依赖有没有升级风险 —— 一屏看完,🟢🟡🔴 三色。

它只诊断,不动手:不装包、不卸包、不升级、不改配置、不写任何被体检对象。

侧边栏底部「设置」齿轮上方会多一个图标按钮,点开就是面板;服务端只暴露一个只读接口:

GET /api/dsh-ecosystem-panel/state

设计依据

本组件是「ops-handoff-design」所述运维体系的一个实现, 设计依据(对应文档仓约定的固定四问):

  • 它为什么存在、边界在哪 → 见《只读监控面板的设计纪律》§1 面板要回答的问题、§2 显示纪律(不可探测 + 原因);本组件的六类体检正是那份纪律的一次落地
  • 它与宿主版本的兼容区间 → 见《多机交接与云中继》§4.5「兼容性要求」(另见本 README 第 6 节「兼容性」)
  • 本组件特有的坑与实测 → 见本 README「已知限制」一节;另见《只读监控面板的设计纪律》§7 设计教训汇总(三次"静默不报"的来历)
  • 文档仓地址 → Gitee(镜像)https://gitee.com/kira905/ops-handoff-design | GitHub(主)https://github.com/kira905/ops-handoff-design (文档仓的组件索引表回指本仓;两仓互链、版本各自独立)

设计稿里不写具体仓库地址(写死即死链),实现清单统一收在文档仓的组件索引表里——本仓只负责回链章节。


1. 它看什么(六类 + 一个可选类)

类目数据来源判定数据缺失时
① bundle 插件profile 的 package.json(dsh.profile.bundles + dependencies)+ 各包实体 package.json + 宿主首页的 boot 清单实体在不在 / 声明版本与实体版本是否漂移 / 声明了 client 能力但 boot 里没加载 = 🔴boot 抓不到 ⇒ 显示「加载状态未知」(黄),不当作已加载
② patch insert 插件profile 的 cordis.patch.yml 里的 insert 条目实体目录能否解析到(profile 层 → 共享 fallback 层);被 disabled 的标黄YAML 解析器不可用 ⇒ 明说「不可解析」,不当成空清单
③ 补丁健康你提供的补丁清单(外置 JSON)逐条做特征串扫描:contains 缺一个 = 定制被冲掉(黄);目标文件没了 = 🔴;notContains 命中 = 残留清单没配 ⇒ 显示「未配置 ⇒ 不可判定」(黄),不显示"0 个补丁"
④ 技能数据根下 skills/*/SKILL.md 的 frontmatter缺 name / description、frontmatter 解析失败目录不存在 ⇒ 报 skillsDirOk=false
⑤ 升级体检本地实体版本 + npm registry 最新版(24h 文件缓存)+ 你的规则表文案颜色由外部只读 CLI 判定;本面板只渲染(拿不到就显示「档位不可用」+ 原因,绝不猜颜色)没配 CLI ⇒ 每行 unknown + 原因
⑥ 解耦健康你提供的外部检查脚本(动态 import 复用其导出函数,不复制判定)R1 静态 import 宿主符号 = 🔴;动态导入/依赖未归零 = 🟡没配脚本 ⇒ 一条 🟡 + 配置指引
⑦ 跨表准入一致性(可选)你提供的外部校验器三态显式枚举 ok / fail / unavailable;asOf 缺失即判 unavailable没配 ⇒ unavailable(不是 0/0/0 绿)

设计红线(贯穿全仓):读不到的东西一律显示「不可探测 + 原因」,绝不显示 0、绝不假装全绿。 面板 meta 里还带一份配置来源自证(每个配置键到底是从 CLI / 环境变量 / 配置文件 / 自动探测 / 默认值 哪一层读到的),换机器排障时先看它。

2. 前置条件

  • 一个 DSH 实例(web profile),主包线见 §6 兼容性表
  • Node ≥ 18.17(用到了内置 fetch / AbortSignal.timeout)
  • YAML 解析器(js-yaml):由宿主 profile 的依赖链提供(通常随主包自带)。解析不到时 ②④ 两类会显式显示「不可解析」,其它四类不受影响
  • 可选的三个/四个外部脚本(解耦检查、档位 CLI、跨表校验器、适配层一致性校验器)——没有也能跑, 对应类目会降级;本仓不附带这些脚本(它们属于你自己的体检体系)

3. 安装三步

# ① 把包放进 profile 的 node_modules(本仓 clone 到任意位置后拷进去,或直接 clone 到该目录)
#    <数据根>/profiles/<profile>/node_modules/dsh-ecosystem-panel/
git clone <本仓地址> "<数据根>/profiles/web/node_modules/dsh-ecosystem-panel"

# ② 注册:profile 的 package.json 里
#      "dependencies": 加一条  "dsh-ecosystem-panel": "0.4.0"
#      "dsh.profile.bundles": 数组里加 "dsh-ecosystem-panel"

# ③ 重启 DSH(本插件没有热加载),然后打开 GUI:侧边栏齿轮上方应出现面板按钮

验证(不依赖 GUI):

node "<数据根>/profiles/web/node_modules/dsh-ecosystem-panel/scripts/verify-state.mjs"
# 终端里应打印六类结果 + 配置来源自证

本仓只发 Release,不发 npm:把目录放进 profile 即可,不需要 npm install(dependencies 为空)。

4. 配置

优先级(每个键独立):显式传入(插件 config / 调用参数) > 环境变量 > 配置文件 > 自动探测 > 内置默认。

4.1 环境变量

变量作用默认
DSH_ECOSYSTEM_PANEL_HOMEDSH 数据根os.homedir()/.dsh(DSH_HOME 同效、优先级更低)
DSH_ECOSYSTEM_PANEL_PROFILEprofile 名web
DSH_ECOSYSTEM_PANEL_WEB_URL本实例基址(抓 boot 清单用)DSH_WEB_URL,否则 http://127.0.0.1:3080
DSH_ECOSYSTEM_PANEL_TOOLS_DIR外部工具目录(不自动探测)空 ⇒ 依赖它的类目降级
DSH_ECOSYSTEM_PANEL_MAIN_NM宿主主包 node_modules按全局 npm 布局探测;探测不到即判不可用
DSH_ECOSYSTEM_PANEL_CONFIG配置文件 JSON 路径空
DSH_ECOSYSTEM_PANEL_CACHE_FILE升级体检缓存文件<数据根>/ecosystem-panel-upgrade-cache.json
DSH_ECOSYSTEM_PANEL_DECOUPLING_SCRIPT解耦检查脚本<toolsDir>/check-decoupling.mjs
DSH_ECOSYSTEM_PANEL_TRIAGE_CLI升级档位只读 CLI<toolsDir>/upgrade-triage-cli.mjs
DSH_ECOSYSTEM_PANEL_REGISTRY_AUDIT_LIB跨表准入校验器<toolsDir>/registry-audit.mjs
DSH_ECOSYSTEM_PANEL_HOST_ADAPTER_SYNC适配层一致性校验器(可选)<toolsDir>/sync-host-adapter.mjs
DSH_ECOSYSTEM_PANEL_PATCH_MANIFEST_FILE补丁清单 JSON空 ⇒ ③ 显示「未配置」
DSH_ECOSYSTEM_PANEL_UPGRADE_RULES_FILE升级规则表 JSON空
DSH_ECOSYSTEM_PANEL_BREAKING_SYMBOLS_FILE断裂符号表 JSON空
DSH_ECOSYSTEM_PANEL_LABELS_FILE包名 → 一句话简介 JSON空(没登记的包只是没有简介)
DSH_ECOSYSTEM_PANEL_DISABLED_GROUPS整组停用的类目(逗号分隔)全开
DSH_ECOSYSTEM_PANEL_WEBSERVER_SERVICE宿主 web server 服务名webServer

4.2 配置文件与示例

examples/ 下有五份可直接抄的示例:

文件对应配置
ecosystem-panel.config.example.json总览(各键的位置与形态)
patch-manifest.example.json③ 补丁清单(checks / special / retired 三种形态都有例子,字符串里可用 ${HOME} 占位符)
upgrade-rules.example.json⑤ 规则表文案(verdict 只是文案分类,不决定颜色)
breaking-symbols.example.json宿主主包断裂符号参考底表
labels.example.json包名 → 一句话简介

用法:

DSH_ECOSYSTEM_PANEL_CONFIG=/path/to/my.config.json   # 指向你抄过去改的那份

4.3 降级语义(重要)

  • 没配 ≠ 没有:③ 未配清单时显示「未配置 ⇒ 不可判定」,不会显示"0 个补丁全绿"; ⑥⑦ 与 ⑤ 同理(都带配置指引)。
  • 抓不到:宿主首页抓不到 boot 清单时,① 只把"未知"标黄,并把抓取错误原文放进 meta.bootError。
  • 停用:确实不需要某一类,就把它写进 disabledGroups —— 面板会显示一条「已按配置停用」的提示项 (比静默消失更清楚,且不计入汇总)。
  • 配置解析失败(比如清单 JSON 坏了)不会让面板崩:meta.configErrors 里能看到原因,该键回落默认。

5. 界面

  • 六类各占一张标签卡(Tab),Tab 上的小圆点 = 该类最差状态(红 > 黄 > 绿)
  • 点「刷新」会重新取数;GET /state?refresh=1 强制重查 npm 最新版(否则 24h 缓存)
  • 颜色:🟢 正常 / 🟡 风险或不可判定 / 🔴 异常(比如 patch insert 的实体缺失)
  • 面板底部说明与标题可由配置覆盖(text.title / text.note / text.tabs,服务端经 meta.ui 下发)

6. 兼容性

宿主主包线状态依据
0.2.0-rc.2✅ 已端到端实测(2026-10-16)本版 peerDependencies 声明的区间基线:在隔离实例(独立数据根 + 端口 3090)上真装真跑 —— 本仓 scripts/verify-state.mjs(只读六类体检)rc=0 跑通,读到了该实例的数据根与配置来源;客户端半 client.js 出现在实例启动 HTML 的插件资源清单里
0.2.x 后续版本⚠️ 未实测,不作承诺(区间上界 <0.3.0)—
0.1.1-rc.2 / 0.1.5 线⚠️ 历史静态核对(本版起 peerDependencies 不再声明 0.1.x)见 v0.4.3 及之前的本节
⚠️ 升级体检 / 解耦健康 两卡的读数⚠️ 未在 0.2.0 实例上校准0.1.5 起客户端资源改成"名册制 + 合并 URL",两卡是否读全未验证 —— 最可能的表现是读数偏保守,不是崩溃
其它❓ 未知需自测

7. 已知限制

  1. js-yaml 依赖宿主提供 —— 解析不到时 ②④ 两类显示「不可解析」(不假绿),但也就查不了了。
  2. boot 清单靠抓宿主首页的内联 __DSH_BOOT__ 段 —— 宿主若改了这个投影,① 的"加载状态"就变成未知(黄)。
  3. ③ 的判定完全取决于你给的清单:本仓不内嵌任何环境的补丁清单,清单写错就会报错。
  4. ⑤ 的颜色不来自本面板:它来自你配置的档位 CLI(唯一判定源)。本面板只渲染,绝不猜颜色。
  5. ⑥⑦ 依赖外部脚本,本仓不带这些脚本;未配置时对应类目只会显示降级提示。
  6. 升级体检会访问 npm registry(registry.npmjs.org),结果缓存 24h;离线时显示"远端查询失败"并继续用缓存。
  7. 只读:面板没有任何写操作入口(唯一写文件的是升级体检自己的缓存)。
  8. 前端只支持 web platform(dsh.client.inject 为空,不依赖任何 client 包)。
  9. 界面文案为中文,可通过 text 配置覆盖;没有内置多语言切换。
  10. 未做移动端专门优化(面板宽度自适应,但按钮/触摸交互没专门测过)。

8. 仓结构

lib/index.js          服务端:注册只读 route
lib/state.js          六类聚合逻辑(每个数据源都走配置层 + 显式降级)
lib/upgrade.js        ⑤ 升级体检(本地事实 + npm 缓存 → 外部只读 CLI → 渲染)
lib/config.js         配置层(优先级解析 + 占位符展开 + 来源自证)
lib/host-protocol.js  宿主协议常量(本插件只用 webServer 一个服务名)
lib/client.js         浏览器端:侧边栏按钮 + 面板(零 import)
cordis.patch.yml      bundle patch(把插件挂到宿主)
scripts/verify-source.mjs  发布前静态验证(语法 + 配置层行为 + 脱敏扫描)
scripts/test-fixture.mjs   干净临时路径上的端到端夹具(含缺数据降级断言)
scripts/verify-state.mjs   只读状态验证器(不依赖 GUI)
examples/                  五份配置示例
docs/RELEASING.md          发版规范与检查单

9. 自测

node scripts/verify-source.mjs .    # 语法 + 配置层行为 + 脱敏扫描(发布前必跑)
node scripts/test-fixture.mjs       # 端到端夹具:不需要任何真实安装,全在临时目录里造
node scripts/verify-state.mjs       # 对当前实例只读体检(打印六类 + 配置来源)

test-fixture.mjs 会现场造一个最小数据根(假 profile / 假插件实体 / 假技能 / 四个外部工具 stub), 断言六类都能跑出结果,并专门验证「缺数据必显式降级」。

10. 相关组件

同属 DSH 生态的伴生组件,各自独立仓、独立版本、许可各自独立;它们都回链到同一份文档仓 ops-handoff-design (Gitee 镜像 https://gitee.com/kira905/ops-handoff-design):

组件仓做什么与本组件的关系
dsh-ecosystem-panel只读生态总览面板本仓
dsh-butler-archive会话归档管理(列表 / 预览 / 恢复 / 删除 + 可选自动归档)它是本面板第 ③ 类的观察对象之一:靠 cordis.patch.yml 的 insert 注册,实体缺失时本面板报 🔴
dsh-session-title-live会话标题跟着对话实时更新同样靠 cordis.patch.yml 的 insert 注册(无 client 半);「插件到底加载上了没有」由本面板第 ① 类回答
dsh-diagnostic-tools诊断取证工具组:依赖闭包体检 + 会话图片附件对账分工互补:本面板回答**「今天怎么样」(持续、只读、三色),它回答「具体坏在哪、怎么修」**(离线、可复跑、带修法与回滚清单)——两者都只诊断
dsh-task-board-local自维护任务看板(卡片 = 一次真实会话 + 人工验收闸)它是本面板第 ① / ③ 类体检对象的典型:自研 + 靠 cordis.patch.yml 的 insert 注册——插件装载状态与补丁健康这两类静默故障,在本面板上一眼看得到
dsh-firstaid零依赖急救台:起不来 / 假死 / 要撤销改动 / 数据被删四类现场压成一个入口应急预案:本面板自己也可能是坏掉的那个(面板要起不来或者数据取不到,你没法用它诊断它),那时换它出场

组件之间没有代码依赖,也不共享运行时 —— 之所以互指,是因为它们回答的是同一类人的同一批问题 (长期在自有机器上跑 agent:装得下、找得到、看得见、查得清)。谁装谁不装,互不影响。

11. 许可

AGPL-3.0-only + 商业授权(双许可;见 LICENSE 全文;package.json 的 license 字段为 AGPL-3.0-only)。

  • ⚠️ AGPL 本身不禁商用:你可以自由使用、修改、再分发(含商用),但通过网络向他人提供本软件的修改版时,必须按 AGPL 一并提供对应源码;
  • 「+ 商业授权」= 双许可:若需在闭源或商业场景中使用(AGPL 的传染条款不适用),可另行取得商业授权 —— 本仓暂无公开联系邮箱,请通过本仓 Issue 联系。