DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

@choi-p/dsh-footer-order

Footer Order

DSH web 侧边栏页脚操作排序:将 sidebar.footer.action 插槽强制设为垂直堆叠(display: contents → flex column),并允许用户配置条目的从上到下顺序。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:Choi-Peng/dsh-footer-order#1cf4537628eaa363832abf6c76ab2ba594fb8db4
README兼容性版本

兼容性与来源证明

Footer Order 以 @choi-p/dsh-footer-order 发布,当前版本为 0.4.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.4.1stable
2026/9/5
0.2.0stable
2026/8/19
0.1.2stable
2026/8/19
查看其余 1 个版本收起版本
0.1.1stable
2026/8/18

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 r

README

dsh-footer-order

一个 DeepSeek Harness 的 Web 端插件,解决侧边栏底部(sidebar.footer.action 槽位)多个插件内容挤成一行的布局问题,并让你自由配置这些内容的上下排列顺序。

修改前修改后
修改前修改后
多个 footer 插件挤在同一行上下排列,清晰可读

[!NOTE] AI 生成声明:本插件由 AI 生成,可能存在错误、安全隐患或不符合预期之处,使用前请自行 review 代码并实测:发现任何问题欢迎提交 issue 或 PR 修正。

[!COMPAT] 版本兼容性:核心功能(footer 竖向堆叠 + 条目上下排序 + 设置行 settings 归位)在 dsh ≥ 0.1.1-rc.2 上正常工作。但 settingsArea 内部排列管理(settingsLayout / settingsGap / settingsAlign / settingsOrder)依赖 dsh 0.1.2-rc.1 起的 shell DOM 细节(设置按钮、连接状态指示器等),在 dsh 0.1.1-rc.2 上不生效;在该版本上此分组会静默跳过,不影响其余功能。需要此功能请升级到 dsh ≥ 0.1.2-rc.1。

问题背景

安装多个插件后,插件会往 sidebar.footer.action 槽位写入内容。该槽位的锚点 div[data-slot="sidebar.footer.action"] 被 dsh web-react 渲染器加上行内样式 display: contents,于是每个条目的根元素直接参与父容器(.footerActions,display: flex,横向)的布局 —— 多个 footer 插件最终挤在同一行。

本插件注入一条 !important 样式规则,把锚点改成纵向 flex 堆叠(display: flex; flex-direction: column),条目即变为从上到下排列。

  • 可配置条目上下顺序: 在插件行的 config.order(base 层)里按从上到下写出插件 id 列表,或直接在 设置 → 插件 → 侧边栏底部排序 卡片里用 ↑/↓ 调整。
  • 外壳的设置行(settingsArea,即 sidebar.settings 槽位)也参与同一份纵向顺序表: 用保留 id settings 就能把它放到条目之上、之间或之下;不写它则保持外壳原本的位置(整组 footer 条目下方)。
  • settingsArea 内部排列管理(需 dsh ≥ 0.1.2-rc.1,见顶部兼容性提示):
    • settingsLayout: 支持设置区内部的左右排列(row)、上下排列(column)、左右反向(row-reverse)、上下反向(column-reverse)或不干预(contents)。
    • settingsGap: 设置区内部各组件之间的间距(px,默认 8px)。
    • settingsAlign: 设置区内部对齐方式(居中 center / 拉伸 stretch / 起始 start / 结束 end)。
    • settingsOrder: 支持用 ↑/↓ 调整设置区内部各组件(设置按钮、连接指示器等)的前后排列顺序。
  • 可配置整体 footer 的 layout(column / row / contents)、gap(条目间距)、align(对齐方式)。
  • 兼容不渲染任何内容的条目(如 shell 内置的 cordis-panel,平时返回 null):排序自动跳过这类条目,不会因「条目数 ≠ DOM 节点数」而失效。
  • 配置热加载 —— 在卡片保存(settings 服务热发布)立即生效,无需重启 dsh web;编辑 bundle 的 cordis.patch.yml base 配置则经 patch 层 HMR 重启此 fiber 生效。
  • 不注册任何可见的 footer 条目,只做布局与排序,卸载后不留痕迹(样式、DOM 状态与观察器随插件卸载完整清理与还原)。

架构

端文件作用
Hostlib/index.js提供 /footer-order/settings —— 作为 footer-order 设置命名空间的一个薄代理:GET 返回已解析配置 + revision + 是否覆盖标记;POST 通过官方 dsh 设置缝(ctx.settings)保存(update)或重置(replace {})。部署期的 patch config 成为该命名空间的 base 层;运行时编辑落入其上方的 user 层
Clientlib/client.js注入覆盖样式(锚点改为纵向 flex,并在配置时覆盖 settingsArea 内部排列);监听 DOM 变化,按配置把锚点下的区块(footer 条目 + 若已列入则含设置行)重新排序并设置 settingsArea 内部顺序;在 设置 → 插件 注册可编辑的 侧边栏底部排序 卡片

