dsh-plugin-wallpaper-cleanup:用订阅截图对照工坊目录清理壁纸

前言

在 Wallpaper Engine 里订阅多了之后,Steam 工坊内容目录往往会堆着大量以数字 ID 命名的文件夹;哪些是「我的订阅」里仍保留的,哪些已经取消订阅却还在磁盘上,手工对照既慢又容易误删。常见做法是打开订阅列表逐条查 ID,或全靠记忆——既不精确,也不适合定期整理。

DeepSeek Harness(DSH)支持以插件扩展客户端能力。下面介绍社区维护的 dsh-plugin-wallpaper-cleanup:在 Windows 上对照「我的订阅壁纸」截图与工坊文件夹,把判定为未订阅的项目移入回收站(可恢复),并提供设置页、悬浮模态框,以及可选的 agent 工具。

这是什么

dsh-plugin-wallpaper-cleanup 由维护者 jokerkenny00137 发布,归类为 客户端 插件(SkillHub 目录:插件页)。源码与说明见 GitHub 仓库。

插件做一件事:你选择 Steam 工坊内容文件夹和一张或多张「我的订阅」界面截图,插件识别截图中的磁贴标题,与各子目录内 project.json 的标题做匹配,列出将保留与将移入回收站的清单;确认后仅把待删项通过系统回收站 API 移走,不永久删除。

实现上不依赖第三方 npm 包:OCR 使用 Windows 自带的 Windows.Media.Ocr,回收站使用 Microsoft.VisualBasic.FileIO,目录选择用系统原生对话框,逻辑由随包 PowerShell 脚本完成。因此 仅支持 Windows(package.json 中版本 0.3.0,许可证 MIT)。

核心功能

图形界面(推荐)

两种入口,内容相同:

  • 右下角悬浮按钮「壁纸清理」——点击弹出模态框(Esc 或点空白处关闭)。
  • 设置(侧栏底部齿轮)→ 左侧 壁纸清理。

典型流程:

  1. 工坊文件夹:桌面版 DSH 可调内置原生目录选择器;浏览器中可点「选择文件夹…」在页面内逐级浏览,或直接把路径粘贴到输入框。
  2. 订阅截图:点「选择截图…」,可一次选中多张(订阅列表分页时,每一页都要选上)。桌面版读取本地绝对路径;浏览器版会先上传到 DSH 数据目录。
  3. 开始扫描(README 说明每张截图约 20 秒):识别磁贴右上角蓝色勾选徽章、多倍率 OCR 读标题、合并多页后与文件夹标题做 IDF 加权模糊匹配,展示「将保留」与「将移入回收站」两份清单。
  4. 核对后点 移入回收站(N 个),再 确认执行;被移除的文件夹进入 Windows 回收站,可还原。

若某磁贴 OCR 失败,页面会提示「未通过安全校验」并标明截图序号与磁贴序号。可展开「识别不准?手动补充标题」,一行一个粘贴标题后重新扫描(标题可带 ... 截断)。

多页订阅列表须 一次全部选中;只选一页时,其余页的壁纸会被当成未订阅,且界面会给出「仅提供了 1 张截图」等警告。

Agent 工具(可选)

对话中可由 agent 调用(scan 只生成计划,apply 须 confirm: true 才真正移入回收站):

wallpaper_cleanup_scan  { "folder": "C:\\...\\431960", "screenshots": ["C:\\...\\page1.png", "C:\\...\\page2.png"] }
wallpaper_cleanup_apply { "planId": "<scan 返回的>", "confirm": true }

也兼容单张 "screenshot"。scan 支持传 titles: ["标题1", "标题2", ...] 跳过 OCR。计划不安全时需显式 force: true 才能强制执行。

安全边界(摘要)

  • 只处理 folder 的 直接子目录,且目录名须为纯数字(Steam 工坊 ID)。
  • 须有可读的 project.json 标题,否则跳过并报告,不删除。
  • 执行前会复检;仅当所有截图磁贴与文件夹匹配且数量与徽章总数一致时才允许删除(否则界面禁用删除)。
  • 只调用回收站 API,不碰 appworkshop_*.acf 等 Steam 配置;HTTP 接口要求同源请求头。

安装与启用

从 GitHub 安装(README 推荐):

dsh plugin add github:jokerkenny00137/dsh-plugin-wallpaper-cleanup

也可将插件目录解压到本地后,用 bundle 安装(示例路径按你的环境修改):

plugin_manager install_bundle  target: link:C:\path\to\dsh-plugin-wallpaper-cleanup

安装后若未见「壁纸清理」,可刷新页面(Ctrl+R)。package.json 要求 Node >=22.12.0,以及对 @deepseek-ai/cordis、@deepseek-ai/dsh-tools 的 peer 依赖。

插件以当前 DSH 进程权限运行;安装前建议在 GitHub 上查看源码与 MIT 许可证,确认行为符合你的预期。

典型用法小结

  1. 在 Wallpaper Engine 中打开「已订阅/已安装」网格(默认深色主题、蓝色勾选徽章),对多页列表分别截图。
  2. 在 DSH 中打开壁纸清理,填入 Steam 工坊内容目录(例如 ...\steamapps\workshop\content\431960 一类的路径以你本机为准)。
  3. 一次选中全部截图 → 开始扫描 → 核对清单 → 移入回收站 → 确认执行。

截图需为默认深色主题的订阅网格;自定义主题若改了勾选颜色,建议改用手动补充标题或 titles 参数。系统需具备中文 OCR 语言包(中文 Windows 一般自带);否则宜用标题模式补齐。

适用场景与限制

适合:长期在 Windows 上使用 Wallpaper Engine、工坊目录体积大、希望按订阅列表批量清理未订阅文件夹、且接受「先扫描、再确认、进回收站」流程的用户。

不适合:非 Windows 环境;无法提供完整多页截图或稳定 OCR/标题对照时(插件会主动阻止不安全删除)。

限制(来自 README):仅 Windows;多页须一次全选;每个磁贴至少需 OCR 到部分文字或手动标题;只处理带数字 ID 名且含 project.json 的直接子目录。

结尾

dsh-plugin-wallpaper-cleanup 把「截图上的订阅列表」和「磁盘上的工坊文件夹」对齐,用界面或 agent 工具生成可核对计划,再安全移入回收站,适合作为 DSH 客户端侧的日常维护插件。

  • 目录页:https://www.skillhub.cn/plugins/jokerkenny00137/dsh-plugin-wallpaper-cleanup
  • GitHub:https://github.com/jokerkenny00137/dsh-plugin-wallpaper-cleanup

社区插件目录由 SkillHub 等站点维护,与 DeepSeek / 幻方无官方从属关系;安装与使用请自行审阅源码与权限影响。

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

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

Xiaoye