前言¶
DSH Web 界面里,动画、毛玻璃、阴影和渐变分散在 CSS 与 JS 各处。系统自带的「减少动态效果」只能走一条总路径,没法单独保留进度条动画、又关掉侧栏标题 hover 滚动这类细粒度需求。长时间开着 Web 客户端时,这些特效也会持续占用浏览器合成与绘制资源。
下面介绍社区插件 dsh-reduce-effects(维护者 azazo1):在插件页提供配置卡片,按分类开关特效,默认与原生 DSH 一致,关掉哪一项就停哪一项,另有一个总闸可一次关闭全部。
这是什么¶
dsh-reduce-effects 是 DeepSeek Harness(DSH)的 客户端(Web) 插件:给 DSH Web 前端增加插件页配置卡片,用来关闭动画、毛玻璃、阴影、渐变等特效,降低浏览器渲染负担。
前端特效在 DSH 里大致分三类:CSS 动画与过渡、菜单与浮层的毛玻璃、以及 DSH 自带的 JS 动效(平滑翻页、跟随滚动等;仅在系统开启「减少动态效果」时走即时路径)。本插件把这些拆成多个分类,每个分类一个开关;web 与 desktop 两个 profile 跑同一套 Web 应用,同一份包在两边通用。
插件以当前 DSH 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证。社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系。
核心功能¶
配置卡片与总闸¶
打开 插件 > dsh-reduce-effects 卡片。卡片内有一个总闸和一组分类开关;草稿只留在卡片里,点击「保存」才写入当前 profile 的 patch 层并立即生效。所有开关默认打开,界面与未装插件时一致。
总闸只决定各分类是否生效,不改写各分类自己的值:关闭总闸时,分类开关变灰并保留原值;重新打开总闸后,分类立刻回到原来的状态。
分类开关(关闭后会失去的效果)¶
| 开关 | 关掉之后 | 代价 |
|---|---|---|
| 全部特效 | 一次停掉下面每个分类 | 分项开关保留各自的值,但重新打开总闸前不可点 |
| 动画与过渡 | 装饰性动画停掉,过渡压缩到 1 毫秒 | 入场动画直接落到终态 |
| 加载与进度动画 | 进度条与加载指示器的旋转、脉冲 | 界面看起来像卡住,看不出是否仍在运行 |
| 文字流光 | 运行中节点文字扫动高光,以及思考行与技能行整行扫光 | 运行中节点只剩静止文字;关「渐变背景」或「动画与过渡」也会顺带收掉这两道光 |
| 毛玻璃与背景模糊 | 菜单、浮层的 backdrop blur | 半透明面板后直接露出背后内容 |
| 平滑滚动 | 滚动与跳转的缓动 | 长列表跳转更生硬 |
| 标题 hover 滚动 | 侧栏会话标题悬停时的逐帧横向拖动 | 被省略的标题只能靠悬停卡片或改名看全 |
| 阴影与超椭圆圆角 | 面板阴影、文字阴影、超椭圆圆角 | 面板 0.5px 描边由阴影绘制,边界会变淡 |
| 渐变背景 | 渐变底纹 | 与图片共用的 background-image 装饰也会消失;渐变文字退回当前文字色;会话底部渐隐底板退回纯主题底色 |
| JS 动效 | DSH 自带 JS 动效的即时路径 | 影响所有读取 prefers-reduced-motion 的代码(含其他插件) |
想单独保留进度条动画时,只要不关「加载与进度动画」即可。
实现要点(便于理解行为)¶
- 样式覆盖:组件类名是构建期哈希的,覆盖规则用通用选择器加
!important,注入带data-plugin-css的<style>,卸载时移除。 - 过渡:时长压到 1 毫秒而非删除,仍触发
transitionend,依赖它收尾的逻辑不受影响。 - 动画:部分场景用
document.getAnimations()与animationstart按关键帧名筛选;加载类与装饰类可分开控制。 - JS 动效:关闭时覆盖
window.matchMedia,让prefers-reduced-motion查询返回 reduce;打开或卸载时恢复。
配置为 volatile 的插件 Config,entry id 为 dsh-reduce-effects,落在 profile 的 patch 层。
安装与启用¶
引擎要求 @deepseek-ai/dsh-* 不低于 0.2.0-rc.1,且仍在 0.2.x(peerDependencies:>=0.2.0-rc.1 <0.3.0)。更早的引擎线装不上当前版本。
Web 端(web profile)¶
任选一种安装方式:
dsh plugin --profile web add azazo1/dsh-reduce-effects
npm 包名:
dsh plugin --profile web add dsh-reduce-effects
固定版本(README 示例):
dsh plugin --profile web add azazo1/dsh-reduce-effects#v0.1.1
GitHub Release 预构建包(安装时跳过 allowBuilds):
dsh plugin --profile web add https://github.com/azazo1/dsh-reduce-effects/releases/latest/download/dsh-reduce-effects.tgz
本地目录:
dsh plugin --profile web add ./dsh-reduce-effects
装完后重启 dsh web,浏览器刷新一次页面。
桌面端(desktop profile)¶
Electron 应用独占管理 desktop profile,dsh plugin 会拒绝 --profile desktop。在应用内插件管理器的安装入口填写上面对应的包名或 tarball 地址;装上后重启应用并刷新窗口。
典型用法¶
- 按上一节命令安装并重启 Web 或桌面客户端。
- 打开 插件,进入 dsh-reduce-effects 配置卡片。
- 按需关闭分类开关,或先关「全部特效」再逐项微调(总闸关闭时分项不可点,打开总闸后分项恢复关闭前的值)。
- 点击 保存,配置写入当前 profile 并立即生效。
若关闭了「JS 动效」,已渲染的界面有时需要再刷新一次才能完全对齐。
适用场景与注意¶
适合谁
- 希望在低配机器或远程桌面里减轻 DSH Web 合成开销的开发者。
- 需要比系统「减少动态效果」更细粒度控制(例如保留加载动画、关掉毛玻璃)的用户。
已知限制
- 与系统「减少动态效果」是叠加关系,插件不修改系统设置。
- 只覆盖 Web 客户端;桌面端窗口材质(macOS vibrancy、Windows acrylic)由系统与 Electron 负责。
- 关闭「JS 动效」会影响所有读取
prefers-reduced-motion的代码,包括其他插件。 - DSH 前端样式随版本变化,新出现的特效类别需在本插件中补充规则。
插件当前 npm 版本为 0.2.0(以仓库 package.json 为准)。