dsh-chat-width
by AnakinCao
DSH Web GUI 主编辑区域自适应宽度插件:左右面板折叠后中间区域随分辨率(1080p/2K/4K)自适应变宽 (inject CSS overriding --dsh-chat-content-width)
安装
dsh plugin --profile web add github:AnakinCao/dsh-chat-widthGitHub 源码安装:首次需按提示配置 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 即可(重启后插件自动挂载,无需其他配置)。
方式二:免重启手动挂载
- 把本仓库内容放到
~/.dsh/profiles/web/node_modules/dsh-chat-width/目录; - 在
~/.dsh/profiles/web/cordis.patch.yml末尾追加:
- insert:
- id: dsh-chat-width
name: 'dsh-chat-width'
- 刷新一次页面即生效(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 ↗
同类插件
查看全部 →
archify
Agent 技能:生成美观、可校验的架构图、工作流图、时序图、数据流图与生命周期图——自包含 HTML、带动画与清晰导出

dsh-turn-rewind
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。

dsh-plugin-cc
把 DeepSeek Harness 接入 Claude Code:评审、批评、委派与会话导入

dsh-interconnect
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。

dsh-chat-import
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。

dsh-crew
DSH 插件:从 Claude Code / Codex 向 DSH agent 派活——原生 subagent 进度、宿主内 worker 会话(分级预设),以及为纯文本宿主补上视觉与图像生成的多模态桥