dsh-conversation-width:固定 DSH 对话框内容列宽度

前言

DeepSeek Harness(DSH)Web 界面里,对话正文列默认可以左右拖动,宽度会记在浏览器 localStorage。对习惯固定阅读宽度的开发者来说,每次换设备或误拖手柄都要重新调一遍;若希望宽屏下正文不要拉得过宽,原生拖拽也缺少「按比例跟随窗口」这一类选项。下面介绍社区插件 dsh-conversation-width(维护者 AvigatorC),在 设置 → 通用 里增加一行配置,在不改 DSH 组件源码的前提下,把内容列宽度锁成像素值或按对话列比例缩放。

这是什么

dsh-conversation-width 是面向 DSH Web UI 的客户端插件,分类上属于社区目录里的「趣味换装」类布局调整。当前版本 v1.0.0,许可 MIT。仓库:https://github.com/AvigatorC/dsh-conversation-width;SkillHub 目录页:https://www.skillhub.cn/plugins/AvigatorC/dsh-conversation-width。

插件通过覆盖会话体上的 CSS 变量 --dsh-chat-content-width(!important)生效,正文列与输入框卡片的 max-width 都读该变量,因此与原生拖动手柄逻辑并行:选「默认可调」时不做任何干预。

核心功能

装好后,在 设置 → 通用 中、「字号大小」下方会出现对话宽度相关选项,三种模式三选一:

模式 行为
默认可调 完全不干预,保留原生左右拖动
固定像素 锁死为 420–2400px,拖动手柄隐藏
窗口比例 40–100%,随窗口缩放自动跟随

比例模式读取 DSH 写出的 --dsh-conversation-column-width,即「对话列宽 × N%」,侧栏开合时会跟着自适应。

数值框支持直接键入,按 Enter 或失焦提交;悬停或聚焦时可用上下箭头微调(像素 ±10,比例 ±1)。

偏好写入 localStorage,键名为 dsh.conversationWidth,示例结构:

{ "mode": "percent", "px": 820, "percent": 72 }

把模式切回「默认可调」即可恢复原生行为;删除该键等同于恢复出厂。

设置行尽量复用官方 @deepseek-ai/dsh-client-ui-primitives 的 Menu 与箭头图标(与「工作步骤展示」等原生行同款);该模块不可用时自动退回原生 select,不会让设置行崩溃。

安装与启用

DSH 生态里插件常以「本地 bundle」或插件市场目录安装;本仓库已投递 awesome-dsh-plugin,收录后可在 DSH 插件市场(例如 dsh-market)搜索 dsh-conversation-width 一键安装,市场按仓库源码安装,不需要 npm 包。尚未收录或市场里搜不到时,用下面从仓库安装的方式,功能相同。

从仓库安装时,先把仓库克隆到本地,再把该目录作为本地插件装进当前 DSH profile。plugin_manager 的 install_bundle 接受目录路径,例如在会话里让 Agent 执行类似说明(路径换成你本机实际目录):

git clone https://github.com/AvigatorC/dsh-conversation-width.git

装好后打开 设置 → 通用,在「字号大小」下方选择模式即可。升级时在克隆目录执行 git pull 后刷新 DSH 窗口(会热替换插件模块);移除时使用同一 plugin_manager 的 remove_bundle。

安装前建议自行浏览仓库源码与 LICENSE。插件在 DSH 进程权限下运行,与所有社区插件一样,不应在未审阅代码的情况下 blindly 安装。

典型用法

  1. 安装并刷新 Web UI。
  2. 进入 设置 → 通用,在「字号大小」下将模式设为「固定像素」,例如 820px,适合希望正文列始终接近技术博客阅读宽度的场景。
  3. 若希望宽屏时略收窄、窄屏时仍占满对话列,可选「窗口比例」,例如 72%,随窗口与侧栏变化自动重算。
  4. 需要临时恢复拖动手柄时,切回「默认可调」。

兼容性与注意

插件在 dsh 0.2.1-rc.3 上开发与验证。package.json 未声明 engines,安装时不会因版本号被拦截。

宽度覆盖锚定在会话体属性 data-conversation-content。若某个 dsh 版本的会话体没有该属性,CSS 覆盖会静默失效(不报错、不影响界面,只是不生效)。将来 DSH 若改名该属性,需改插件 client.js 里 widthCss() 的选择器。

peerDependencies 包含 @deepseek-ai/dsh-client-ui-primitives(>=0.2.0-rc.2)与 react(>=18),均为 optional;仅影响设置 UI 是否使用官方 Menu 组件,不影响宽度逻辑本身。

结尾

dsh-conversation-width 用一行通用设置,把 DSH 对话内容列从「只能拖拽」扩展为可选的像素锁定或列宽比例,适合固定阅读宽度或随窗口自适应的布局需求。详情与 issue 见 GitHub:https://github.com/AvigatorC/dsh-conversation-width;目录介绍见 SkillHub:https://www.skillhub.cn/plugins/AvigatorC/dsh-conversation-width。

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

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

小夜