dsh-hao-import:DSH 启动时自动把 Hao Wallpaper 新壁纸导入壁纸引擎

前言

DeepSeek Harness(DSH)若已安装壁纸引擎插件,壁纸文件需要落在引擎约定的上传目录(默认 ~/.dsh-wallpaper-engine/uploads/ 下的 up-* 命名)才会在 DSH 里可选。Hao Wallpaper(哲风壁纸)把壁纸存在自己的目录和元数据里,和引擎目录不是同一套路径。常见做法是每次下载后手动拷贝、改名、补标题——重复且容易漏。

社区插件 dsh-hao-import(仓库 AB-png123/dshplugin,npm 包名 dsh-hao-import)挂在 DSH 内核启动流程上:每次启动 DSH 时在后台跑一次导入脚本,把 Hao Wallpaper 里尚未导入的条目增量复制到壁纸引擎的上传目录,并按壁纸 id 与类型做幂等记录,重复启动只会出现「新增 0 条」。维护者为 AB-png123,分类属于工作流;DSH 社区目录页见 skillhub.cn/plugins/AB-png123/dshplugin。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

一句话:DSH 插件,启动时自动把 Hao Wallpaper 新下载的壁纸增量导入 DSH 壁纸引擎数据目录(macOS / Windows,脚本出错只写日志,不阻塞 DSH 启动)。

它不负责在 DSH 里渲染壁纸——必须先安装 dsh-plugin-wallpaper-engine(DSH 壁纸引擎插件)。本插件解决的是「引擎装好了但没有可用壁纸源」的衔接问题;没有壁纸引擎时,导入的文件不会被展示。

当前 README 与 package.json 标明版本 1.3.3,许可证 MIT,要求 DeepSeek Harness ≥ 0.2.0-rc.1、Node ≥ 20(插件本体),导入逻辑依赖 Python 3.8+(优先 DSH 自带运行时)。

核心功能

下面介绍 README 中已写明的行为,便于对照预期。

启动即导入

插件在 lib/index.js 里挂到 DSH 内核 apply():按平台后台 spawn 入口脚本(macOS / Linux 为 scripts/run-import.sh,Windows 为 PowerShell 5.1+ 的 scripts/run-import.ps1),再调用 scripts/import_hao.py 完成扫描与复制。入口脚本带约 15 秒冷却,避免短时间多次触发。

增量与幂等

已导入条目按「壁纸 id + 类型」写入上传目录旁的 .imported.json;标题写入 .meta.json,文件命名为 up-hao-NN.*。再次启动只会处理新增项。

路径与格式

  • Windows 上优先读 Hao Wallpaper 元数据 wallpaper-data.json 里的 localPath(绝对路径),不硬绑固定壁纸库目录;macOS 等平台在元数据不足时还会兜底扫描 wallpaper-<id>/ 等布局。
  • 动态壁纸:存在 wallpaper.mp4 时导入视频,避免把首帧静态图重复算两条;标题从元数据截取前 3 段关键词,动态条目加「(动态)」后缀。
  • 1.3.1 起只导入壁纸引擎认识的 mp4 / png / jpg / jpeg。Hao 只落地 .webm / .mov / .webp 等时,脚本会打印「不受 DSH 壁纸引擎支持」并跳过,而不是复制无法在引擎里显示的文件。

上传目录与引擎一致

插件解析上传目录的优先级与壁纸引擎一致:DSH_WE_UPLOAD_DIR → 引擎 config.json 的 uploadDir → <引擎目录>/uploads。默认引擎数据目录为 ~/.dsh-wallpaper-engine(Windows 为 %USERPROFILE%\.dsh-wallpaper-engine),可用 DSH_WE_DATA_DIR 或 DSH_WALLPAPER_ENGINE_DIR 覆盖。运行日志写在引擎数据目录下的 import.log。

可配置与可禁用

路径、Python 解释器、入口脚本、总开关均通过环境变量配置(GUI 启动的 DSH 不继承终端环境,需在系统环境或 launchctl setenv 等方式设置后重启应用)。设为 DSH_HAO_IMPORT_DISABLE=1 可关闭导入。

安装与启用

插件包内自带 scripts/,安装后无需克隆仓库或手动复制到 ~/.dsh/wallpaper-import/(该目录仅为 macOS / Linux 上可选的手动副本路径,1.2.0 起默认使用包内脚本)。

在已安装 DSH 的前提下,使用 README 给出的命令之一:

# 从 GitHub 安装(desktop profile)
dsh plugin --profile desktop add github:AB-png123/dshplugin

或从 Release 下载 tgz 后本地安装(Windows 下把路径换成实际位置):

