dsh-chat-width

by AnakinCao

0 会话与消息github 检测到 manifest package.json#dsh收录于 08-16

DSH Web GUI 主编辑区域自适应宽度插件:左右面板折叠后中间区域随分辨率(1080p/2K/4K)自适应变宽 (inject CSS overriding --dsh-chat-content-width)

安装

dsh plugin --profile web add github:AnakinCao/dsh-chat-width

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English: README.md

DSH(DeepSeek Harness)Web GUI 主编辑区域(对话区内容列)自适应宽度插件。

作用

DSH 的聊天内容列默认被写死为 748px 宽(--dsh-chat-content-width: 748px), 因此左右面板都折叠后,中间区域依然很窄、两边大量留白。

本插件在浏览器端注入一段 CSS,把内容列改为 min(100%, 自适应上限):

  • 面板展开 → 内容列恰好填满中间列,不浪费空间;
  • 左右折叠 → 内容列随当前屏幕/窗口分辨率自动变宽,最高不超过上限;
  • 历史用户消息气泡同样跟随内容列宽度(覆盖其默认 525px 上限);
  • 输入框下方的统计行(live-stats 的 TPS/耗时合并行)同样跟随内容列宽度(覆盖其默认 620px 上限)。

自适应规则(默认)

内容列宽度 = min(100%, clamp(900px, 72vw, 2560px))

即宽度 = 视口宽度的 72%,夹在 900px ~ 2560px 之间。窗口大小变化实时跟随,无需刷新:

视口(分辨率) 内容列宽度
1366×768 ≈983px
1920×1080 ≈1382px
2560×1440 ≈1843px
3840×2160 2560px(上限)

安装

方式一:一条命令(推荐)

dsh plugin --profile web add https://github.com/AnakinCao/dsh-chat-width.git

然后重启 dsh web 即可(重启后插件自动挂载,无需其他配置)。

方式二:免重启手动挂载

  1. 把本仓库内容放到 ~/.dsh/profiles/web/node_modules/dsh-chat-width/ 目录;
  2. 在 ~/.dsh/profiles/web/cordis.patch.yml 末尾追加:
- insert:
    - id: dsh-chat-width
      name: 'dsh-chat-width'
  1. 刷新一次页面即生效(profile 补丁层由 HMR 热重载,无需重启服务)。

⚠️ 两种方式二选一,不要重复挂载(会插入两个同名 entry)。

调整参数

编辑插件 lib/client.js 顶部的三个常量,保存后 HMR 约 0.5 秒自动生效(无需重启、无需刷新):

常量 默认值 说明
ADAPTIVE_RATIO 0.72 最大宽度占视口宽度的比例,想更宽调大(如 0.8)
MIN_WIDTH "900px" 下限(窄窗口也不低于此值,除非中间列本身更窄)
MAX_CAP "2560px" 上限(4K 及以上觉得不够宽就调大,如 "3200px")

手动固定宽度(可选)

不想用自适应公式时,在浏览器控制台执行:

localStorage.setItem('dsh-chat-width.max', '1920px')  // 固定 1920px,刷新页面生效
localStorage.removeItem('dsh-chat-width.max')          // 恢复自适应

页面加载时会打印一行日志(含当前视口尺寸和生效的宽度规则),可在控制台确认:

[dsh-chat-width] 视口 1920×1040 → 内容列宽度规则: min(100%, clamp(900px, 72vw, 2560px))

卸载

  • 方式一安装:dsh plugin --profile web remove dsh-chat-width,然后重启 dsh web;
  • 方式二安装:删除 cordis.patch.yml 里的 insert 条目,删除 ~/.dsh/profiles/web/node_modules/dsh-chat-width/ 目录,刷新页面。

兼容性

  • 需要 DSH 0.1.0-rc.6 及以上的 web profile 客户端插件系统(dsh web, window.__ModuleLoader__ bundle 格式)。
  • 样式覆盖选择器使用对话根元素的稳定属性 [data-phase](双写提高特异性), 即使 conversation 包升级、CSS module 哈希类名变化,覆盖依然生效。
  • 升级 dsh:插件位于用户 profile(~/.dsh),npm 包升级不会覆盖,可持续生效。 注意:若执行过 dsh plugin 触发 pnpm 重装,node_modules 可能被整理而移除插件目录, 重新放置目录并保留补丁条目即可恢复。

实现说明

  • 浏览器端 bundle(lib/client.js)在模块物化时注入 <style data-plugin="dsh-chat-width">, 与官方插件的样式注入方式一致;HMR 热重载时会先移除旧样式再重新注入。
  • 宿主侧(lib/index.js)为空插件,仅为 loader entry 挂载提供有效的 package main, 让 client-modules 能识别并下发客户端 bundle。
  • 本机网络若出现 TLS 握手失败(Windows schannel 被网络层拦截), 可在仓库内执行 git config http.sslBackend openssl 解决。

License

MIT

原始 README: https://github.com/AnakinCao/dsh-chat-width/blob/main/README.zh.md ↗