🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

suanrong704/dsh-tray

DeepSeek Harnessspec-screened扫描:无法判定在 GitHub 查看 ↗
未验证

给 DeepSeek Harness Web GUI 用的 Windows 托盘启动器:双击启动、托盘常驻、右键退出。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/18 · 已提供中文文档

DeepSeek Harness Web GUI 的 Windows 托盘启动器:无控制台窗口、单实例、感知令牌的浏览器打开。

综合分
29.2
GitHub 分
29.2
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add suanrong704/dsh-tray
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:已验证本站已于 0 天前真实安装成功
是什么
dsh 原生插件 · browser
装得上吗
本站已真实安装成功(非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 8 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/25(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-tray

build

给 DeepSeek Harness Web GUI 用的 Windows 托盘启动器:双击启动、托盘常驻、右键退出。

- 全程没有 cmd / PowerShell 黑窗口(编译为 GUI 子系统)
- 单个 ~44 KB 的 exe,无 Electron、无运行时依赖(用系统自带的 .NET Framework)
- 再次双击只打开浏览器,绝不启动第二个 DSH
- 自动使用 DSH 打印的带 token 地址,避免重启后认证失败
- 「退出」结束整棵进程树,不留 pwsh 子进程

下载即用

不想自己编译的话,到 Releases 下载
dsh-tray-v1.2.0-win-x64.zip,解压后双击 dsh-tray.exe 即可 —— 不需要 Node,也不需要编译。

首次运行零配置:工作区默认使用你的用户主目录;要改就编辑 exe 同目录的 dsh-tray.ini
(格式见 dsh-tray.ini.example)。

为什么还需要一个启动器

dsh web 本身很好用,但放到桌面日常使用时有几个坑,这个项目就是来填的:

| 问题 | dsh-tray 的做法 |
|---|---|
| 必须一直留着一个终端窗口,关掉就停了 | 托盘常驻,双击启动、右键退出 |
| 重复运行会起第二个实例、抢端口 | 按端口隔离的互斥体 + 命名事件,第二次启动只通知第一个实例打开浏览器 |
| 重启后用裸地址 http://127.0.0.1:3080 打开会认证失败 | 启动时传 --no-open,抓取 dsh 输出的 ?token=... 地址并用它打开浏览器 |
| 只杀父进程会留下 pwsh 等子进程 | 退出走 taskkill /PID  /T /F 结束整棵树 |

图标说明

本项目不携带 DeepSeek 的图形标识。两类图标来源不同:

① 托盘图标(右下角)—— 启动时按以下顺序取得:

1. 运行时渲染(默认):读本机 DSH 自带的 favicon.svg
($DSH_HOME/profiles/*/node_modules/@deepseek-ai/dsh-web-frontend/dist/favicon.svg),
用 .NET 自带的 WPF 直接光栅化并组装成多尺寸图标 —— 不需要 Node,也不需要 sharp。
2. exe 内嵌图标(本项目自己的图形)→ 系统默认图标。

任何一步失败(缺 WPF、SVG 结构变化、找不到 favicon)都会被捕获后退回下一级,不影响启动。
可在 dsh-tray.ini 写 officialIcon=0 关掉官方图标,或用环境变量 DSH_FAVICON 指定其他 SVG。

② exe 文件图标 / 桌面快捷方式图标 —— 是本项目原创的胖鲸图形
(assets/icon-app.ico,MIT,构建时内嵌)。PE 资源无法在运行时修改,所以这里用我们自己的图,
而右下角托盘里是 DeepSeek 官方鲸鱼(从你本机的 DSH 读取,从不随二进制分发)。

维护者想改这张图:编辑 tools/make-app-icon.js 里的图形定义并重新运行它。

环境要求

- Windows 10 / 11
- .NET Framework 4.x(系统自带;csc.exe 与运行程序都用它,不需要 .NET SDK)
- Node.js 不需要:日常构建与运行都不依赖它(仅维护者重新生成 assets/icon-app.ico 时才用得上)
- 一个已安装的 DeepSeek Harness(npx @deepseek-ai/dsh web 或全局安装均可)

从源码构建(可选)

git clone https://github.com/suanrong704/dsh-tray
cd dsh-tray
pwsh -File scripts/build.ps1      # 或直接双击 scripts\build.cmd

产物在 dist\:

| 文件 | 说明 |
|---|---|
| dsh-tray.exe | 托盘程序 |
| dsh.ico | 图标(构建时从本机 DSH 读取官方 favicon 生成,见 NOTICE) |
| dsh-tray.ini | 配置(首次构建时从 .example 复制,不会覆盖你已有的配置) |
| selftest.txt | 自检输出 |

scripts/build.ps1 -SkipIcon 可跳过图标只做编译检查(CI 用;CI 机器上没有 DSH)。

使用

1. 编辑 dist\dsh-tray.ini,把 workspace 改成你希望 DSH 使用的工作区根目录
2. 双击 dist\dsh-tray.exe —— 右下角出现鲸鱼托盘图标
3. 想开机自启:Win+R 输入 shell:startup,把 dsh-tray.exe 的快捷方式丢进去

托盘操作:

| 操作 | 结果 |
|---|---|
| 左键 / 双击图标 | 打开浏览器(带 token 地址) |
| 右键 → 打开 DeepSeek Harness | 同上 |
| 右键 → 打开日志 | 打开 %LOCALAPPDATA%\DshTray\dsh-web.log(DSH 的完整 stdout/stderr) |
| 右键 → 打开工作区 | 资源管理器打开配置的 workspace |
| 右键 → 退出(结束 DSH) | 结束 DSH 进程树并移除图标 |
| 再次双击 exe | 通知已在运行的实例打开浏览器后自行退出 |

配置

dsh-tray.ini(放在 exe 旁边):

workspace=C:\Users\YourName\workspace   # GUI 里新建会话的默认根目录
port=3080                               # Web GUI 端口

也支持环境变量,优先级高于 ini:DSH_WORKSPACE、DSH_PORT、DSH_EXE。
未配置时 workspace 默认是用户主目录。

dsh 入口的查找顺序

1. 环境变量 DSH_EXE 指向的文件
2. PATH 上的 dsh.cmd(全局安装)
3. 已安装的 @deepseek-ai/dsh/lib/bin.js —— 依次检查 npm -g、pnpm -g、npx 缓存,取修改时间最新的一份
4. 兜底:npx -y @deepseek-ai/dsh web --port  --no-open(需要联网,首次较慢)

命令行参数

dsh-tray.exe                      # 正常启动(等同双击)
dsh-tray.exe --open               # 让已在运行的实例打开浏览器
dsh-tray.exe --stop               # 让已在运行的实例退出(并结束 DSH)
dsh-tray.exe --selftest out.txt   # 只写诊断信息,不出界面、不启动任何进程

--open / --stop 依据同一份 dsh-tray.ini 解析端口;多实例时配合 DSH_PORT 使用。

工作原理

- 启动:带 --no-open 启动 DSH,stdout/stderr 重定向进日志;轮询端口就绪后,
再等待 stdout 里出现 dsh web: http://127.0.0.1:/?token=...,用这个地址打开浏览器
(最多等 10 秒,超时回退裸地址)。这正是重启后仍能正常认证的关键。
- 单实例:命名互斥体(名字含端口)。第二个实例 Set 一个命名事件,让第一个实例打开浏览器,
自己立即退出。
- 退出:若 DSH 是本程序启动的 → 结束它启动的进程树;若是外部启动的 → 用 netstat -ano
找到占用该端口的 PID,再结束其进程树。
- 外部启动模式:端口的生命周期就是这个图标的生命周期——端口消失后图标自动退出,
下次双击即可正常接管。

已知限制

- 仅 Windows(依赖 WinForms 与 taskkill)。
- 界面文案跟随系统语言(中文系统中文,其余英文);可用 dsh-tray.ini 的 language= 或环境变量 DSH_TRAY_LANG=zh|en 强制指定。
- 若 DSH 是外部启动的(例如终端里的 npx dsh web),托盘拿不到 token 地址,只能打开裸地址;
只要浏览器还持有该进程的签名 cookie 就能用,否则请从本启动器重启 DSH。
- 端口就绪后最多再等 10 秒抓取 token URL,超时则回退裸地址。
- 图标外观取决于你本机的 DSH 版本;托盘图标是运行时生成的,而 exe/快捷方式图标必须构建时内嵌。

商标与致谢

本项目非官方,与 DeepSeek 无隶属关系。仓库不分发 DeepSeek 的图形标识:
图标在构建时从你本机的 DSH 读取。详见 NOTICE。

也因此只发布源码,不发布预编译二进制 —— 构建出的 exe 会内嵌该图形。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群