jim800121chen
fac07c39d0
fix(local-agent): 配對前自動 rescan USB,解序號偵測時序問題
問題:配對時 exchange 撈 GET /api/devices(ListDevices=讀快取、不重新
偵測)。若 agent 啟動時 USB 尚未插入/未偵測到,快取為空 → 配對撈不到
序號 → payload 不帶 devices → 雲端裝置「尚未回報序號」,即便之後插上
USB 也不會自動重偵測。
修法(方案 A、最小侵入):
- NewLocalDeviceLister 改打 POST /api/devices/scan(ScanDevices →
Manager.Rescan() 重新偵測 USB),配對前強制重掃一次
- localDeviceListTimeout 2s → localDeviceScanTimeout 8s(真 SDK scan
kp.core.scan_devices 較慢、給餘裕,逾時走 fallback 不卡配對)
- app.go DeviceLister 注入註解同步更新(Reviewer Mi-1)
不變量保留(Reviewer 獨立驗證):
- rescan 失敗/逾時 → lister return nil(不 error)→ payload omit devices
→ 配對照常(序號是加值資訊,不中斷配對)
- Rescan 對序號身分未變的 session 保持連線(serialIdentity 相等 continue)、
只斷被拔除的 → 不誤斷在線 tunnel/inference session
- Pair 由 lifecycleMu 序列化、Rescan write lock 全量重建 → 重試冪等安全
Reviewer 通過(0C/0M/1Mi/2Sug)。兩 module build/vet/test/race 全綠、
8 個新 tunnel 行為測試 PASS(端到端快取空→rescan→序號進 payload +
逾時 fallback)、gitleaks 0。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 15:02:31 +08:00
..
2026-07-10 09:01:10 +08:00
2026-07-10 09:01:10 +08:00
2026-07-16 15:02:31 +08:00
2026-05-01 11:22:01 +08:00
2026-07-10 09:01:10 +08:00
2026-07-10 09:01:10 +08:00
2026-07-16 15:02:31 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00
2026-05-01 11:22:01 +08:00