← 返回列表
未验证
A Windows system-tray controller for DeepSeek Harness dsh ·…
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/12 · 已提供中文文档
A Windows system-tray controller for DeepSeek Harness (dsh) · dsh 的 Windows 托盘启动器:一键启停、版本管理与更新
综合分
29.5
GitHub 分
29.5
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add konmins/delfin该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
简体中文 · English Delfin DeepSeek Harness(dsh)的 Windows 系统托盘控制器 服务状态一眼可见,启停重启一键完成,内置版本管理与一键更新。 Delfin —— 德语与西班牙语里的「海豚」。就像任务栏角落那只小海豚,安静地守着你的 dsh。 Release License: MIT Platform Python Unofficial 这是什么 DeepSeek Harness(命令 dsh)提供了一个本地 Web 控制台。但它需要一直挂着一个终端窗口,出了问题也只能对着滚动的日志发呆。 Delfin 把这些收进系统托盘: - 海豚图标右下角一个 绿点/红点,扫一眼就知道服务活着没有 - 右键即可 启动 / 停止 / 重启,打开 Web 界面 - 内置 版本检查与一键更新,还能在 latest / next / alpha 通道之间切换 - 全程 没有控制台窗口,也不占用任务栏 功能特性 | 特性 | 说明 | | --- | --- | | 状态可视化 | 托盘图标右下角状态点:绿=运行中,红=已停止;悬停显示版本与 PID | | 一键控制 | 启动 / 停止 / 重启服务,停止时会连子进程一起收干净 | | 打开 Web 界面 | 自动从服务日志里取出带 token 的地址再打开浏览器(新版本 dsh 直连会 401) | | 版本管理 | 自带本地受管运行时(runtime/),版本可控、可随时切换 | | 一键更新 | 停服务 → 下载安装 → 自动重启,全程只弹一个气泡 | | 多通道 | latest / next / alpha 三个通道,偏好记在 settings.json | | 中英双语 | 界面文案内置中英两套,默认跟随系统语言,也可在托盘菜单里随时切换 | | 自动检查 | 启动 8 秒后静默查一次,只在真有新版时提示,不打扰 | | 单实例 | 命名互斥体保证只有一个托盘进程,重复双击不会叠出好几只海豚 | | 崩溃有据 | 所有异常写入 logs/tray.log;轮询线程永不退出,消息循环意外结束会自动重建图标 | | 开箱自检 | dsh-tray.exe --selftest 不需要开图形界面就能验证菜单、图标与网络 | 使用说明 右键托盘图标: 菜单随服务状态实时变化:服务没跑时「停止 / 重启」自动置灰,「检查更新」会就地给出结果。 | 菜单项 | 说明 | | --- | --- | | 状态: 运行中 · v0.1.5-rc.1 | 只读状态行,顺带显示当前版本 | | 打开 Web 界面 (http://127.0.0.1:3080) | 打开带 token 的完整地址;服务没跑时置灰 | | 启动服务 / 停止服务 / 重启服务 | 服务未运行时「停止/重启」置灰,反之亦然 | | 检查更新 | 查询 npm registry 的 dist-tags | | 更新到 v0.1.6(通道 latest) | 有新版时才出现;已是最新时显示 已是最新(vX) | | 更新通道 ▸ | latest / next / alpha 单选,选择后立即重查 | | 查看更新日志 | 打开 logs/update.log(含完整 npm 命令行) | | 查看服务日志 | 打开 logs/dsh.log | | 语言 / Language ▸ | 简体中文 / English 单选,选中立即生效并记入 settings.json | | 退出托盘 | 只关掉托盘进程,不会停止服务 | 关于界面语言:首次运行按 Windows 界面语言自动选择(非中文系统用英文)。 语言子菜单里的名称固定用各自母语书写(简体中文 / English),所以即使自动判断猜错了, 你也能在自己看得懂的那半边找到切换入口。「语言 / Language」这一项本身也是双语的。 找不到图标? Windows 默认把新出现的托盘图标收进「隐藏的图标」溢出区(任务栏那个 ^ 箭头)。 从溢出面板里把海豚拖到任务栏上即可固定常驻。 开机自启 把 start-tray.vbs 的快捷方式丢进启动目录: 1. 右键 start-tray.vbs → 发送到 → 桌面快捷方式 2. Win+R 输入 shell:startup 回车 3. 把快捷方式拖进去 start-tray.vbs 用 WScript.Shell.Run(..., 0, False) 启动,所以不会闪任何窗口。 快速开始 方式一:下载现成的 exe 到 Releases 下载 dsh-tray.exe,放到任意目录,双击即可。 需要本机已装 Node.js(dsh 依赖它)。 ⚠️ 这个 exe 可能被 Windows Defender 误报拦截 它用 PyInstaller 单文件打包,且尚未做代码签名,因此会被 Defender 的机器学习启发式判成 Trojan:Win32/Sabsik.FL.A!ml。 注意 !ml 这个后缀 —— 它表示启发式/机器学习判定,并非匹配到了真实的病毒特征。 这是 PyInstaller --onefile 长期存在的已知误报,与代码本身无关。本项目全部源码公开, 你随时可以按方式二自己跑一遍再打包。 被拦时的处理办法见下方「常见问题」;按里面的步骤仍然装不上,欢迎开 issue。 方式二:从源码运行 git clone https://github.com/konmins/delfin.git cd delfin pip install -r requirements.txt python dsh-tray.py 想打包成单文件 exe: build.bat 等价于: pyinstaller --onefile --noconsole --name dsh-tray ^ --icon assets\dsh-tray.ico ^ --hidden-import dsh_icons --hidden-import dsh_update ^ dsh-tray.py 系统要求 - Windows 10 / 11(依赖 Win32 API:命名互斥体、taskkill、netstat) - Node.js 18+(建议 20 或 22 LTS),dsh 本体由它运行 - Python 3.9+(仅源码运行时需要) - 默认端口 3080,可用环境变量 DSH_PORT 改 更新机制 这里有个坑值得说明。早期版本用 npx -y @deepseek-ai/dsh web 启动,而 npx 会把版本锁进缓存—— 一旦缓存里解析成 ^0.1.1-rc.2 这类范围,预发布版本只有 major.minor.patch 完全相同才满足约束, 结果是永远不会升级,还看不出来。 所以现在改成托盘自己管一份运行时: runtime/ ← 托盘创建和维护 ├── package.json ← 私有清单,dependencies 里精确锁定 dsh 版本 └── node_modules/@deepseek-ai/dsh/ - 启动时优先用 runtime\ 里的 dsh,没有才回退到 npx(dsh-runner.cmd) - 更新走 npm install @deepseek-ai/dsh@ --save-exact,版本号写死,不留歧义 - 首次使用不需要手动初始化,点一次「更新到 vX」它自己就把 runtime/ 建好 目录结构 delfin/ ├── dsh-tray.py 主程序:托盘图标、菜单、状态轮询、服务控制 ├── dsh_update.py 纯逻辑模块:semver 比较、registry 查询、运行时安装 ├── dsh_i18n.py 界面文案的中英双语表 + 系统语言自动检测 ├── dsh_icons.py 自动生成的图标(base64 内嵌,保证 exe 自包含) ├── make_icon.py 图标生成器:形状遮罩 + 状态点 → dsh_icons.py / .ico / preview.png ├── dsh-runner.cmd 服务启动器,被托盘调用 ├── start-tray.vbs 无窗口启动托盘(推荐) ├── start-tray.bat 同上,cmd 备用 ├── build.bat 一键打包 exe ├── selftest.py 纯逻辑自检(不含 GUI):semver / registry / 图标解码 ├── dsh-tray.spec PyInstaller 配置 ├── assets/ │ ├── whale_mask.png 海豚形状遮罩(重新生成图标所需) │ ├── dsh-tray.ico 多尺寸 exe 图标(16~256) │ └── donate/ 赞赏码 ├── preview.png 图标多尺寸预览(浅底 / 深底) └── runtime/ 本地受管 dsh 运行时(首次更新时生成,不进版本库) 常见问题 下载 exe 被拦,或者下载完文件就消失了? 这是 Defender 对「PyInstaller 单文件 + 未签名」的误报(Trojan:Win32/Sabsik.FL.A!ml), 详见方式一里的说明。不是真的病毒,处理办法: 1. 文件下载后消失 → Defender 把它隔离了。到「Windows 安全中心 → 病毒和威胁防护 → 保护历史记录」,找到那条 Trojan:Win32/Sabsik.FL.A!ml,点「操作 → 还原」。 2. 还原不了(显示已删除) → 先加排除项再重新下载: 「病毒和威胁防护 → 管理设置 → 排除项 → 添加或删除排除项 → 添加 → 文件夹」, 选中你打算放 dsh-tray.exe 的目录(或先建一个空目录专门放它)。 3. Edge 提示「已阻止不安全的下载」 → 在下载提示上点 … → 选「保留」。 4. 不想折腾杀软设置 → 走方式二,源码全在仓库里,自己跑。 顺带一提:如果只是弹「Windows 已保护你的电脑 / 未知发布者」,那只是 SmartScreen 对 「从 Internet 下载且无签名」文件的例行提示,可以勾选「更多信息 → 仍要运行」。 也可以用 Unblock-File .\dsh-tray.exe 去掉文件的「来自 Internet」标记 —— 但这只影响 SmartScreen 提示,不能解除 Defender 的病毒判定。 托盘里找不到海豚? 被 Windows 收进溢出区了,见上方「使用说明」末尾。 「打开 Web 界面」打不开或提示 401? 新版 dsh 要求地址带 ?token=…。托盘会从 logs/dsh.log 里抓最后一条完整地址。 如果日志被清空过,先「重启服务」让新地址落盘。 更新失败怎么办? 打开「查看更新日志」,里面记着完整的 npm 命令与返回码。常见原因是 npm 不在 PATH 里, 或网络访问 registry 超时。也可以直接删掉 runtime/ 目录重新更新一次。 托盘莫名其妙消失了? 看 logs/tray.log。所有未捕获异常、pystray 内部错误、消息循环重建记录都在里面。 能改端口吗? 可以,设置环境变量 DSH_PORT 后重启托盘,菜单和探测都会跟着走。 界面语言能改吗? 能。右键托盘 → 语言 / Language → 选 简体中文 或 English,选中立即生效并记入 settings.json。 首次运行按 Windows 界面语言自动判断(非中文系统用英文)。也可以用 dsh-tray.exe --lang en 在启动时强制指定,写 --lang 时 dsh-tray.exe --lang=en 这种形式同样有效。 免责声明 - 本项目是第三方非官方工具,与 DeepSeek 官方无任何隶属或背书关系。 - 图标使用的 DeepSeek 海豚标志是其权利人的商标,此处仅用于标识「这个托盘控制的是 dsh」。 商标不适用本仓库的 MIT 许可(详见 LICENSE 与下方说明)。 - 程序按「原样」提供,不对因使用造成的任何后果负责。 - 本仓库不包含 dsh 本体,也不随源码分发其二进制;运行时由你的机器通过 npm 自行安装。 赞赏 如果这个小工具帮到了你,欢迎请作者喝杯咖啡 ☕ 也可以直接给这个仓库点个 ⭐ —— 那是最不要钱的鼓励。 许可 MIT © 2026 Konmin 关于图标与商标:assets/whale_mask.png、assets/dsh-tray.ico、dsh_icons.py 与 preview.png 中包含的形状源自 DeepSeek 的官方标志,其商标权归权利人所有。上述文件仅为表明本项目 是 dsh 的配套工具而使用,不包含在 MIT 许可的授权范围内。若权利人提出异议,可自行 用 make_icon.py 换掉形状遮罩重新生成一套图标。 English Delfin is an unofficial Windows system-tray controller for DeepSeek Harness (dsh). Full English documentation: README.en.md
扫码进群