dsh plugin --profile desktop add /path/to/dsh-hao-import-1.3.3.tgz

安装完成后重启 DSH 应用。验证是否跑通:

# macOS / Linux
tail -n 10 ~/.dsh-wallpaper-engine/import.log
# Windows PowerShell
Get-Content -Tail 10 "$env:USERPROFILE\.dsh-wallpaper-engine\import.log"

日志里出现 [时间] rc=0 和「新增 N 条」表示成功;没有新壁纸时会显示「新增 0 条」。DSH 自身日志在 ~/.dsh/logs/(Windows:%USERPROFILE%\.dsh\logs\)。

环境侧前置:已安装 Hao Wallpaper 且至少下载过一张壁纸;已安装 dsh-plugin-wallpaper-engine;本机有可用的 Python 3.8+(Windows 需 PowerShell 5.1+,不要求 Git Bash)。macOS 建议具备可用的系统 Python 或 Homebrew / pyenv 等路径(README 说明了 /usr/bin/python3 在缺少 Xcode CLT 时可能不可用的情况)。

插件以当前 DSH 进程权限运行,安装前请自行查看仓库源码与 MIT 许可证,确认路径读写范围可接受。

典型用法

日常:打开 DSH 即可

正常使用 Hao Wallpaper 下载壁纸后,下次启动 DSH 会自动增量导入,无需再手动拷贝到 uploads/。

手动调试

包安装后脚本位于 profile 的 node_modules/dsh-hao-import/scripts/。例如 macOS / Linux:

cd ~/.dsh/profiles/desktop/node_modules/dsh-hao-import
bash scripts/run-import.sh --force      # 立即执行,跳过 15 秒冷却
bash scripts/run-import.sh --dry-run    # 只打印将导入什么,不写文件
python3 scripts/import_hao.py --dry-run

Windows 在 PowerShell 中进入 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-hao-import,对 run-import.ps1 或 import_hao.py 使用 --force / --dry-run(README 有完整示例)。

若希望继续使用复制到 ~/.dsh/wallpaper-import/ 的脚本副本,设置 DSH_HAO_IMPORT_SCRIPT 指向该入口;插件不会自动回退到该目录。

常用环境变量(节选)

变量 说明
DSH_HAO_IMPORT_DISABLE 设为 1 关闭导入
HAO_WALLPAPER_DIR / HAO_WALLPAPER_DIRS 兜底壁纸库目录(Windows 通常可不配,靠元数据 localPath)
HAO_WALLPAPER_DATA_DIR 元数据目录(含 wallpaper-data.json)
DSH_HAO_IMPORT_PYTHON 指定 Python 解释器
DSH_WE_UPLOAD_DIR 与壁纸引擎一致的上传目录 override

完整表格见 GitHub README「配置」一节。

重新导入某张壁纸

删除 uploads/.imported.json 里对应键以及 uploads/ 里相应 up-hao-* 文件,再运行一次导入即可。

卸载

dsh plugin --profile desktop remove dsh-hao-import

若曾手动复制脚本到 ~/.dsh/wallpaper-import/,可另行删除该目录;清理已导入壁纸与状态可选删除 ~/.dsh-wallpaper-engine(Windows 为 %USERPROFILE%\.dsh-wallpaper-engine)。

适用场景与注意

适合谁:已在 macOS 或 Windows 上同时使用 DSH(含壁纸引擎)、Hao Wallpaper,希望壁纸库与 DSH 壁纸列表自动同步、且接受「只同步引擎支持的格式」的用户。Linux 走 bash 入口,README 写明理论可用但未专门测试。

依赖与限制(摘自 README「已知限制」):

  • 依赖 Hao Wallpaper 本地文件布局与元数据;客户端结构变更可能需要脚本跟进。
  • 动态壁纸仅在有引擎可识别的 wallpaper.mp4 时导入;仅 .webm / .mov 等会跳过并说明原因。
  • 元数据缺失时标题退回「Hao壁纸」。
  • Windows 若组策略限制 PowerShell 脚本,可改用手动运行 python scripts\import_hao.py。

排查表(未找到壁纸、一直新增 0 条、找不到 Python、导入成功但 DSH 看不到等)见仓库 README「排查」一节。

结尾

dsh-hao-import 把 Hao Wallpaper 与 DSH 壁纸引擎之间的手工拷贝改成「启动 DSH 后台增量同步」,并与引擎上传目录解析链对齐,重复运行幂等。进一步了解实现细节、Release 与 Issue,见 GitHub:https://github.com/AB-png123/dshplugin;目录索引:https://www.skillhub.cn/plugins/AB-png123/dshplugin。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye