dsh-force-motion:在 reduced-motion 下仍保留 DSH Web 界面動效

前言

DeepSeek Harness(dsh)的 Web 界面裏有多處 CSS 與 JS 動效,例如「深度求索中…」狀態行的漸變閃爍、命令行掃光、輪次標記等。當操作系統或瀏覽器上報 prefers-reduced-motion: reduce 時,dsh 會在樣式表與部分渲染邏輯裏尊重該無障礙偏好,動效會被關閉或走靜態分支,界面看起來像「光暈停住不動」。

若你本機因其它原因開啓了系統級「減少動態效果」,但仍希望在 dsh 工作站裏看到完整 UI 動畫,可以單獨用插件覆蓋這一偏好,而不必改 dsh 源碼或 node_modules。下面介紹社區插件 dsh-force-motion(維護者 maxesisnclaw,分類:趣味換裝)。

這是什麼

dsh-force-motion 是一個面向 dsh Web profile 的 Cordis 補丁插件:在服務端注入的 index 頁面裏運行一小段腳本,讓 prefers-reduced-motion 不再生效,從而恢復 dsh 自帶的界面動畫。它不修改 node_modules,也不依賴 dsh 內部 hashed 類名或 keyframe 名稱,README 說明其設計意圖是在 dsh 升級後仍能繼續工作。

dsh 爲何會關掉動效

README 歸納了兩處機制:

  1. CSS:多個帶動畫的選擇器帶有 @media (prefers-reduced-motion: reduce) 守衛,在 reduce 模式下將 animation 設爲 none 等;涉及狀態 shimmer、命令行 sweep、turn mark、推理行 sweep 與 retry shimmer 等約七條規則。
  2. JS:部分 renderer 通過 matchMedia("(prefers-reduced-motion: reduce)").matches 走靜態分支。

在上述環境下,即使 dsh 本身定義了動畫,用戶側也會看到靜態界面。

核心功能

插件注入腳本後主要做兩件事(均來自官方 README):

  • 包裝 matchMedia:使 (prefers-reduced-motion: reduce) 查詢不再返回匹配。
  • 清理同源樣式表中的 reduced-motion 規則:從每個同源 stylesheet 中刪除 prefers-reduced-motion 相關規則;當頁面新增 <style> / <link> 節點時會重新執行,讓基礎動畫聲明重新生效。

結果是 dsh Web UI 中的動畫會照常播放。

安裝與啓用

插件以當前 dsh 進程權限運行;安裝前建議自行查看 GitHub 倉庫 源碼與 MIT 許可證。

官方命令安裝

針對 Web profile,使用資料中的安裝命令:

dsh plugin --profile web add github:maxesisnclaw/dsh-force-motion

手動安裝

將插件目錄複製到 <dsh-install>/plugins/,並在 $DSH_HOME/cordis.patch.yml 中追加:

- insert:
    - id: force-motion
      name: /absolute/path/to/dsh-force-motion/index.js

完成後重啓 dsh。

驗證與自測

README 給出的檢查方式:

  1. 模型思考時,狀態行應出現 shimmer,而不是靜止漸變。
  2. 瀏覽器控制台:matchMedia('(prefers-reduced-motion: reduce)').matches 應爲 false;插件會輸出日誌 dsh-force-motion: reduced-motion suppression neutralised。
  3. 在插件目錄執行單元測試:npm test(對應 node --test test/*.test.mjs)。

適用場景與注意

適合:工作站由本人使用,且明確希望保留 dsh 界面動效;系統或瀏覽器已開啓 reduced-motion,但原因與 dsh 使用無關。

權衡:插件刻意覆蓋無障礙相關的 reduced-motion 偏好。若需恢復 dsh 默認行爲,可卸載插件,或在應用啓動前設置 window.__dshForceMotion = false。

DeepSeek Harness 生態強調「一切皆插件」;插件目錄頁託管於社區站點 SkillHub,與 DeepSeek / 幻方無官方從屬關係,並非官方應用商店。

結尾

dsh-force-motion 通過前端層面的 matchMedia 包裝與同源樣式表規則清理,在不動 dsh 核心包的前提下,讓 Web UI 動畫在 reduced-motion 環境下繼續播放。需要時可從目錄頁瞭解分類與簡介,並從 GitHub 獲取安裝說明與源碼。

  • 目錄頁:https://www.skillhub.cn/plugins/maxesisnclaw/dsh-force-motion
  • GitHub:https://github.com/maxesisnclaw/dsh-force-motion
羽毛球分组比赛记分
小程序二维码

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

小夜