dsh-wide-stats-footer:移除 DeepSeek Harness 编写器统计页脚的宽度限制

前言

DeepSeek Harness (DSH) 的插件系统允许对客户端进行扩展。在 Web 配置文件下,编写器底部的统计行(StatsLine)默认受到 CSS 模块规则的宽度限制。当在宽屏设备上使用时,较长的统计信息会被截断,仅显示部分内容,这影响了信息的完整展示。

dsh-wide-stats-footer 插件旨在解决这一显示问题,它通过运行时动态发现 CSS 模块哈希,并应用精确的 CSS 覆盖规则,移除了统计页脚的宽度限制,使其能够跨越完整的编写器宽度并居中显示。

插件简介

  • 名称:dsh-wide-stats-footer
  • 所有者:thomasvvugt
  • 类别:客户端
  • 许可证:MIT

该插件的核心功能包括:
1. 移除编写器统计页脚的宽度限制。
2. 使统计行跨越完整的编写器宽度并居中显示。
3. 解决宽屏上长统计行被截断的问题。
4. 通过 CSS 覆盖精确调整宽度限制和水平内边距。
5. 运行时动态发现 CSS 模块哈希以适应 DSH 构建。
6. 降级为静默无操作以防破坏 UI。
7. 零 npm 依赖且无安装脚本。

安装与启用

安装此插件需要使用 DSH 的 CLI 工具。

  1. 执行以下命令安装插件:
    dsh plugin --profile web add github:thomasvvugt/dsh-wide-stats-footer
  1. 安装完成后重启 dsh web。

  2. 确认插件已加载,运行配置转储命令并查找 dsh-wide-stats-footer 层:

    dsh --profile web --dump-config
  1. 若需固定版本(例如 v0.1.0),可指定版本号:
    dsh plugin --profile web add github:thomasvvugt/dsh-wide-stats-footer#v0.1.0

工作原理

DSH 使用 CSS 模块机制生成带有哈希前缀的类名(例如 .{hash}_root)。由于构建过程中哈希会发生变化,硬编码 CSS 选择器是不可行的。

插件在运行时通过以下方式动态定位目标元素:
1. 扫描 document.styleSheets,查找统计行分隔符规则(通常包含 .{hash}_sep)。
2. 验证其兄弟元素 .{hash}_root 是否声明了 max-width: var(--dsh-chat-content-width) 限制。
3. 通过 MutationObserver 监听 DOM 和 <style> 标签的变化,在 DSH 重新构建或切换主题时重新执行发现逻辑。

一旦发现目标,插件会注入一条 CSS 规则:

.{hash}_root.{hash}_root { max-width: none; padding-left: 0; padding-right: 0; }

该规则使用了双类选择器,将特异性提升至 (0,2,0),从而覆盖 DSH 原始规则 (0,1,0) 的限制。同时保留 text-align: center 和 width: 100%,确保页脚在容器内居中。

如果未来 DSH 的标记或结构发生改变导致发现失败,插件会自动降级为静默无操作,确保不会破坏原有 UI。

诊断与故障排查

插件提供全局诊断对象 window.__WIDE_STATS_FOOTER__ 供开发者检查状态。在浏览器开发者工具控制台中查看该对象:

{ appliedAt, styleHash, domHash, overrideChars, inlineFixed, lastSyncAt }

常见问题排查:

  1. 页脚仍被截断:

    • 检查 styleHash 和 domHash。如果两者均为 null,说明哈希发现失败,可能是 DSH 版本更新导致标记结构变化,插件已降级为静默无操作。
    • 检查 overrideChars。如果为 0,说明覆盖规则未生效。
    • 检查 appliedAt。如果为 null,说明插件未运行,请确认已重启 dsh web 且 dsh --dump-config 中包含该层。
  2. 更新后失效:

    • 如果仅在 DSH 更新后失效,通常是 CSS 模块哈希旋转。插件支持运行时重新发现,但若标记结构改变,则需降级。

注意事项

  • 客户端插件:该插件仅作用于客户端,无主机端行为或配置项。
  • 版本兼容:基于 DSH 0.1.1-rc.2 构建。
  • 性能影响:插件不会减慢应用速度。发现逻辑仅在启动时运行,且 MutationObserver 仅在 DOM/Style 变化时触发,无轮询。
  • 主题兼容性:插件使用双类特异性 (0,2,0),可覆盖 DSH 原始规则。若自定义主题使用了同等或更高的特异性覆盖该样式,则主题优先,这是符合预期的行为。

结语

dsh-wide-stats-footer 为开发者提供了一种低成本的方式来修复 DSH 客户端在宽屏下的统计信息显示问题。通过动态 CSS 发现机制,它保证了在 DSH 版本更新下的兼容性。

该插件可在 SkillHub 插件目录 查看,源码位于 GitHub。

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

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

小夜