DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-diy-layout

Diy Layout

DIY Layout,用于 DSH 主页侧边栏——支持单列/双列面板列表、仅图标模式(带悬停提示)、按插件排序、隐藏插件以及设置页面。纯附加组件:不修改 DSH 源代码。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:G57651/dsh-diy-layout#da80da03e92027954522cdc2570f74da4cbf87a9
README兼容性版本

兼容性与来源证明

Diy Layout 以 dsh-diy-layout 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.2.0stable
2026/10/4
0.1.0stable
2026/10/3

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。

README

dsh-diy-layout · 侧边栏 DIY 布局

一个 DeepSeek Harness 客户端 UI 插件:无需修改 Harness 任何源码,即可自定义主页侧边栏两个插件区域的展示方式与排列布局——上部的「全局面板」列表,以及底部账号/设置区上方的「插件行」(chat-import、dsh-context、one-click-restart 等注册的 sidebar.footer.action 位置)。

  • 全局面板:单栏 / 双栏排列;图标+名称 / 仅图标(悬浮显示名称 Tooltip)
  • 底部插件行:默认横向 / 单列 / 双列;跟随插件 / 仅图标(悬浮提示)
  • 两个区域均支持逐条目排序(上移/下移)与显示/隐藏
  • 配置持久化在浏览器 localStorage(dsh.diy-layout.v2),重启后仍然保留
  • 明暗主题自动适配(全部使用官方 --dsw-alias-* 设计令牌)

使用方法

安装后(见下),打开 设置 → 侧边栏 DIY 布局:

配置项说明
全局面板 · 布局模式单栏(默认)/ 双栏(按侧边栏宽度自动分列)
全局面板 · 名称显示图标 + 名称(默认)/ 仅图标——悬浮图标 500ms 后显示名称气泡
底部插件区 · 排列方式默认横向(默认)/ 单列 / 双列
底部插件区 · 名称显示跟随插件(默认,由各插件自适应形态)/ 仅图标——压缩为 36×36 圆钮并悬浮显示名称;自带 title 提示的条目沿用其原生提示
插件排列与显示(两个区域各一组)每个插件一行:↑ 上移、↓ 下移、开关 = 显示/隐藏
恢复默认清除两个区域的排序与隐藏记录(布局模式与名称显示保留)

折叠侧边栏(56px 图标栏)有自己的官方图标态与 Tooltip,本插件不干预其中;隐藏与排序在折叠栏中保持一致。

安装(bundle 通道,推荐)

方式 A · Release 安装包(从 Releases 下载或直接用 URL):

dsh plugin --profile <你的 profile> add \
  https://github.com/G57651/dsh-diy-layout/releases/latest/download/dsh-diy-layout-0.1.0.tgz
# 例如桌面版:dsh plugin --profile desktop add <上面的 URL>(或经应用内插件管理器安装)

方式 B · GitHub 仓库直接安装(仓库内已含构建产物 lib/,无需授权构建脚本):

dsh plugin --profile <你的 profile> add github:G57651/dsh-diy-layout

安装后重启 Harness(桌面 App 或 dsh web)即生效。卸载:dsh plugin --profile <profile> remove dsh-diy-layout。

本地试跑(不改 profile):

dsh web --patch ./test/diy-layout.local.patch.yml   # patch 内为插件 lib/index.js 的绝对路径

实现原理(为什么零侵入)

Harness 的侧边栏由 ui-sidebar 的 SidebarRoot 渲染:上部的插件入口来自 sidebar.panellist list slot(entry 组件即图标,行按钮/标签由 shell 渲染);底部账号/设置区上方的插件行来自 sidebar.footer.action list slot(chat-import、dsh-context、one-click-restart 等在此注册自带完整按钮的条目)。slots 系统不授权重排或替换他人的行 DOM,因此本插件采用三条官方增量通道:

  1. 注入式样式:apply 侧维护一个 <style data-plugin="dsh-diy-layout">,订阅「配置 store + 两个 slot 台账 + locale」重新生成规则。选择器锚定 DSH CSS Modules 的 [hash]_<local> 编译模式(如 hHd-Xa_panelRow)与全仓库唯一的 panelList/footArea 类名;footer 条目经渲染器的 div[data-slot] 锚点定位。双栏/双列=容器 grid、仅图标=隐藏标签、隐藏=display:none !important(footer 条目自带内联样式)、排序=flex/grid order。选择器匹配不到时插件静默失效,不可能破坏 UI。
  2. 条目身份标记:footer 共享一个 slot outlet,且部分条目可能条件性渲染为空(如内置 cordis-panel),DOM 位次与台账位次会错位——插件通过 React fiber(RootEntry 的 entry.options.id)给每个已渲染条目打上 data-diy-entry="<id>" 标记,排序/隐藏规则按 id 而非位置命中,对任意第三方条目稳健。fiber 结构变化时标记失效,表现为功能不生效而非破坏。
  3. 悬浮 Tooltip:注册进 shell.overlay(官方加法式浮层),document 级委托监听,对面板行(标签被样式隐藏时)与 footer 条目(仅图标规则生效且无自带 title 时)延迟 500ms 显示气泡(createPortal 到 body,样式复刻官方 Tooltip.module.css)。折叠 rail 与自带提示的条目不覆盖,不会出现双重气泡。
  4. 设置页:注册 settings.section(id diy-layout),控件全部来自 ui-primitives。

不做的事:不注册/遮蔽任何已存在的 slot entry,不改 DOM 结构,不 import 其他插件代码。侧边栏宽度调节未实现——ctx.layout 不暴露宽度写入(强改会与拖拽/clamp 逻辑冲突);侧边栏宽度请用自带拖拽手柄。

兼容性

  • 锁定 dsh >= 0.2.0-rc.1(在 0.2.0-rc.2 上开发并测试)。DSH 处于 developer preview,升级后若类名/结构变化,插件自动退化为「不生效」而非破坏 UI。
  • 新装第三方侧边栏插件(两个区域皆可)自动纳入排序/隐藏/布局;其卸载后残留的记录惰性存在,可用「恢复默认」清除。
  • 已知取舍:CSS order 改变视觉顺序,Tab 焦点顺序仍按 DOM 序(条目个位数时影响极小);隐藏的行同时移出 Tab 序与无障碍树;footer 仅图标模式依赖通用覆盖规则,形态特殊的条目以「跟随插件」模式为准。

开发

pnpm pack 之前先构建:使用 Harness 仓库工具链
  <repo>/node_modules/.bin/tsdown          # 产出 lib/index.js + lib/client.js
  <repo>/node_modules/.bin/tsc -p tsconfig.json   # 类型检查(paths 指向 0.2.0-rc.2 类型)

源码结构:

src/index.ts               # Node 半(Loader 加载,空 apply)
src/client/index.tsx       # apply:词典/存储/样式/台账投影/两个 slot 注册
src/client/store.ts        # defineStore(persist: dsh.diy-layout.v2,两个区域的配置)
src/client/sidebar-css.ts  # CSS 生成器(锚点 + 两个区域的规则)
src/client/tagging.ts      # React fiber 条目身份标记(data-diy-entry)
src/client/tooltip-overlay.tsx
src/client/settings-page.tsx
src/client/locales.ts      # zh/en
docs/ANALYSIS.md           # 阶段一分析与阶段二方案
test/fixture-panels/       # 测试夹具:两个区域各 4/3 个模拟条目(非交付物)