# deepseek-tray DeepSeek Harness **Web 版桌面包装**(Windows 系统托盘 + 守护进程)。 把 `dsh web` 变成一个常驻托盘应用:**全程隐藏终端**、异常自动重启、一键开机自启、一键更新。 ## 特性 - **隐藏终端**:以 `node /lib/bin.js web --no-open` 直接启动(无 shell 包装),子进程使用 `CREATE_NO_WINDOW` + `HideWindow`,无任何命令行窗口 - **守护重启**:进程异常退出后自动重启(可配置延迟),托盘显示运行状态、PID、重启次数 - **启停管理**:托盘菜单一键启动 / 停止 / 重启,实时状态查询 - **开机自启**:一键开关(写 HKCU Run 键,无需管理员权限) - **一键更新**:执行 `npm install -g @deepseek-ai/dsh@latest --allow-scripts=...`,可开启定期后台更新(发现新版本才更新并重启) - **带 token 打开**:自动捕获 `dsh web` 输出的访问地址(含 token),点菜单直接进入已认证界面 - **单实例保护**:命名互斥体,避免重复守护 - **零外部依赖**:除托盘库外无运行时依赖,单文件分发(约 5 MB) ## 构建 ```powershell go build -ldflags "-H=windowsgui -s -w" -o deepseek-tray.exe . ``` ## 运行方式 | 命令 | 说明 | |---|---| | `deepseek-tray.exe` | 托盘模式(默认) | | `deepseek-tray.exe --silent` | 静默托盘(开机自启使用) | | `deepseek-tray.exe daemon` | 无 UI 守护模式(适合注册为 Windows 服务) | | `deepseek-tray.exe status` | 命令行状态查询 | | `deepseek-tray.exe version` | 版本号 | ### 注册为 Windows 服务(可选) 使用 [NSSM](https://nssm.cc/): ```powershell nssm install DeepSeekTray "C:\path\to\deepseek-tray.exe" daemon nssm start DeepSeekTray ``` ## 托盘菜单 - 状态:运行中 (PID) / 已停止 / 正在更新 - 打开 Web 界面(含 token,直接进入) - 启动服务 / 停止服务 / 重启服务 - 开机自启(勾选) - 定期自动更新(勾选) - 立即更新 DSH - 版本:当前安装的 dsh 版本 - 查看日志 / 打开配置文件 - 退出(停止服务并退出) ## 配置 位置:`%APPDATA%\deepseek-tray\config.json`(首次运行自动生成) ```json { "webPort": 3080, "webHost": "127.0.0.1", "nodePath": "", "dshBinJs": "", "autoStart": false, "autoUpdate": false, "updateIntervalHours": 24, "restartDelaySeconds": 5 } ``` | 字段 | 说明 | |---|---| | `webPort` / `webHost` | dsh web 监听端口与地址(默认 3080 / 127.0.0.1) | | `nodePath` / `dshBinJs` | 留空自动探测(`node` + `npm root -g` 下的 dsh 入口) | | `autoStart` | 开机自启(与托盘勾选同步) | | `autoUpdate` / `updateIntervalHours` | 定期后台更新开关与间隔 | | `restartDelaySeconds` | 异常退出后的重启延迟 | > 配置支持 UTF-8 BOM(记事本编辑后仍可解析)。 ## 日志 `%APPDATA%\deepseek-tray\logs\tray-YYYYMMDD.log`(含 dsh web 的 stdout/stderr) ## 环境要求 - Windows 10/11 - 已全局安装 dsh:`npm install -g @deepseek-ai/dsh@latest --allow-scripts='@deepseek-ai/dsh-subprocess-local,koffi,node-pty,@google/genai,protobufjs'` - `node` 在 PATH 中 ## 许可证 见 [LICENSE](LICENSE)。 ## 版本 - v2.0.0 — 重写为 `dsh web` 托盘守护(旧版余额查询功能已归档于 `legacy-v1` 标签)