前言¶
在 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 中已移除该项。
典型用法¶
- 安装并重启后,进入 设置 → 插件 → 状态装扮,打开启用开关。
- 在「默认选择」中配置外观与文案策略:例如外观固定「终端绿」,文案随机某一组并在组内顺序轮换;预览区的 ★ 标在当前预览实际抽中的项上。
- 新建文案预设,写入带
{duration}的句子,保存修改后发起一轮对话,观察运行行是否按预期更新。 - 若需按工具活动切换样式,切换到「事件规则与分组」,配置分组与规则优先级,开启事件规则总开关并保存(入门规则默认仍使用 DSH 自带外观与文案,可按需展开修改)。
编辑先进入页内草稿并即时作用于预览;只有点击「保存修改」才写入 settings.json,「放弃修改」或离开页面会撤回未保存改动。
适用场景与注意¶
- 适合:长期使用 DSH Web 聊天、希望统一运行状态文案与视觉、或按读文件/搜索/回复等阶段显示不同提示,又不想改宿主源码的开发者。
- 注意:依赖 DSH >= 0.2.1-rc.2 与 Web 客户端注入点;鲸鱼 APNG 的摆动速度由素材决定,CSS 无法改写,需自定义动画时可上传自己的 PNG 或 SVG。
- 生态:DSH 奉行「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-status-flair 在不动聊天组件核心的前提下,把运行状态拆成可配置的外观层与文案层,并可选事件驱动规则;默认项与 DSH 官方行为对齐,便于在「完全官方」与「完全自定义」之间取舍。