排序实现:每个注册条目在锚点下渲染为恰好一个子节点(渲染器按 order 升序输出),但部分条目可能渲染为空(如 cordis-panel、收起侧边栏时隐藏的读数)。客户端用三层策略把子节点与 ctx.slots.entriesOfSlot('sidebar.footer.action') 里的条目 id 配对:① 按条目 label 的文本匹配子节点(如「重启 DSH」按钮);② 沿用此前已确认的配对;③ 对剩余子节点做「配置命中优先、位移最小」的子序列枚举。之后按配置顺序重排 DOM。这样即使存在常驻的空渲染条目,排序也始终生效。

设置行不需要碰外壳那些带哈希后缀的 CSS Module 类名就能定位:sidebar.settings 的槽位锚点是 display: contents,因此它的父元素就是 div.settingsArea。当 order 里出现保留 id settings 时,该区块被移入 footer 列(本插件已拥有的那个锚点)并与条目一起排序;未出现时则把它交还给 div.footArea 的最后一个子节点位置 —— 也就是外壳原本渲染它的地方,其余时候完全不碰。针对 0.1.2-rc.1 起在 settingsArea 内新增的连接情况指示器,插件提供独立的布局、间距、对齐与内部前后排序管理。插件卸载时同样会还原所有 DOM 与样式,不留痕迹。

安装

通过 plugin-registry 安装

设置 → 插件 → 安装,source 填 @choi-p/dsh-footer-order 或 github:Choi-Peng/dsh-footer-order。

手动安装

dsh plugin --profile web add "github:Choi-Peng/dsh-footer-order"

插件包自带 cordis.patch.yml(package.json 中的 dsh.bundle.patch),安装时由 dsh 自动挂载。重启 dsh web 后生效。

卸载方式

dsh plugin --profile web remove @choi-p/dsh-footer-order

bundle 挂载随插件移除自动消失;若曾在 profile 层手动写过该行,需先删掉它。

配置

插件设置遵循 dsh 官方双缝配置模型,均实时生效,无需重启 dsh web(核心功能兼容 dsh ≥ 0.1.1-rc.2;settingsArea 内部排列需 dsh ≥ 0.1.2-rc.1,见顶部兼容性提示):

层来源生效方式
默认值schema 内置—
base 层(部署方静态配置)插件 bundle 自带 cordis.patch.yml 行内 config(dsh.bundle.patch,安装即自动挂载)dsh web 监听 patch 层(HMR),编辑后自动用新配置重启此 fiber
用户层(运行时设置)设置 → 插件 → 侧边栏底部排序 的保存/重置,经 ctx.settings 持久化到 $DSH_HOME/settings.yaml;重置 = 清空用户层回落 basesettings 服务热发布,立即生效;本插件不再改写 cordis.patch.yml

base 层 config(bundle 默认附带):

- insert:
    - id: footer-order
      name: '@choi-p/dsh-footer-order'
      config:
        layout: column            # column = 纵向堆叠(默认)| row = 横向 | contents = 不干预
        gap: 0                    # 条目间距,px(>= 0)
        align: stretch            # stretch | start | center | end(纵向堆叠时的交叉轴对齐)
        order: [settings]         # 插件 id 列表;保留 id `settings` = 外壳的设置行(settingsArea)
        settingsLayout: contents  # contents = 不干预(默认)| row | column | row-reverse | column-reverse
        settingsGap: 8            # 设置区条目间距,px(默认 8)
        settingsAlign: center     # center | stretch | start | end
        settingsOrder: []         # 设置区内部组件顺序,如 [settings, connection]

order 里的 id 是每个插件向 sidebar.footer.action 调用 slots.register({ name, id, ... }) 时传入的 id,不是包名。设置卡片会列出当前所有已注册 id,可用 ↑/↓ 重新排序。 settings 是一个保留 id,代表外壳的设置行(sidebar.settings 槽位,渲染在 div.settingsArea 内)。把它写进 order 的任意位置即可 —— 例如 ['settings', 'deepseek-balance'] 让「设置」排在余额之上;不写它,设置行就保持外壳原本的位置:foot 区域底部、整组 footer 条目之下。(若真有 footer 条目注册了 settings 这个 id,则以该条目为准 —— 保留 id 只在没有条目占用它时生效。)

设置卡片采用与官方设置一致的按钮组和输入框风格,分别提供总体 footer 排列管理以及独立的 settingsArea 排列管理,并提供 保存 / 恢复默认值;保存采用 revision 乐观并发,若配置已在别处修改会提示并加载最新值。

使用

  1. 打开 dsh web —— 侧边栏底部的 footer 条目会上下排列。
  2. 设置 → 插件 → 侧边栏底部排序 卡片:调整 layout、gap、对齐方式、上下顺序,以及 settingsArea 内部排列方向与组件顺序,然后保存。所有修改实时生效,无需重启 dsh web。在 dsh 0.1.1-rc.2 上,settingsArea 相关分组不会生效,但其余调整照常工作。

开发

pnpm install
node --check lib/index.js
node --check lib/client.js
node scripts/smoke-host.mjs    # host 端:路由/持久化/校验冒烟测试
node scripts/smoke-client.mjs  # client 端:CSS 注入/排序/配对冒烟测试

License

MIT