From d7147e67a7b739238aec674a7df75dc2a5e21bc7 Mon Sep 17 00:00:00 2001 From: PMon Dev Date: Tue, 27 Oct 2026 23:37:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=B8=B8=E9=A9=BB=E9=87=87=E9=9B=86):=20?= =?UTF-8?q?=E6=8E=A2=E9=92=88=E4=B8=8D=E5=8F=AF=E7=94=A8=E5=8F=AA=E6=8A=A5?= =?UTF-8?q?=E3=80=8C=E4=B8=8D=E7=9F=A5=E9=81=93=E3=80=8D=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E6=8A=8A=E9=87=87=E9=9B=86=E7=AB=AF=E5=AE=9E=E9=99=85=E8=AF=BB?= =?UTF-8?q?=E5=88=B0=E7=9A=84=E9=85=8D=E7=BD=AE=E6=91=86=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 一、探针不可用 ≠ 没在跑(把上一轮糊回去的洞补上) installer 在 ccb6c3f 里给 `process` 加了 `probe_available/probe_error`,把 「查不了」与「没在跑」分开了(人话输出已经用上);但 JSON 消费方没跟上: `ResidentStatus.fromJson` 只读 `running`/`pids`,于是 Windows(无 pgrep)上 `running=false + registered=true` → 卡片一本正经显示 **"已安装但没起来"(橙色告警)**, 而真相是"一次都没查过"。这比"没有卡片"糟得多:它看起来**很确定**,用户会 照着它去重装一个已经装好的东西。 - `fromJson` 读 `probe_available`,**只有明确 false 且没观测到进程**才降级为 `ResidentState.unknown`(中性灰)+ detail 写明原因与"这不等于没在运行" - `probe_available` 做成**三态**(`bool?`):缺字段(老二进制/老快照)→ 不看该判据。 若把"缺字段"当 false,所有老机器都会被判成"未知"——那是用另一种方式骗人 - 正面观测优先:`running=true`/有 pid 时仍判 running(探针元数据不压过证据) ## 二、采集端实际读到的配置:诚实标注,不做同步 macOS GUI 是真沙箱(容器内 `ConfigStore`),常驻采集端由 launchd 拉起、读真实 家目录 —— 磁盘上**两份 config 同时活着**:界面里改网关地址只改容器那份,采集端 看到的还是旧的,两边都不报错。三条同步路本轮都不通(沙箱无权写容器外 / 沙箱子 进程继承沙箱 / 让 agent 读容器会给主路径加上"必须装过 GUI"的依赖),故只做标注: - 卡片显示「采集端当前读到: · 」(来自 `status --json`) - 与界面输入不一致时明说不一致,并给出下一步(点一次「重新安装并启动」) - 配置面板加一句:上面两项只对「界面内采集」生效,常驻采集读的是安装器那份 - 未安装/问不到时不显示这一行(没有"采集端读到的配置"这回事,不能凭空造) ## 三、`log.path` 的漂移种子写进注释 `/tmp/