为桌面外壳补上深色启动页与高清缩放
28.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Broknsun/dsh-desktop-shell-plus该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
深色品牌启动页、真 DPI 感知、深色无边框标题栏、窗口记忆、F12、右栏 20% —— DeepSeek Harness 桌面外壳(dsh-desktop-shell)的 UI 补丁集
README
由 DeepSeek 最新模型翻译生成dsh-desktop-shell-plus
给 DeepSeek Harness 的桌面外壳补上它缺的那层皮。
深色品牌启动页 · 真 DPI 感知 · 深色无边框标题栏 · 窗口位置记忆 · F12 开发者工具 · 右栏 20%
这是什么
DeepSeek Harness(下称 dsh)官方只提供 web / tui / headless 三种配置档,没有桌面客户端。社区的 dsh-desktop-shell 用 .NET Framework + WebView2 把 Web UI 包成原生窗口,思路很对,但它交出来的默认版有三个明显问题:
- 糊:进程没有 DPI 声明,125% 缩放的屏幕上整个窗口被 Windows 位图拉伸;
- 丑:启动等待期是白底黑字的裸 WinForms 面板,标题栏也是系统浅色,深色界面旁边挂着一条白条;
- 碎:后端还没起完就反复重导航,会看到「127.0.0.1 拒绝连接」、闪回,以及看门狗把正在启动的后端误杀。
本仓库是这套外壳的补丁版源码 + 可重复执行的脚本:不重新发明外壳,只把上面这些按下去,并且让改动在插件升级之后还能一键重放。
这不是 fork 的 npm 包,也不分发任何二进制。
展开完整文档(README 剩余 1 节)
dsh-desktop-shell-plus
给 DeepSeek Harness 的桌面外壳补上它缺的那层皮。
深色品牌启动页 · 真 DPI 感知 · 深色无边框标题栏 · 窗口位置记忆 · F12 开发者工具 · 右栏 20%
这是什么
DeepSeek Harness(下称 dsh)官方只提供 web / tui / headless 三种配置档,没有桌面客户端。社区的 dsh-desktop-shell 用 .NET Framework + WebView2 把 Web UI 包成原生窗口,思路很对,但它交出来的默认版有三个明显问题:
- 糊:进程没有 DPI 声明,125% 缩放的屏幕上整个窗口被 Windows 位图拉伸;
- 丑:启动等待期是白底黑字的裸 WinForms 面板,标题栏也是系统浅色,深色界面旁边挂着一条白条;
- 碎:后端还没起完就反复重导航,会看到「127.0.0.1 拒绝连接」、闪回,以及看门狗把正在启动的后端误杀。
本仓库是这套外壳的补丁版源码 + 可重复执行的脚本:不重新发明外壳,只把上面这些按下去,并且让改动在插件升级之后还能一键重放。
这不是 fork 的 npm 包,也不分发任何二进制。仓库里只有一份改过的 DSHLauncher.cs 和几个 PowerShell 脚本,作用在你自己已经装好的 dsh-desktop-shell 上。
效果
| 启动页 | 进界面 |
| splash | window |
标题栏深色、与内容无缝;启动页是鲸鱼 logo + wordmark + LOCAL RUNTIME + 进度条 + 一行状态,没有白闪。
改了什么
1. 启动器(src/DSHLauncher.patched.cs)
| 项 | 默认版 | 本仓库 |
| DPI | 无声明,被系统拉伸 | SetProcessDpiAwarenessContext(-2) → shcore 1 → SetProcessDPIAware() 三级回退 |
| 窗口尺寸 | 固定,可能超出工作区 | 按 WorkingArea 计算,上限 1440×900,下限 880×560 |
| 标题栏 | 系统浅色 | DWM 属性 20/19/34/35/36:沉浸深色 + 深色边框 + 标题文字色 #E8EAED |
| 等待界面 | 白底黑字 Label | 深色 HTML 启动页(读 <home>\logo.svg),236×3 进度条,状态行随启动阶段更新 |
| 错误界面 | 裸文字面板 | 同一个品牌启动页承载错误文案 |
| 窗口记忆 | 每次默认居中 | <home>\window.json 记录 x/y/w/h/max,恢复前校验与显示器工作区相交 |
| 开发者工具 | 无入口 | 注入 keydown 桥:F12 打开 DevTools,Ctrl+R 重载 |
| 导航节奏 | 每 2s 重导航一次 | 单次在飞闸门 + 端口未监听不导航 + 端口监听前 60s 启动宽限 |
| 读秒 | 「已等待 N 秒」跳变 | 已移除,只留静态说明 |
2. 右栏宽度(scripts/patch-rightbar-width.ps1)
DSH 框架把右侧面板(Git、文件、终端都挂在右栏)的首开宽度写死成视口的 45%。脚本改的是 @deepseek-ai/dsh-client-ui-layout/lib/client.js:
const RIGHTBAR_DEFAULT_RATIO = .45; // → .2
const rightbarPreference = layoutInfo.rightbar ?? viewport * .45; // → * .2
clampWidth(rightbar, 300, viewport * RIGHTBAR_MAX_RATIO) // → 280
改完右栏首开约 20%,拖拽下限也一起降到 280px。
3. 快捷方式不再被抢(scripts/patch-shortcuts.ps1)
dsh-desktop-shell 在后端每次启动后都会重跑 installDesktop():把原版 DSHLauncher.exe 复制回去,并按硬编码的文件名重建快捷方式——你重命名过的链接会被当成「缺失」再建一个。脚本做三件事:
1. 让插件生成的快捷方式脚本优先指向最新的 DSHLauncher-custom.exe,没有才回退到原版;
2. 让启动期修复在 .shortcuts-frozen 标记存在时不再创建/改名/改目标;
3. 落下这个标记文件。
要求
- Windows 10/11 x64
- .NET Framework 4.8(Win10 22H2 起自带)
- WebView2 Runtime(Edge 自带;C:\Program Files (x86)\Microsoft\EdgeWebView\Application\ 存在即可)
- dsh >= 0.1.5-rc.1(本仓库在 0.2.1-rc.2 上验证)
- 已安装 dsh-desktop-shell:dsh plugin --profile web add dsh-desktop-shell
- 编译用 legacy csc,不需要装 SDK:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
安装
前置:先装外壳本体,否则本插件没有东西可补。
dsh plugin --profile web add dsh-desktop-shell
然后二选一:
A. 直接从仓库装(pnpm 走 git)
dsh plugin --profile web add https://github.com/Broknsun/dsh-desktop-shell-plus
B. 用发布包里的预构建 tarball(免构建授权)
dsh plugin --profile web add https://github.com/Broknsun/dsh-desktop-shell-plus/releases/download/v1.0.0/dsh-desktop-shell-plus-1.0.0.tgz
装完重启后端。之后每次启动,插件会用 scripts/ 里的脚本把两件事重新对齐一遍(幂等,已经是对的就什么都不做):
- 启动器:src/DSHLauncher.patched.cs 比现有构建新、或者还没有构建时,才重新编译并重指快捷方式;
- 右栏:dsh-client-ui-layout 回到 45% 就再压回 20%。
接口
插件在宿主进程里注册两个 loopback-only 路由:
GET /api/desktop-plus/status -> 安装位置、当前构建、右栏补丁状态、编译器/冻结标记 POST /api/desktop-plus/apply -> 立刻重放补丁(body: {"launcher":true,"rightbar":true,"shortcuts":true}) powershell
curl http://127.0.0.1:3080/api/desktop-plus/status
curl -X POST http://127.0.0.1:3080/api/desktop-plus/apply -H "content-type: application/json" -d "{}"
插件不下载任何东西:改过的启动器源码和三个脚本都在包里,编译用系统自带的 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe。
手动脚本(不想装插件时)
三个脚本都幂等,重复执行输出 already patched 之类的提示,不会重复改。
powershell
0) 先让插件把 home 目录铺好(装完后端跑一次,或直接调 install 接口)
1) 编译补丁启动器 + 把已有快捷方式指过去 powershell -ExecutionPolicy Bypass -File .\scripts\rebuild-launcher.ps1
2) 右栏首开 20% powershell -ExecutionPolicy Bypass -File .\scripts\patch-rightbar-width.ps1
3) 冻结快捷方式 + 让插件指向 custom 构建 powershell -ExecutionPolicy Bypass -File .\scripts\patch-shortcuts.ps1
然后重启后端(托盘 → 退出,再双击快捷方式),浏览器侧改动按 Ctrl+F5 强刷。
脚本参数
| 脚本 | 说明 |
| rebuild-launcher.ps1 | -LauncherHome <路径> 指定 launcher home(默认 %USERPROFILE%\dsh-desktop);-NoBuild 只重指快捷方式不编译;-Quiet 静默 |
| patch-rightbar-width.ps1 | -DshRoot <路径> 指定 dsh 安装根,默认在 %LOCALAPPDATA%\npm-cache\_npx\*\ 里找最新一份 |
| patch-shortcuts.ps1 | -ProfileRoot、-LauncherHome,默认 %USERPROFILE%\.dsh\profiles 与 %USERPROFILE%\dsh-desktop |
三个脚本都幂等,重复执行输出 already patched 之类的提示,不会重复改。
为什么构建文件名带版本号
Windows 不允许覆盖一个正在映射中的 exe 映像,而改外壳的时候启动器通常正开着。所以每次构建产出 DSHLauncher-custom-v<N>.exe(<home>\custom\build-name.txt 记当前序号),再把快捷方式原地重指到新文件;没人指向、也没在运行的旧构建会被自动清掉,只留当前和一个前身。
已知限制
- 插件升级会覆盖:dsh-desktop-shell 升级会重写 lib/install.js、lib/index.js 并覆盖 DSHLauncher.exe/DSHLauncher.cs。升级后重跑三个脚本即可(源码在 src/,不依赖插件里的那份)。
- dsh 升级会覆盖右栏补丁:@deepseek-ai/dsh-client-ui-layout 在 npx 缓存里,换版本就是新目录,重跑 patch-rightbar-width.ps1。脚本会先做 RIGHTBAR_DEFAULT_RATIO 存在性检查,版本变了会明确报错而不是乱改。
- 改的是上游文件的本地副本,升级/重装即失效,这是这套方案的本质代价;不接受的话应该去上游提 PR。
- 单实例互斥、托盘、就绪门控、令牌捕获这些骨架来自 dsh-desktop-shell,本仓库没有重写它们。
许可与来源
MIT,见 LICENSE。
- src/DSHLauncher.patched.cs 与 src/DSHLauncher.ico 源自 RINGOLINK/dsh-desktop-shell(MIT),在其上做修改;原版权声明保留在 LICENSE 中。
- scripts/patch-rightbar-width.ps1 只对 @deepseek-ai/dsh-client-ui-layout 的本地安装副本做字符串替换,不复制、不分发该包的任何代码;该包版权归 DeepSeek 所有。
- 本仓库不包含 dsh 本体、不包含 WebView2 运行时、不分发任何 exe。
dsh-desktop-shell-plus is a patch set for the community WebView2 shell of DeepSeek Harness. dsh ships only
web / tui / headless profiles — there is no official desktop app. This repo fixes what the stock shell gets 修正高 DPI Windows 下的问题:声明 per-monitor DPI 感知,把空白等待面板换成深色品牌启动画面,通过 DWM 把标题栏涂成深色,记住窗口边界,将 F12 绑定到 DevTools,并阻止启动器在后端仍在启动时重新导航。另有两个脚本,把右侧面板从视口的 45% 收窄到 20%,并阻止插件重建你重命名过的快捷方式。
所有内容都是源码 + 幂等 PowerShell,叠加在现有安装之上。不含二进制文件。MIT。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Broknsun/dsh-desktop-shell-plus
为桌面外壳补上深色启动页与高清缩放
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。