dsh-icon-changer:为 DeepSeek Harness 桌面端更换应用图标

前言

DeepSeek Harness(DSH)桌面端在任务栏、快捷方式里显示的是安装目录里 exe 内嵌的图标。想换成自己的 .ico、或偶尔换回官方默认,通常要手动找 PE 资源编辑工具、自己备份 exe,还要处理 Windows 对运行中可执行文件的锁定,以及改完后 shell 仍显示旧位图的问题。下面介绍社区插件 dsh-icon-changer(维护者 flycucu,分类「趣味换装」):在 DSH 设置页里选图标、上传、应用与回退,由插件在应用退出后完成改写与缓存刷新。

这是什么

dsh-icon-changer 是 DSH 的应用图标更换器插件:把官方 DeepSeek Harness.exe 内嵌图标换成你选的 .ico,也支持一键从首次更换前留下的备份还原官方默认。仓库说明标注「本插件代码由 DeepSeek Harness 生成」;当前 package 版本为 0.3.1,许可证 MIT,面向 Windows 桌面端(Node >=18)。

插件拆成两半,且不引入任何 npm 依赖:

  • 宿主半区(lib/index.js,跑在 DSH 主进程)通过 ctx.webServer 挂载 HTTP API;
  • 客户端半区(lib/client.js)在设置页注册卡片,无需手输管理 URL。

社区目录页:flycucu/dsh-icon-changer
源码与文档:GitHub

为什么必须「退出后再换」

Windows 会锁住正在运行的可执行文件,而插件运行在要改的那个 exe 进程里。因此 API 不会当场改文件,而是:

  1. 校验请求,把任务写入 state.json 与 pending-job.json;
  2. 用 WMI(Win32_Process.Create)拉起 worker——直接 spawn 的子进程会随应用 job object 一起结束,WMI 创建的进程挂在 wmiprvse.exe 名下,应用退出后仍可继续;
  3. worker(bin/apply-icon.ps1)轮询等待 exe 释放;
  4. 备份 → 用 rcedit(tools/rcedit-x64.exe,2.0.0)改写图标 → 比对改前/改后/目标三者的图标指纹;
  5. 指纹未变且不等于目标则自动还原并报失败;成功则(可选)重新拉起应用;
  6. 刷新 shell 图标缓存:worker 先跑 ie4uinit.exe -show,应用重启后宿主侧再调 bin/refresh-shell.ps1 做完整刷新(含停 Explorer、删除 iconcache_* 等)。

更换图标会伴随一次应用重启,这是平台限制。只改 exe 不刷缓存时,资源已是新图标但桌面仍可能显示旧图;文档说明仅重启 Explorer 不够,必须删图标缓存库。

核心功能

设置页(推荐)

打开 设置 → 应用图标:

  • 选图标:内置 assets/whalemaid.ico(界面文案「鲸鱼娘(预置)」)、assets/original.ico(「原版」)与已上传图标并列,点选即可;
  • 上传 .ico:宿主校验合法 ICONDIR 头,非 ico 会拒(not-an-ico);上传上限 4 MiB。可配 <名字>-tray.ico 伴生文件放在 $DSH_HOME/icon-changer/icons/,托盘优先使用;
  • 应用选中图标并重启:排队后应用退出,worker 改写,再自动拉起;
  • 回退官方图标:从首次更换前创建的备份还原;
  • 删除:仅未使用的外部上传图标显示删除;内置/原版与使用中的图标不可删(builtin-readonly / in-use)。

卡片顶部常驻「当前图标」,默认对齐 state.applied.icon 对应的图标 id;目标 exe 路径、排队任务、上次结果一并展示。更换过程中可能弹出 PowerShell 窗口显示进度,不要手动关闭该窗口(关闭等于终止任务);长时间等待类任务会用 -WindowStyle Hidden 静默运行。

独立页面(备用)

Web GUI 同端口下访问:

http://127.0.0.1:<端口>/icon-changer

按钮与设置卡片对应,UI 异常时可走此路径。

HTTP API(本机)

