dsh-footer-panels:把页脚插件入口提升为全局面板

前言

在 DSH(DeepSeek Harness)Web 端,不少插件习惯在侧边栏底部注册 sidebar.footer.action 按钮,工作台则画在 shell.overlay 上,靠该按钮开关。底部区域还要放设置、反馈、退出登录等系统项,装得越多越挤,常用功能往往被收进「更多」。若再安装 dsh-claude-style,其页脚接管会把原按钮隐藏并克隆到账号弹层;对 POMASA Studio、Pictor 这类可点击节点嵌套在条目内部的插件,点击转发会失败,界面上一眼看得到、点不动。

dsh-footer-panels 不修改任何第三方插件源码,只通过 DSH 公开的插槽与布局服务,用一张配置表把指定页脚启动器「提升」到侧边栏「全局面板」列表,与内置面板同级,可钉选、可从「更多」在收起侧栏时访问。下面介绍其定位、机制、安装与自建面板配置。

这是什么

一句话:配置驱动的 DSH Web 插件,把挂在侧边栏底部的插件入口登记为全局面板;仓库自带 POMASA Studio、Pictor 两条示例配置,用于证明机制可用,并非仅限这两款插件。

核心功能

配置驱动

插件逻辑实质是一张面板表。每条记录把某个底部按钮对应为一个全局面板项:

{
  panelId: 'pomasa-studio',                 // 面板 key,全局唯一
  label: 'POMASA Studio',                   // 显示名
  order: 60,                                // 排序,越小越靠上
  launcher: '... .ps-footer-action',        // 该插件底部按钮的 CSS 选择器
}

增删行即可接入或停用面板;改 order 调顺序。默认值在 client.js 的 DEFAULT_PANELS;也可在 profile 的 bundle 配置里覆盖,无需改本插件源码。

注册与开关方式

  1. 在 sidebar.panellist 注册与内置面板一致的启动器,在 main 用同一 panelId 注册面板主体(主体为空占位,避免与插件在 shell.overlay 上的单例工作台重复挂载)。
  2. 对用户选中的面板,对 launcher 指向的原始 DOM 节点调用 .click(),沿用插件自己的开关逻辑;打开状态通过 aria-expanded 或 on class 判断,不自行维护状态机。
  3. 通过 ctx.layout.panelInfo 轮询当前选中面板,选中则打开对应工作台,切走则关闭,避免 overlay 常驻。

界面效果(相对页脚按钮)

提升后面板出现在全局面板列表上部;选中即打开工作台,切到其他面板时自动收起。原页脚按钮仍可保留,但不再依赖其可见性与可点性。

随附示例(非适用范围上限):

面板 含义 示例 launcher
POMASA Studio 多智能体调研 .ps-footer-action
Pictor 图像 / 信息图渲染 .pt-footer-action

安装与启用

前置条件

  • DSH 0.2.2-rc.1 或更高(Web profile)
  • 已安装并启用要提升的插件(默认示例为 pomasa-studio、dsh-pictor)
  • 未装 dsh-claude-style 时页脚按钮通常仍可用,本插件主要解决接管场景,并额外提供面板入口

先确认 profile 可启动:

dsh --profile web --dump-config >/dev/null

资料中的安装方式为编辑 ~/.dsh/profiles/web/package.json,在 dependencies 与 dsh.profile.bundles 两处同时登记,再执行 dsh plugin --profile web install。只加其中一侧会导致无法解析或未加载 bundle。

方式 A:本地目录(推荐开发者)

dependencies 使用 link: 指向本地克隆目录,并在 bundles 追加 "dsh-footer-panels",然后:

dsh plugin --profile web install
dsh web

改 bundles 需重启 dsh web;仅改 client.js 时刷新页面即可。

方式 B:从 GitHub 安装

{
  "dependencies": {
    "dsh-footer-panels": "github:neil-wang-global/dsh-footer-panels#main"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "dsh-footer-panels"
      ]
    }
  }
}

固定版本可将 #main 换为 #v1.0.0 等 tag。随后同样执行:

dsh plugin --profile web install
dsh web

验证

确认 bundle 进入配置:

dsh --profile web --dump-config | grep -A2 footer-panels

应看到 id: footer-panels、name: dsh-footer-panels。刷新 http://127.0.0.1:3080,左侧全局面板区域应出现 POMASA Studio、Pictor;点击应能打开对应工作台。

卸载

从 dsh.profile.bundles 与 dependencies 移除本包,执行 dsh plugin --profile web install,再重启 dsh web。

典型用法:添加自己的面板

通过 bundle 配置覆盖(不改插件源码)

在 ~/.dsh/profiles/web/cordis.patch.yml 中:

- id: footer-panels
  name: dsh-footer-panels
  config:
    panels:
      - panelId: my-plugin
        label: 我的插件
        order: 70
        launcher: '[data-slot="sidebar.footer.action"] .my-plugin-footer'

配置按 panelId 与默认清单合并,可只改顺序或纯新增。

确定 launcher 选择器

  1. 打开 http://127.0.0.1:3080,用开发者工具选中目标页脚按钮,查看 class。
  2. 使用「插槽容器 + 插件 class」,例如:
document.querySelector('[data-slot="sidebar.footer.action"] .ps-footer-action')

须指向插件原始按钮,不要指向皮肤克隆节点;返回 null 说明选择器错误或插件未挂载。

图标可在插件 ICONS 中按 panelId 注册(详见仓库 README 图标一节)。

适用场景与注意

适合谁

  • 常用 POMASA Studio、Pictor 或其他仅提供 sidebar.footer.action 的 overlay 插件,且已装或可能装 dsh-claude-style 的用户。
  • 希望把页脚功能提到全局面板、与任务看板、会话统计等并列,减少在底部「更多」里翻找的用户。

注意事项

  • 本插件以当前 DSH Web 进程权限运行,与其他客户端 bundle 相同;安装前请阅读仓库源码与 MIT 许可证。
  • 依赖 DSH 公开插槽;package.json 中 client 注入包含 @deepseek-ai/dsh-client-runtime 等,需与所用 DSH 版本匹配。
  • 社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;插件 star 数等以目录页为准时,当前资料为 0。

结尾

dsh-footer-panels 用一份面板索引表,在不改第三方插件源码的前提下,把页脚 overlay 插件接到 sidebar.panellist,并通过对原始启动器 .click() 保持与插件状态机一致。需要接入更多插件时,补全 panelId、label、order、launcher 即可。

羽毛球分组比赛记分
小程序二维码

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

小夜