前言¶
在 DSH(DeepSeek Harness)Web 端,不少插件习惯在侧边栏底部注册 sidebar.footer.action 按钮,工作台则画在 shell.overlay 上,靠该按钮开关。底部区域还要放设置、反馈、退出登录等系统项,装得越多越挤,常用功能往往被收进「更多」。若再安装 dsh-claude-style,其页脚接管会把原按钮隐藏并克隆到账号弹层;对 POMASA Studio、Pictor 这类可点击节点嵌套在条目内部的插件,点击转发会失败,界面上一眼看得到、点不动。
dsh-footer-panels 不修改任何第三方插件源码,只通过 DSH 公开的插槽与布局服务,用一张配置表把指定页脚启动器「提升」到侧边栏「全局面板」列表,与内置面板同级,可钉选、可从「更多」在收起侧栏时访问。下面介绍其定位、机制、安装与自建面板配置。
这是什么¶
- 名称:dsh-footer-panels(npm 包名同 GitHub 仓库名)
- 维护者:neil-wang-global(作者 Neil Wang)
- 分类:客户端(Web profile)
- 许可证:MIT(见仓库
package.json) - 版本:资料中可见 1.0.0
- 仓库:https://github.com/neil-wang-global/dsh-footer-panels
- 目录页:https://www.skillhub.cn/plugins/neil-wang-global/dsh-footer-panels
一句话:配置驱动的 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 配置里覆盖,无需改本插件源码。
注册与开关方式¶
- 在
sidebar.panellist注册与内置面板一致的启动器,在main用同一panelId注册面板主体(主体为空占位,避免与插件在shell.overlay上的单例工作台重复挂载)。 - 对用户选中的面板,对
launcher指向的原始 DOM 节点调用.click(),沿用插件自己的开关逻辑;打开状态通过aria-expanded或onclass 判断,不自行维护状态机。 - 通过
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 选择器¶
- 打开
http://127.0.0.1:3080,用开发者工具选中目标页脚按钮,查看 class。 - 使用「插槽容器 + 插件 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 即可。