前言¶
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 不會當場改文件,而是:
- 校驗請求,把任務寫入
state.json與pending-job.json; - 用 WMI(
Win32_Process.Create)拉起 worker——直接spawn的子進程會隨應用 job object 一起結束,WMI 創建的進程掛在wmiprvse.exe名下,應用退出後仍可繼續; - worker(
bin/apply-icon.ps1)輪詢等待 exe 釋放; - 備份 → 用 rcedit(
tools/rcedit-x64.exe,2.0.0)改寫圖標 → 比對改前/改後/目標三者的圖標指紋; - 指紋未變且不等於目標則自動還原並報失敗;成功則(可選)重新拉起應用;
- 刷新 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"
然後建立兩處鏈接:
- 把插件目錄掛進 profile:
mklink /J "%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-icon-changer" "<插件目錄>"
- 在
%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