dsh-status-flair:为 DSH Web 聊天定制运行状态行

前言

在 DSH(DeepSeek Harness)的 Web 对话界面里,模型仍在处理请求时,聊天区会显示一行运行状态,例如「深度求索中,用时 7秒 ···」。这行字连着配色、字号、图标和扫光动画,都来自官方客户端组件与主题变量。

若只想换一句提示文案,或统一成自己的视觉风格,直接改 DSH 安装目录或 fork 聊天组件成本高,且升级宿主时容易冲突。社区插件 dsh-status-flair(维护者 AkotaP)走另一条路:不重写聊天组件,用 CSS 覆盖外观、用一层 locale.translate 包装替换文案,并保留「完全沿用 DSH 自带」的默认项。本文介绍其定位、能力与安装用法;事实以 GitHub 仓库 README 与 SkillHub 目录页 为准。

这是什么

dsh-status-flair 是面向 DSH Web 端的运行状态装扮插件,分类为「趣味换装」。它针对对话里那条运行状态(文案、颜色、字号、图标、扫光节奏),提供预设驱动的配置与切换策略;外观层与文案层相互独立,可分别固定或随机。内置 Default 哨兵项会直接使用 DSH 官方样式与 chat.deepDiving / chat.deepDivingFor 文案,不复制官方素材,宿主升级后默认表现可随官方变化。

当前 README 标明插件版本 0.4.0(未发布);package.json 中 engines.dsh 要求 >= 0.2.1-rc.2,许可证为 MIT。

它改的是什么

插件对照 DSH 0.2.1-rc.2 中运行行的几个来源做了分层处理,摘要如下。

层 官方来源 本插件做法
文案 chat.deepDiving / chat.deepDivingFor 包装 locale.translate,只拦截这两个 key
颜色 .running 与 --dsw-alias-label-deep-diving 在 [data-chat-running] 上重设颜色与扫光变量
字号 .running 的 font-size 覆盖字号,图标尺寸跟随
图标 官方 APNG 遮罩 + 静态 SVG 用遮罩绘制预设图标(内置 SVG / 官方鲸鱼 / 自定义 SVG·PNG)
扫光 TextShimmer 关键帧 覆盖 animation-duration / play-state;0ms 可关闭

实现上只依赖稳定 DOM 钩子(如 [data-chat-running]、[data-shimmer]),不使用构建期哈希类名。

核心功能

外观预设与文案预设

  • 外观预设(Look):颜色、字号、图标、扫光节奏;预设本身不保存「是否随机」。
  • 文案预设(TextPreset):一组候选句子;同样不内嵌随机策略。
  • 选择策略(selection):外观可固定某一预设或从候选中随机;文案先固定或随机选一组,再在组内按「第一条 / 随机 / 顺序轮换」取一句。两层可独立随机。

切换时机由全局 triggers 控制:默认每轮对话重新抽取;也可按固定或随机时间间隔、每 N 步重新抽取。关闭某层「每轮触发」后,该层保留上次选择,直到其它触发条件满足。

出厂配置带三套外观预设(如暖金色、梦幻紫、终端绿等,界面随 zh / en 翻译),不带文案组;首次运行文案由官方运行行提供,需要时再新建文案预设。

默认项:DSH 自带

外观或文案选 default(UI 中为「默认(DSH 自带)」)时:

  • 外观:不设插件 CSS 变量、不挂 <html> 标记,运行行完全由 DSH 渲染。
  • 文案:translate 原样放行,显示官方 chat.deepDivingFor。

该 id 不占自定义预设槽位,插件不复制官方配色、鲸鱼或文案。

文案占位符

文案可使用 DSH 原生模板语法,例如 {duration} 会替换为宿主计算的用时(如 7秒 / 7s,随界面语言),其它 {name} 原样保留。示例:正在深度求索 {duration}。

事件策略(0.3.0 起)

除全局选择外,可配置事件规则与分组:按 DSH 活动类别(thinking、read、search、write 等 14 类)、工具结果短暂提示(tool-error / tool-success),以及无工具时的输出阶段(builtin:waiting / builtin:thinking / builtin:responding)匹配规则,为不同场景指定外观与文案选择。规则按列表顺序取首条有效匹配;总开关默认关闭,新配置可带四条可编辑入门规则(外观与文案均固定为 default)。

事件处理使用当前主会话已有共享事件源,不额外订阅会话;minRefreshMs 默认 3000ms,控制事件驱动切换的最小刷新间隔。

配置与持久化(0.4.0)

大块配置迁入插件独立文件:开发版通过认证接口保存到 <profile-dir>/dsh-status-flair/settings.json,支持页内草稿、显式「保存修改」、配置备份与导入。0.4.0 起实际 profile 不会自动迁移旧块,需参阅仓库内迁移说明。设置入口:设置 → 插件 → 状态装扮。

界面提供启用开关、两层策略、实时预览、预设的新建/编辑/复制/删除,以及自定义图标(内置 SVG、粘贴 SVG、上传透明 PNG;可选「鲸鱼(DSH 原生动画)」从宿主样式表读取官方 APNG 遮罩)。

安装与启用

安装会改动 %USERPROFILE%\.dsh(Linux 下为对应用户目录)下的 profile 配置,并需要重启 DSH(会打断正在运行的会话)。插件以当前 DSH 进程权限运行,安装前请自行查看仓库源码与 MIT 许可证。

方式一:插件页

侧边栏「插件」→「添加插件」,填入仓库地址:

https://github.com/AkotaP/dsh-status-flair

DSH 会用 git ls-remote 探测仓库后交给 pnpm 安装;装完后在列表中确认插件为启用状态。发布到 npm 后同一输入框也可填包名 dsh-status-flair。

方式二:命令行(desktop profile)

dsh plugin --profile desktop add https://github.com/AkotaP/dsh-status-flair

npm 发布后等价写法:

dsh plugin --profile desktop add dsh-status-flair

装好后重启 DSH,在插件页打开「状态装扮」配置面板。卸载可在插件页操作,或:

dsh plugin --profile desktop remove dsh-status-flair

并确认 profile 的 dsh.profile.bundles 中已移除该项。

典型用法

  1. 安装并重启后,进入 设置 → 插件 → 状态装扮,打开启用开关。
  2. 在「默认选择」中配置外观与文案策略:例如外观固定「终端绿」,文案随机某一组并在组内顺序轮换;预览区的 ★ 标在当前预览实际抽中的项上。
  3. 新建文案预设,写入带 {duration} 的句子,保存修改后发起一轮对话,观察运行行是否按预期更新。
  4. 若需按工具活动切换样式,切换到「事件规则与分组」,配置分组与规则优先级,开启事件规则总开关并保存(入门规则默认仍使用 DSH 自带外观与文案,可按需展开修改)。

编辑先进入页内草稿并即时作用于预览;只有点击「保存修改」才写入 settings.json,「放弃修改」或离开页面会撤回未保存改动。

适用场景与注意

  • 适合:长期使用 DSH Web 聊天、希望统一运行状态文案与视觉、或按读文件/搜索/回复等阶段显示不同提示,又不想改宿主源码的开发者。
  • 注意:依赖 DSH >= 0.2.1-rc.2 与 Web 客户端注入点;鲸鱼 APNG 的摆动速度由素材决定,CSS 无法改写,需自定义动画时可上传自己的 PNG 或 SVG。
  • 生态:DSH 奉行「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-status-flair 在不动聊天组件核心的前提下,把运行状态拆成可配置的外观层与文案层,并可选事件驱动规则;默认项与 DSH 官方行为对齐,便于在「完全官方」与「完全自定义」之间取舍。

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

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

小夜