YUXI-Dev / dsh-motion-plugin

Listed

Complete UI motion patch for DeepSeek‑Harness 为 DSH 的web UI的每个交互增加动效的补丁

mainTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:YUXI-Dev/dsh-motion-plugin

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 0fdba85Synced Aug 18, 2026

dsh-motion-complete Deepseekharness动画补全计划

为 DSH 的web UI的每个交互增加动效,即装即用、卸载即还原


这是什么(?)

此项目为DeepSeek Harness(deepseek-ai/deepseek-harness)的 Web 界面做了一批 UI 动效(消息入场、菜单/面板出入场、设置面板开合、模型菜单翻页与推理等级滑块、侧边栏悬浮与拖拽、工作区行动画与 View Transition、标签滑动指示条、chevron 旋转等)。这些改动此前只存在于个别安装中,重装 DSH 即丢失。

(作者因为发现DSH的web界面几乎每个按钮都没有交互动画,让人非常不爽,于是用DSH做了这个项目)(确信)

本项目把它们打包为可安装、可卸载、可校验的补丁:

安装

前置条件

  • DSH 版本为 0.1.0-rc.60.1.0-rc.7(执行时自动校验并按版本选用补丁集)
  • Node.js ≥ 18
  • 有权限写 DSH 安装目录(全局 npm 安装场景建议使用管理员/提权终端)

步骤

# 1. 把本仓库克隆/拷贝到任意目录(无需放进 node_modules)
cd 你的dsh-motion-complete的安装路径

# 2. 执行安装(自动探测 DSH 安装位置;也可用 --target 显式指定)
node bin/apply.mjs

# 显式指定安装根(Windows 全局安装典型路径):
node bin/apply.mjs --target "C:\Users\<用户>\AppData\Roaming\npm\node_modules\@deepseek-ai\dsh"

# 3. 刷新 Web 页面(强刷 Ctrl+Shift+R 并重启 DSH 更稳妥)——全部动效即生效

预期输出(节选):

dsh-motion-complete 1.1.0 — 安装
DSH 安装: C:\...\node_modules\@deepseek-ai\dsh(版本 0.1.0-rc.7 ✓,支持: 0.1.0-rc.6 / 0.1.0-rc.7)
  ✓ 已安装  dsh-client-ui-settings-general/lib\client.js
  ...(共 17 个文件)
安装完成:应用 17 个文件,跳过 0 个(已安装)。
能力说明
即装即用node bin/apply.mjs 一次性应用全部改动,刷新页面全部生效
卸载还原node bin/apply.mjs --revert 还原到官方原版
版本可校验三重校验(DSH 版本、目标包版本、文件 hash)+ 锚点恰好一次计数 + 应用后复核 + 两阶段提交(全部校验通过才写盘,失败零写入)
多版本同一主题包同时支持 0.1.0-rc.60.1.0-rc.7,安装时按当前 DSH 版本自动选用对应补丁集
幂等重复安装自动跳过已安装文件;重复卸载自动跳过未安装文件
零回归只搬运已定稿动效,不改任何交互语义(插件列表手风琴、审批提交语义、菜单键盘导航、表单草稿等均保持原样)
无障碍动效中已有的 prefers-reduced-motion 处理原样保留(CSS 禁用动画;JS 延迟卸载/定时器在 reduce 下归零)

常用参数

参数作用
--target <dir>指定 DSH 安装根(node_modules/@deepseek-ai/dsh 所在目录);默认自动探测
--revert卸载:完整还原全部 17 个文件
--check只检查状态(每个文件是原版/已安装/未知),不写任何文件
--dry-run安装/卸载的完整校验演练,不写任何文件

卸载

node bin/apply.mjs --revert

卸载后所有被改文件还原为官方原版(还原后 hash 复核,不一致会报错中止)。刷新页面(强刷)即完全还原。

注意:卸载前请勿手动修改任何 lib/client.js / dist 文件,否则会被「文件状态未知」保护拦下(见故障排查)。

工作原理与安全设计

bin/apply.mjs 是一个零依赖的 Node 脚本,补丁数据全部内嵌在 patches/manifest.json(每个 DSH 版本一份补丁集:17 个目标文件 × 精确锚点对 + 原版/安装态 SHA256)。

安全模型(任何一项不满足都会明确报错并中止,绝不静默失效、绝不写坏文件):

  1. 版本校验:DSH 版本 + 每个目标包版本,必须与 manifest 锁定值精确一致;
  2. hash 校验:目标文件必须是「已知原版」或「已知安装态」之一,否则视为被第三方修改,拒绝触碰;
  3. 锚点计数:每个替换锚点在目标文本中必须恰好出现 1 次;
  4. 两阶段提交:先完成全部文件的校验(含"应用后文本"的 hash 复核),全部通过才统一写盘——任何失败零写入,不存在半补丁状态;
  5. 写盘次序:先全部写盘、后输出日志,stdout 管道异常中断不影响写盘结果。

故障排查

现象原因处理
安装后动效没出现页面未刷新 / 浏览器缓存强刷 Ctrl+Shift+R;确认 DSH 服务仍在运行
DSH 版本不匹配,已中止当前 DSH 版本不在支持列表按提示查看支持版本;安装受支持的版本,或等待发布适配新版本的主题包
文件状态未知…拒绝触碰目标文件既非原版也非本主题包安装态(被手动修改、或装过其他补丁)恢复该文件(重装对应 DSH 包)后重试;不要强行覆盖
锚点校验失败,已中止文件内容与清单锚点不符(版本不对或文件被改动)同上;确认 DSH 版本与支持列表一致
卸载后仍有动效页面缓存强刷页面;如仍存在,执行 --check 查看是否有文件处于未知状态
系统开启"减少动态效果"属正常设计所有已定稿动效在 prefers-reduced-motion: reduce 下按原样禁用/归零

如遇到其它问题,欢迎通过作者本人邮箱&QQ反馈^_^:3536989081@qq.com

项目结构

dsh-motion-complete/
├── package.json                 # 包声明(name/version/bin)
├── bin/
│   └── apply.mjs                # 安装/卸载/检查脚本(唯一入口,零依赖)
├── patches/
│   └── manifest.json            # manifest v2:versions[](每 DSH 版本 17 目标:版本、hash、锚点对)
├── README.md                    # 本文档
├── CHANGELOG.md                 # 版本历史
└── .gitignore

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

Plugin manifestDetected

Repository information

Language
JavaScript
License
Not reported
Last updated
Aug 18, 2026, 11:03 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.