在日常使用观澜的头两个月里,有一个特别让人头疼的场景:家里或机房的 Windows 虚拟机、Linux 服务器半夜因为宿主机维护或更新自动重启了,结果第二天早上一看,这几台机器在观澜看板上全成了“离线”。连上去一查,机器明明好端端开着,只是因为还没人输密码登录进 GUI 桌面会话,依赖桌面进程启动的采集端就一直没跑起来。

监控工具如果非得等人登录桌面才能工作,那在服务器场景下就等于少了一半腿。9 月中旬,我决定连同前端架构和后台服务一起做一次大手术。

v3.0.0 统一共享控制台 UI

2026 年 9 月 12 日(v3.0.0,Commit 5c19f77),我先把 Web 网页端和 Electron 桌面端原本各写各的界面代码彻底合并,抽进了共享包 packages/console-ui。

新的控制台被清晰地划分为**“总览、设备目录、接入中枢、设备详情、独立设置”**五大核心模块。无论是在浏览器里打开 guanlan.igng.net,还是在本地打开桌面客户端,看到的组件结构、交互逻辑和数据字段都完全一致,改一处源码两端同时生效。

v3.0.18 机器级无头服务与一行命令静默部署

紧接着在 9 月 16 日(v3.0.18,Commit 88eaa9d),我动手解决了“不进桌面就不报数据”的顽疾。我把数据采集面从 GUI 界面进程里彻底剥离出来,做成了开机即跑的机器级无头后台服务:在 Windows 上注册为原生的 GuanlanAgent LocalSystem 系统服务(再加一层计划任务兜底防杀),在 Linux 上则注册为系统级的 guanlan-agent.service systemd 单元。

只要机器通电进系统,不需要任何用户登录桌面,探针已经在后台稳稳地往中枢上报遥测数据了。同时我果断下架了以前维护起来很累赘的独立 CLI 压缩包和旧 GTK4 残留链路,只保留唯一的桌面安装包:平时双击打开界面时,它会通过 attach-or-spawn 机制优先挂载本机后台服务(遇到非管理员权限则自动进入只读脱敏模式);而在无头服务器上,直接调用随包附带的 guanlan-agent CLI,敲一行 /S /HUB= /KEY= 就能完成静默安装并接入中枢。