YUXI-Dev / dsh-motion-plugin

已收录

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

main工具 查看源代码

安装

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

此安装命令根据 GitHub 仓库地址生成,是未经验证的安装起点。

README

维护者编写的文档快照。

在 GitHub 查看 ↗
提交版本 0fdba85同步于 2026年8月18日

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

项目文件与信号

以下项目是目录快照中检测到的公开仓库信号。

插件清单已检测

仓库信息

开发语言
JavaScript
许可证
未提供
最后更新
2026年8月18日 11:03

谨慎安装

请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。