DeepSeek Harness (DSH) Web UI 的左侧会话列表栏默认有一个硬编码的拖动下限,官方设定为 264px。当屏幕空间有限或需要更紧凑的界面布局时,这个限制会带来困扰。dsh-sidebar-width 插件通过在 dsh web 启动时修补客户端 bundle 文件,直接调整这一数值。它不提供任何新的 UI 面板,仅专注于调整侧边栏的尺寸逻辑。
插件定位¶
这是一个由 garrisonz 维护的打补丁式插件,遵循 MIT 许可证。插件的核心价值在于绕过官方客户端 bundle 的硬编码限制,让开发者能够根据实际屏幕尺寸和偏好,自由控制左侧栏的拖动范围和默认展开宽度。
核心功能¶
该插件仅作用于左侧会话列表栏的宽度控制:
- 调低拖动下限:突破官方 264px 的限制,允许侧边栏更窄。
- 自定义拖动上限:防止侧边栏过度占屏,设定最大拖动宽度。
- 设定展开默认宽度:改变页面初始加载时侧边栏的宽度。
- 兼容性:兼容两代 store 结构(
d.sidebar与d.layoutInfo.sidebar),并内置正则容错逻辑。 - 幂等性:插件支持重复运行,升级 DSH 后重启可自动重打补丁。
安装与启用¶
使用官方推荐方式通过 npm 安装:
dsh plugin --profile web add dsh-sidebar-width # npm(推荐)
安装完成后,无需手动操作。插件会在 dsh web 启动时自动检测并修补 @deepseek-ai/dsh-client-ui-layout/lib/client.js 文件。首次运行会自动生成备份文件(如 client.js.dsh-sidebar-width.bak)。
配置方法¶
安装后,编辑 ~/.dsh/profiles/web/cordis.patch.yml 文件,添加以下配置项:
- id: sidebar-width
name: 'dsh-sidebar-width'
config:
min: 160 # 拖动下限,默认 180
max: 420 # 拖动上限,默认保持 bundle 原值
defaultWidth: 240 # 展开默认宽度,默认保持 bundle 原值
配置修改后,重启 dsh web 即可生效。
工作原理¶
由于官方客户端 bundle 中的宽度钳制逻辑(clampWidth(px, 264, 420))和默认值(280px)是写死在 @deepseek-ai/dsh-client-ui-layout/lib/client.js 文件中的,且运行时未暴露可修改的接缝,该插件采用“打补丁”的方式实现功能:
- 启动时修补:
dsh web启动时,插件读取配置,对被服务的client.js文件进行正则替换。 - 安全备份:首次运行会创建
.bak备份文件。 - 结构兼容:插件利用正则对不同的 store 结构(旧版
d.sidebar与新版d.layoutInfo.sidebar)进行容错匹配,确保在不同版本下不会出错。 - 幂等执行:通过标记机制,多次运行不会重复修改文件;若未来 bundle 结构发生重大变更,插件会安全拒绝修补。
卸载与回滚¶
使用以下命令移除插件:
dsh plugin --profile web remove dsh-sidebar-width
插件移除后,补丁文件不会自动回滚。如需还原,可手动将备份文件(client.js.dsh-sidebar-width.bak)改回原文件名。
总结¶
该插件适合需要精细控制 DSH Web UI 布局的开发者。它通过极简的配置文件实现了对侧边栏尺寸的完全控制,且机制透明(基于文件修补)。详细信息可参考:SkillHub 目录 或 GitHub 仓库。