安装
npx -y @deepseek-ai/dsh plugin --profile web add github:YUXI-Dev/dsh-motion-plugin此安装命令根据 GitHub 仓库地址生成,是未经验证的安装起点。
README
维护者编写的文档快照。
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.6或0.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.6 与 0.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)。
安全模型(任何一项不满足都会明确报错并中止,绝不静默失效、绝不写坏文件):
- 版本校验:DSH 版本 + 每个目标包版本,必须与 manifest 锁定值精确一致;
- hash 校验:目标文件必须是「已知原版」或「已知安装态」之一,否则视为被第三方修改,拒绝触碰;
- 锚点计数:每个替换锚点在目标文本中必须恰好出现 1 次;
- 两阶段提交:先完成全部文件的校验(含"应用后文本"的 hash 复核),全部通过才统一写盘——任何失败零写入,不存在半补丁状态;
- 写盘次序:先全部写盘、后输出日志,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
谨慎安装
请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。