dsh-chat-typography:统一 DSH Harness 对话流排版

前言

在 DSH Harness 里读长对话时,字号阶梯、段落边距和消息间距往往来自多套互不关联的规则:同一段里换行、段与段之间、两条消息之间,视觉上像是三种不同的「步长」。外观页可以改主题里的字号和字体族,但很难把纵向节奏收成一条网格,也不好单独收窄对话列相对窗口两侧的留白。下面介绍社区客户端插件 dsh-chat-typography(维护者 zheshiyigehenchang),它在 Harness 设置里增加一页「对话流排版」,用少量控件覆盖字号、三种角色字体、行距倍率与左右留白,并附带几处固定的紧凑化样式。

这是什么

dsh-chat-typography(npm 包名 @zheshiyigehenchang/dsh-chat-typography,当前版本 1.1.4,MIT 许可)是面向 DSH Harness Web 客户端的排版插件,分类为客户端。装好后,「设置」导航中会出现 对话流排版;改动在浏览器侧生效,刷新页面即可,无需重启 Harness。

插件不跑在服务端:它以当前 DSH 进程所加载的客户端 bundle 形式注入样式与设置页。安装前建议在 GitHub 仓库 查看源码与许可证,并知悉其对宿主内部选择器与 CSS 变量的依赖(大版本升级可能导致某一层失效)。

核心功能

字号:一个值管全文

宿主对话流里标题、正文、次要文字、行内代码、代码块等各有固定字号阶梯。本插件在 [data-chat-flow] 内(排除 textarea、input 与 svg)把可见文字统一为同一个字号,范围 10–22px,默认 14px(与宿主默认一致)。字重与字体族不变:标题仍加粗,代码仍等宽。

该值写入 Harness 主题设置,与「外观」页共用同一份数据——任一侧修改,另一侧同步显示。

字体:文字 / 代码 / 终端

三个文本框分别设置 text、code、terminal 的字体族;留空表示系统默认。输入无需手写引号,主题服务会做清洗。同样与「外观」页双向同步。若主题服务未暴露 setFontFamily,字体分组会自动隐藏,其余功能仍可用。

行距与间距:一条纵向网格

插件把宿主三处纵向间隔(行盒 line-height、markdown 块边距、--dsh-chat-flow-gap)收敛为同一套规则:

  • 行盒按字号与倍率联动,并保证不小于当前字号。
  • 段落、列表、引用、标题等 markdown 文本块外边距归零,段内换行与段间换行步长一致。
  • --dsh-chat-flow-gap 归零,消息之间、正文与工具行之间也只隔一个行盒。
  • 代码块、表格、分隔线保留 16px × 倍率 的上下边距,避免边框或底色与正文贴死。

倍率范围 0.80–2.00,步进 0.05,默认 1.00;存放在 localStorage 键 dsh-chat-typography.lineHeight。倍率为 1.00 时仍使用这条统一网格,不会退回宿主原先参差的间距。

左右留白

数字框设置对话文字距窗口左右边缘的距离(0–600px),留空则使用宿主默认列宽逻辑(原约为 clamp(680px, 视口宽 × 0.64, 920px))。实现上覆写 --dsh-chat-content-width,对话列、输入框卡片、用户气泡与宽表格一并收窄并对齐。填写数值后,宿主「拖宽」手柄不再生效;填 0 时仍受输入框两侧预留间隙约束,不会小于约 32px 的下限。值存放在 localStorage 键 dsh-chat-typography.gutter。

固定收紧(无开关)

与倍率无关、不可单独关闭的紧凑化包括:无标签行时对话标题栏上下留白减半;代码块 <pre> 内边距由 16px 改为 8px;表格单元格内边距收紧并还原宿主首末列贴齐;行内代码去掉药丸底色与描边,避免普通代码与文件提及样式不一致。多标签会话标题栏在有标签行时仍保持宿主 76px 下限,避免与标签行重叠。

恢复默认

一键将字号恢复为默认组合(14 / 11 / 13)、清空三个字体族、行距回 1.00、左右留白清空。

设置项一览

设置项 控件 范围与默认 存放位置
字号 数字框 10–22px,默认 14 Harness 主题设置(与「外观」共用)
字体 · 文字 / 代码 / 终端 文本框 留空 = 系统默认 同上
行距 数字框 0.80–2.00,步进 0.05,默认 1.00 localStorage dsh-chat-typography.lineHeight
左右留白 数字框 0–600px,留空 = 宿主默认 localStorage dsh-chat-typography.gutter

数字框在回车或失焦时提交;非法输入会退回原值。

安装与启用

在 Harness 插件管理器中安装,target 传包名:

@zheshiyigehenchang/dsh-chat-typography

安装完成后刷新页面。打开设置,导航里应出现「对话流排版」。README 亦说明可从本地源码目录以 link: 方式链接开发,改 client.js 后刷新即可验证;日常使用以管理器安装包名为准。

插件通过社区目录 SkillHub 条目 可检索到元信息;该站点为社区插件目录,与 DeepSeek / 幻方无官方从属关系。

典型用法

  1. 安装并刷新后,进入 设置 → 对话流排版。
  2. 若长对话显得挤或散,先调 字号(例如 15–16px),再调 行距 倍率(例如 1.05–1.15),观察段内与消息间是否同一步长。
  3. 宽屏两侧空白过大时,在 左右留白 填入目标像素值,使阅读列收窄;留空则恢复宿主默认宽度行为。
  4. 需要与外观页一致时,可在任一侧改字号或字体,另一侧会同步。
  5. 试玩后点 恢复默认 回到插件与主题约定的初始组合。

适用场景与注意

适合谁:经常在 Harness 里阅读或校对长对话、希望纵向节奏一致、或希望收窄对话列的开发者与用户。

权限与信任:插件仅在客户端注入 CSS 与设置 UI,不自行发起网络请求;仍以你当前 DSH 安装与 profile 为信任边界,安装前请阅读仓库源码。

兼容性:强依赖 [data-chat-flow]、--dsh-chat-flow-gap、--dsh-chat-content-width 及 markdown 相关 CSS Modules 类名片段;dsh-client-ui-chat、dsh-client-ui-primitives 大版本变更可能导致部分层失效。标题栏收紧依赖 :has()(Chromium 105+ / Safari 15.4+)。单行工具行、展开步骤标题等高度不随行距伸缩。去掉行内代码底色后,行内代码仅靠字形与正文区分。

结尾

dsh-chat-typography 把对话流的字号、字体、纵向网格与左右留白收到一页设置里,并与 Harness 外观主题共享字号与字体数据。需要进一步了解实现细节或提交 issue,可访问 GitHub:zheshiyigehenchang/dsh-chat-typography;在生态里检索同一插件可打开 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

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

小夜