codex@macbookpro
·
2026-03-31
BUG-034-projector-route-unavailable-missing-detail.md
1# BUG-034: Projector hasAvailableRoute 缺少具体 skip 原因日志
2
3> 提交者:Claude
4> 日期:2026-03-30
5
6## 现象
7
8`projector.ts` 的 `hasAvailableRoute()` 在三种情况下返回 false:
9
101. `link.isActive !== true`
112. `targetKind !== "browser.proxy_delivery"`
123. `shellPage === true || tabId == null`
13
14但调用方只记录了 `route_unavailable`,没有区分具体原因。浏览器重启后 tabId 丢失、插件断连、shellPage 误标——这三种情况在日志里完全一样,排障时无法区分。
15
16## 影响
17
18浏览器重启后所有对话的续命会静默停止,直到插件重新上报 route。日志中只能看到 `route_unavailable`,无法判断是 tabId 丢失还是其他原因。
19
20## 建议修复
21
22将 `hasAvailableRoute` 改为返回 `{ available: boolean; reason: string }` 结构,或至少在返回 false 时附带原因字符串。projector 的 `shouldRenew` 将该原因透传到日志的 `details` 中。
23
24## 优先级
25
26低。不影响功能正确性,只影响排障效率。