dsh-conversation-width:在设置里调节 DSH 对话栏宽度

前言

DeepSeek Harness(DSH)在宽屏上默认把中间对话内容区限制在约 920px,长文阅读时两侧留白较多。宿主本身支持拖拽对话区边缘改宽度,偏好会写入浏览器 localStorage,但全新安装时很多人不知道这一机制,或希望用数值精确调节。下面介绍社区 Web 客户端插件 dsh-conversation-width:它在 设置 → 通用 增加「对话显示区域宽度」一行,与拖拽手柄共用同一套存储与 CSS 变量,不另起一套宽度体系。

这是什么

dsh-conversation-width 由维护者 ElioFanyu 发布,当前 npm 包版本为 1.0.1,许可证 MIT。它是一个面向 DSH Web 客户端的插件(dsh.client.platform: "web"),Node 侧入口 lib/index.js 有意留空,界面逻辑在 lib/client.js 通过 exports["./client"] 注入宿主。

插件解决的具体问题是:把 Conversation 模块里已经存在的宽度偏好 localStorage["dsh.conversation.contentWidth"](单位 px,拖拽手柄也会写同一 key)暴露到设置页,读写始终一致;宿主仍通过 --dsh-chat-content-width 等 CSS 变量渲染,并对存储值叠加 clamp(640, columnWidth - 176, …),超出范围的值由布局纠正,而不是破坏页面。

核心功能

设置页新增一行控件,行为与 README 描述一致:

控件 行为
滑块 640–1600px,步进 20px,实时生效
数字框 同样范围;输入过程中的空值或半截草稿会被忽略
920 / 1100 / 1280 一键预设
恢复自适应 删除存储的 key,回到 clamp(680, column * .64, 920) 的默认逻辑

上限设为 1600px 是为宽屏与偏好宽栏的用户留余量;布局侧 columnWidth - 176 仍是任意窗口下的硬上限。插件在偏好变更时直接把 --dsh-chat-user-width 写到 [data-conversation-content] 父元素,与 dsh-client-ui-conversation 的 publishWidths() 一致,避免旧版仅靠 window.resize 导致「改设置不立刻生效」的问题。

宿主兼容性(资料中已实测或声明):

  • engines.dsh:>=0.2.0-rc.2 <0.3.0
  • dsh.compatibility.dshReleases 登记:0.2.0-rc.2、0.2.1-rc.2、0.2.1-rc.3、0.2.1-rc.5 均为 compatible
  • 在 DSH 0.2.1-rc.5 上实测通过;设置项 order 调整为 18,避免与内置 composer-enter(order 20)同分排序不稳定

安装与启用

官方 README 未给出 dsh plugin add 一类命令,安装方式是把包 link 进某个 DSH profile 并加入 bundle 列表,然后 重启宿主(刷新页面不够:客户端模块图在启动时快照)。

  1. 将仓库放到固定目录后,编辑 profile 的 package.json(路径形如 <userData>/.dsh/profiles/<profile>/package.json):
"dependencies": {
  "dsh-conversation-width": "link:/absolute/path/to/dsh-conversation-width"
},
"dsh": {
  "profile": {
    "bundles": [ /* … */, "dsh-conversation-width" ]
  }
}
  1. 让 node_modules/dsh-conversation-width 指向该目录——Windows 用 junction,其他平台用符号链接。README 示例(Windows):
New-Item -ItemType Junction `
  -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-conversation-width" `
  -Target "D:\path\to\dsh-conversation-width"

链接而非拷贝时,改插件源码后重启宿主即可生效。

卸载(可逆):从 dependencies 与 dsh.profile.bundles 移除条目,删除 junction,重启宿主。残留的 localStorage key 无害,拖拽手柄仍可继续使用该值。

典型用法

经过上面的安装并重启 DSH 后:

  1. 打开 设置 → 通用,找到对话显示区域宽度相关行(插件注册在 settings.general.item 插槽,order: 18)。
  2. 用滑块或数字框在 640–1600px 内调节,或点 920 / 1100 / 1280 预设。
  3. 若希望回到宿主默认的自适应宽度,使用「恢复自适应」,会删除 dsh.conversation.contentWidth。
  4. 与拖拽对话区边缘混用时,两者读写同一 key,应始终保持一致。

插件管理卡片标题默认显示包名 dsh-conversation-width;副标题来自 locale/en.json、locale/zh.json 中的 meta.description,随界面语言切换。

适用场景与注意

适合经常在 ultrawide 或大屏上使用 DSH Web 客户端、希望用数值或预设统一对话栏宽度、又不想依赖边缘拖拽的用户。

安装前请注意:

  • 插件以当前 DSH 进程权限在浏览器侧运行,会读写 localStorage 并操作 DOM/CSS 变量;启用前应自行查看 GitHub 源码 与 MIT 许可证。
  • 仅声明支持 dsh 0.2.0-rc.2 至 0.3.0 之前;更高版本需等维护者更新 engines.dsh 后再评估。
  • 社区目录 SkillHub 插件页 与 GitHub 由社区维护,与 DeepSeek / 幻方无官方从属关系;星标数会变动,以仓库页为准。

结尾

dsh-conversation-width 没有引入第二套宽度体系,只是把 Conversation 已有的宽度偏好搬到 设置 → 通用,并与拖拽手柄、宿主 clamp 对齐。若你需要在宽屏上稳定控制 transcript 栏位宽度,可按 README 的 profile link 方式安装,并在改完后重启宿主。

  • 目录页:https://www.skillhub.cn/plugins/ElioFanyu/dsh-conversation-width
  • 仓库:https://github.com/ElioFanyu/dsh-conversation-width
羽毛球分组比赛记分
小程序二维码

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

小夜