dsh-layout:把 DSH 三栏界面交给配置,不改会话逻辑

前言

在 DeepSeek Harness(DSH)里日常开发或运维时,左栏、会话区、右栏和设置页的布局往往由宿主默认网格决定:面板顺序固定、某些入口挤在同一行、侧栏底部动作与插件新注册的槽位条目叠在一起。换一套工作流通常只能忍,或靠浏览器缩放凑合。

dsh-layout 是 LINGTIAN303 维护的客户端布局插件:它不生成对话内容,也不接管路由与会话状态,只在现有 DOM 上叠加样式与投影,把结构顺序、宽度、显隐和若干区域的拆解交给可持久化的配置。关闭「启用自定义布局」会立刻回到 DSH 默认外观,配置仍保留在 profile 里。

插件已发布到 npm,当前资料中的版本为 0.9.1,许可证 MIT。社区目录页位于 skillhub.cn;源码与说明见 GitHub 仓库。DSH 生态强调「一切皆插件」,该目录站与 DeepSeek / 幻方无官方从属关系,安装前请自行审阅源码与许可证——插件在浏览器端以当前 DSH 进程权限运行。

这是什么

一句话:dsh-layout 调整 DSH Web 外壳的几何与可见性,覆盖左栏、会话区、右栏、设置页及插件注册的槽位出口,不改写任何面板实现。

入口在「插件 → 已安装 → 布局 → 详情页」。编辑面板是全局浮层:在哪个页面打开就停留在哪个页面,识别、预览与调整都针对当前界面。改的是宿主已有界面,不重写面板、不接管会话逻辑。

核心能力概览

下面按 README 中已列出的能力分组说明;宽度、顺序与显隐均即时生效,无需重启 DSH。

三栏与侧栏

区域 可调项
三栏结构 左栏 / 会话区 / 右栏拖动排序(含左右互换)、各自宽度、会话区最小宽度、逐栏隐藏(含会话区)、隐藏底部条
侧栏内容 品牌行、新建会话、面板导航、工作区、底部操作五块排序与显隐;品牌标识 / 收起按钮 / 状态按钮行 / 账号菜单可独立显隐
面板导航 左栏每个面板图标排序与显隐(列表从当前界面实时读取)

会话区、右栏与设置页

  • 会话区:内容与输入框最大宽度;会话头 / 消息区 / 输入区可独立显隐,会话头可与正文换序,输入区可提到消息区上方;会话头内部可拆标题行、视图标签行等;消息区、输入区另有子单元显隐。
  • 右栏:标签栏与内容区独立显隐,标签栏可放到内容区下方。
  • 设置页:面板宽度、高度、左侧导航宽度、水平/垂直偏移;导航列可隐藏或移到右侧,页头与选项区可各自隐藏。

识别、拆解与插件来源

  • 界面结构:识别并列出原生区域 / 原生页面 / 各插件贡献的面板页,按「官方登记 / 第三方登记 / 自动识别」标注;异常自动记录,可导出待复核清单。
  • 拆解覆盖:24 个拆解单元提供在场 / 上次观测 / 未出现等状态,便于发现结构失配。
  • 外部插件拆解:通用扫描第三方页面,按可隐藏、可排序、可调尺寸、只读分级;支持 data-dshl-declare 自声明结构;可「登记此页结构」固化。
  • 插件来源:读宿主 slots 注册表,按槽位列出注册者与条目;已渲染条目可精确隐藏/排序;清单支持搜索与组内拖拽排序。

槽位编排、区域搬移与联动

  • 槽位编排:将容器改为 2 或 3 列网格,调间距;侧栏面板导航可选「只留图标」。浮层/菜单类槽位与零尺寸容器自动排除。
  • 区域搬移:点「开始画框」在界面上拖框定落位与宽度;支持键盘微调与冲突检测;旧版「按容器 + 开头/结尾」配置会标「需重画」。
  • 联动:条件(当前页面、侧栏折叠、区域在场等)成立时叠加隐藏或排列动作;面板导航与插件来源的排序/隐藏双向同步,避免两套顺序互相覆盖。