方法 路径 说明
GET /api/icon-changer/status exe / 备份 / 当前图标 / 待处理任务 / 上次结果
GET /api/icon-changer/icons 内置与已上传列表
GET /api/icon-changer/log?lines=200 helper.log 尾部
GET /api/icon-changer/preview/<id> 图标预览字节
POST /api/icon-changer/upload {name, b64}
POST /api/icon-changer/apply {icon, restart, targets}
POST /api/icon-changer/restore {restart, targets}
DELETE /api/icon-changer/icon/<id> 删除上传图标
POST /api/icon-changer/clear 清除卡住的排队任务

图标 id 形如 builtin:whalemaid.ico 或 user:my_icon.ico。写操作做同源校验(Origin 与 Host 不一致返回 403)。路由监听 127.0.0.1,文档说明不带 Web GUI token,同机同用户进程可调用 /apply。

安装与启用

仓库未提供一键安装脚本,步骤为「代码到本地 + 挂进 desktop profile」。README 给出的取代码方式如下(改 package.json 前请先备份,它属于启动关键配置):

git clone https://github.com/flycucu/dsh-icon-changer.git "$env:USERPROFILE\.dsh\plugin-src\dsh-icon-changer"

然后建立两处链接:

  1. 把插件目录挂进 profile:
mklink /J "%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-icon-changer" "<插件目录>"
  1. 在 %USERPROFILE%\.dsh\profiles\desktop\package.json 增加依赖 "dsh-icon-changer": "link:<插件目录>",并把 dsh-icon-changer 写入 dsh.profile.bundles(宿主靠 bundle 进 Loader,客户端靠 roster 扫描)。

改完 package.json 后必须重启 DeepSeek Harness;客户端卡片只在启动扫描时注册,不重启不会出现「应用图标」入口。

卸载:从 dsh.profile.bundles 与依赖中移除,再删除 junction。

语法检查(在插件目录):

npm run check

数据目录与手工回滚

路径 内容
$DSH_HOME/icon-changer/state.json 任务与结果
$DSH_HOME/icon-changer/icons/ 上传的图标
$DSH_HOME/icon-changer/backup/DeepSeek Harness.exe.orig 首次更换前创建的原始 exe 备份(只创建一次)
$DSH_HOME/icon-changer/helper.log 宿主 / WMI 启动器 / worker 统一日志
$DSH_HOME/icon-changer/pending-job.json worker 任务描述

排查建议先看 $DSH_HOME/icon-changer/helper.log(宿主 [host]、启动器 [wmi-spawn]、worker 时间戳)。插件不可用时可用备份整文件还原:

Copy-Item "$env:USERPROFILE\.dsh\icon-changer\backup\DeepSeek Harness.exe.orig" `
          "<你的安装目录>\DeepSeek Harness.exe" -Force

适用场景与注意

适合:在 Windows 上使用 DSH 桌面端、希望任务栏/快捷方式图标个性化,且接受「应用重启 + 可能短暂弹出 worker 窗口」的流程;趣味换装类需求(例如预置「鲸鱼娘」图标)。

务必知晓:

  • 插件以当前 DSH 进程权限运行,会改写本机安装目录下的 exe;安装前应阅读源码与 MIT 许可证,自行判断是否信任维护者与仓库内容。
  • 改写 exe 会破坏该文件的代码签名(若原先有签名),SmartScreen 等可能提示;备份在首次更换前写入,多次换图标不会把备份覆盖成中间态。
  • API 信任模型为「同用户、同机器」:本机进程可调用 /apply,跨源网页被同源策略挡住,但不能防本机恶意程序。
  • 任务卡住时可点「取消排队」或再次应用(新请求覆盖旧队列);宿主会在 worker 异常退出后尝试接续 stalled 任务。文档对 QuickEdit 导致控制台进程暂停、以及 Explorer 图标缓存等坑有专门说明,遇问题时对照 helper.log。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-icon-changer 把「备份 exe → rcedit 换图标 → 校验指纹 → 刷 shell 缓存 → 可选重启」收成设置页里几条操作,并处理 Windows 文件锁与 WMI worker 生命周期。若你需要给桌面端换图标又不想手搓 PE 工具链,可按 README 挂进 desktop profile 后从 设置 → 应用图标 使用。

  • 目录页:https://www.skillhub.cn/plugins/flycucu/dsh-icon-changer
  • GitHub:https://github.com/flycucu/dsh-icon-changer
羽毛球分组比赛记分
小程序二维码

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

Xiaoye