前言¶
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.0dsh.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 列表,然后 重启宿主(刷新页面不够:客户端模块图在启动时快照)。
- 将仓库放到固定目录后,编辑 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" ]
}
}
- 让
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 后:
- 打开 设置 → 通用,找到对话显示区域宽度相关行(插件注册在
settings.general.item插槽,order: 18)。 - 用滑块或数字框在 640–1600px 内调节,或点 920 / 1100 / 1280 预设。
- 若希望回到宿主默认的自适应宽度,使用「恢复自适应」,会删除
dsh.conversation.contentWidth。 - 与拖拽对话区边缘混用时,两者读写同一 key,应始终保持一致。
插件管理卡片标题默认显示包名 dsh-conversation-width;副标题来自 locale/en.json、locale/zh.json 中的 meta.description,随界面语言切换。
适用场景与注意¶
适合经常在 ultrawide 或大屏上使用 DSH Web 客户端、希望用数值或预设统一对话栏宽度、又不想依赖边缘拖拽的用户。
安装前请注意:
- 插件以当前 DSH 进程权限在浏览器侧运行,会读写
localStorage并操作 DOM/CSS 变量;启用前应自行查看 GitHub 源码 与 MIT 许可证。 - 仅声明支持
dsh0.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