入口收纳、白板与方案

  • 入口收纳:不常用入口收进各区域「更多」菜单;七区分页管理,入口身份按宿主稳定键匹配。
  • 布局白板:全屏工作台,左侧列出结构树,中间在真实界面描框或抽象骨架,右侧属性面板调参;白板拆为独立 chunk client.board.js 按需加载。
  • 编辑模式:界面上直接拖列分隔条改宽;浮动工具条切换预设(标准 / 紧缩侧栏 / 专注 / 右栏左置 / 宽屏)。
  • 布局方案:当前整套配置可存为命名方案(上限 20 套),切换时三栏、拆解、槽位编排、入口收纳、联动规则一并替换。

数据持久化

支持 JSON 导出、导入与恢复默认。配置与方案写入当前 profile 的 cordis.patch.yml(- id: layout 节);换浏览器或清缓存不丢。浏览器 localStorage(键 dsh-layout/config/v1)仅作启动渲染缓存,宿主不可用时降级为唯一存储。

安装与启用

README 写明:插件市场索引暂未收录,市场内搜索不到属正常,须用插件管理器指定 npm 包名与版本安装。

plugin_manager install_bundle,target 为 dsh-layout@0.9.1(npm 包名@版本)

安装后 bundle 名为 dsh-layout,行 id 为 layout。升级时在插件管理器中换新版本号即可。

本地开发与调试可安装仓库根目录为 target(示例路径因机器而异):

plugin_manager install_bundle,target 为本仓库的本地目录(示例:E:\dsh-layout)

本地 link 安装时,更换 client.js 后刷新页面即可生效,无需重装。

典型操作路径

  1. 左栏点「插件」,在「已安装插件」里找到「布局」。
  2. 打开详情页,底部「布局」区查看识别状态,打开「启用自定义布局」,点「打开编辑面板」。
  3. 使用快捷键 Ctrl/⌘ + Alt + L 可随时打开编辑面板;加 Shift 可直接恢复默认。
  4. 面板可贴左或贴右;需要全屏结构视图时点「打开白板」。
  5. 面板内分页:布局结构 / 侧栏 / 入口收纳 / 区域拆解 / 槽位编排 / 识别与外部;分页状态会记住。

面板不依赖详情页:切到会话、插件或设置页时仍浮在当前页;设置弹层打开时面板渲染在 document.body 之上,可直接调设置页几何。

若布局把返回插件页的入口藏起,或三栏全部隐藏,可按 README「安全与恢复」:空白页正中提供恢复默认、插件页、编辑模式;浏览器端还可访问 http://127.0.0.1:60403/#dsh-layout=reset。

实现要点(便于评估风险)

客户端插件通过 client.js 向 plugins.detail.section 与 shell.overlay 注册;用 DOM 注解器给宿主外壳打 data-dshl-* 标记,由配置生成 style[data-dsh-layout="dynamic"] 覆盖网格列宽与顺序。区域搬移采用 fixed 投影,源节点留在原 React 树。依赖宿主 data-slot 等结构;识别失败时详情页会显示「未识别界面结构」,此时不会改动界面。

已知限制包括:常规三栏且宽度 ≥768px 才覆盖几何,窄屏抽屉交给宿主;侧栏折叠态不强行覆盖列序;右栏过宽可能挤压中栏;插件来源 依赖 slots 内部接口,宿主大版本升级后可能降级显示说明。

适用场景与注意

适合需要固定工作区形态、收纳冗长入口、或为多插件混部环境微调槽位顺序的 DSH 用户。不适合指望它改会话协议、模型调用或插件业务逻辑。

安装与启用前请阅读 MIT 许可证 与仓库 client.js / cordis.patch.yml,确认与当前 DSH 版本兼容。星标数、市场收录状态以目录页与 GitHub 实时显示为准(抓取时 GitHub 星标为 0)。

结尾

dsh-layout 把 DSH 界面布局从「只能接受默认」变成可命名、可导入导出、可一键恢复的方案集,同时用恢复入口与快捷键降低误隐藏带来的风险。进一步了解功能矩阵与布局引擎细节,见仓库 README 与 docs/details/注释/布局引擎.md;插件索引页:skillhub.cn/plugins/LINGTIAN303/dsh-layout。

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

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

Xiaoye