使用者在 Windows 乾淨環境跑 installer 後首次啟動,看到「伺服器無法
啟動」紅 banner + Settings Stop 卡住。根因:
Stage 2 ensurePythonRuntime 在首次 bootstrap 要做 (1) 解壓 ~15MB
Python tarball (2) 建 venv (3) pip install 9 個 wheel(含 numpy 20MB
+ opencv 50MB + KneronPLUS 等 ~150MB 解壓後)。乾淨 Windows 環境上
這三步合計 2-5 分鐘,遠超 R5-E1 的 60 秒 startup hard timeout,導致
pipeline FailStage + emitError(total-timeout) → Error state → 紅 banner。
R5-E1 的 60 秒預算是針對「日常啟動」,不含首次一次性 bootstrap。
修法:StartupPipeline 加 PauseHardTimeout / ResumeHardTimeout API,
app.go 在 ensureBundledPython 偵測到「真正 bootstrap」條件(pythonBin
不存在)時呼叫 Pause,defer Resume。暫停期間 sinceTotal 扣掉 paused
duration,hard timeout 不觸發。Soft timeout(每階段 20 秒「正在重試」
hint)照常,使用者仍能看到進度提示。
配套:修 killStaleServerOnPort 識別 go run 編出來的 server(Bug A)。
原本用 ps -o comm= 比對 "visiona-local-server" 字串,但 go run 產物
comm 只是 "server"(或 "exe"),生產環境不受影響,但開發 / Reviewer
測試流程會踩到(早上 M8-4 Reviewer 留了一組 go run server 孤兒占住
port 3721 到現在)。改用 ps -o args= 取完整 command line,匹配 規則:
1. 含 "visiona-local-server" — packaged binary
2. 含 "/go-build" 且含 "visiona-local/server" 或 "/exe/server" — go run
驗證:
- visiona-local 套件 go build / vet / test / test -race 全綠
- server 套件 go build / vet / test 全綠
- 3 個新 unit test 通過:
- PauseHardTimeout_ExcludesPausedDuration(effective 時鐘正確扣除)
- PauseHardTimeout_PreventsHardTimeout(wall clock 120s + paused 90s
= effective 30s,不觸發 60s hard timeout)
- ResumeHardTimeout_NoopWhenNotPaused(idempotent)
- macOS dmg 重 build 163MB OK
待做(M8-10b):使用者在 Windows 乾淨環境重新 install + 驗證首次啟動。
如果仍失敗,Windows log 位置:
%APPDATA%\visiona-local\logs\server.stdout.log
%APPDATA%\visiona-local\logs\server.stderr.log
%APPDATA%\visiona-local\logs\wails.log(若有)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
visionA
Innovedus visionA monorepo. Currently contains:
Subprojects
local-tool/
visionA-local — local-first edge AI desktop tool, derived from edge-ai-platform. Wails + Go + Next.js, packaged as macOS dmg / Windows exe / Linux AppImage.
See local-tool/README.md for details.
License
TBD (internal use)
Description
Languages
Go
42.4%
TypeScript
33.7%
JavaScript
7.5%
Python
5.3%
Makefile
3.7%
Other
7.4%