Back to home

fly-fish76

dsh-width-control

Adjustable chat text-column & composer width for DeepSeek Harness (DSH) web UI — collapsible chip, independent sliders, remembers your settings across restarts

Stars
1
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

DSH Web 宽度调节插件 · dsh-width-control

在 DeepSeek Harness (DSH) Web 界面的输入框工具行添加一个可折叠的「宽度」控件—— 独立调节消息文本列与输入框的显示宽度,并记忆上次参数,重启 DSH 后自动恢复。

✨ 特性

  • 🎛️ 一个紧凑的折叠式 chip(⇔ 宽度 748px ▾)挂在输入框工具行左端,点击弹出面板(与权限选择器同款形态,锚定在 chip 正上方)
  • 📐 文本列宽度输入框宽度两个滑杆完全独立(400–1160px,步长 20)
  • 🔗 「输入框跟随文本列(+32px)」联动开关,一键恢复旧版同步行为
  • 📌 面板以视口固定定位打开——拖动宽度时面板纹丝不动
  • 💾 localStorage 记忆上次的文本/输入框宽度与联动状态,下次打开直接恢复
  • 📊 回复中的表格自动水平居中,表头与单元格文字居中显示
  • 🔄 持久化注册进 DSH 的 cordis.patch.yml,每次启动自动加载,无需手动启用

🖼️ 截图

宽度调节面板

在输入框工具行点击 ⇔ 宽度 …px ▾ 展开面板,即可分别调节文本列与输入框宽度。

⚙️ 工作原理

DSH Web 的消息文本列宽度由 CSS 变量 --dsh-chat-content-width(默认 748px)控制, 输入框卡片宽度由 --dsh-composer-card-max-width(默认 calc(文本宽度 + 32px))控制, 两者都定义在对话根容器上。

本插件通过浏览器 bundle(由 DSH 的 client-modules 机制服务)在稳定的产品属性 [data-conversation-scroll] 上覆盖这两个变量,从而独立调控两块宽度——不依赖任何 打包哈希类名,产品升级也不易失效。

📦 安装

前置条件:已安装 DSH(Web 配置),Windows + PowerShell 5.1+(其他平台见下方手动安装)。

# 1. 克隆仓库(任意位置,比如 DSH 目录旁)
git clone https://github.com/fly-fish76/dsh-width-control.git
cd dsh-width-control

# 2. 一键安装(自动创建 node_modules 链接 + 写入 cordis.patch.yml)
.\install.ps1

# 3. 重启 dsh

重启后刷新浏览器页面,输入框工具行左端即可看到 ⇔ 宽度 748px ▾

手动安装(非 Windows / 不想用脚本)

假设 DSH web profile 目录为 ~/.dsh/profiles/web:

# 1. 把插件源码放到 profile 的 plugins 目录
mkdir -p ~/.dsh/profiles/web/plugins
cp -r <本仓库> ~/.dsh/profiles/web/plugins/width-control

# 2. 让 Node 能在 profile 的 node_modules 里解析到它
ln -s ../plugins/width-control ~/.dsh/profiles/web/node_modules/@local/width-control

# 3. 在 ~/.dsh/profiles/web/cordis.patch.yml 追加(保留原有内容):
- insert:
    - id: width-control
      name: '@local/width-control'
# 4. 重启 dsh

Linux/macOS 注意:软链接指向的 exports["./client"]require.resolve 均在 Node 层面按真实路径解析,符号链接同样可用。

🎮 使用

  1. 点击工具行的 ⇔ 宽度 …px ▾ chip,面板出现在 chip 正上方
  2. 拖动文本列宽度滑杆 → 只影响消息文本列;拖动输入框宽度滑杆 → 只影响输入框
  3. 勾选 输入框跟随文本列(+32px) 恢复联动(此时输入框滑杆禁用)
  4. 每行的 恢复该行默认值(748 / 780);调整即时生效并自动记忆
  5. 再点 chip(或直接关闭面板)折叠

🛠️ 自定义

所有可调常量在 lib/client.js 顶部:

常量默认含义
DEFAULT_TEXT748文本列默认宽度 (px)
DEFAULT_INPUT780输入框默认宽度 (px)
MIN / MAX400 / 1160滑杆范围 (px)
STEP20滑杆步长 (px)
STORAGE_KEYdsh.width-control.v1记忆存储键

改完 lib/client.js 后强刷浏览器页面(Ctrl+Shift+R)即可生效,无需改台账。

🗑️ 卸载

.\uninstall.ps1     # 移除 node_modules 链接 + 从 cordis.patch.yml 删除注册行

或手动:删除 node_modules/@local/width-control 链接与 cordis.patch.yml 中的 - insert: 块。全部移除后重启 dsh。

📄 许可

MIT