docs: V8 CachedData diagnosis + cache clearing for renderer v3 #task-264
This commit is contained in:
@@ -200,6 +200,12 @@
|
|||||||
- **해결**: HTML 패치 로직을 `htmlFiles = ['workbench.html', 'workbench-jetski-agent.html']` 루프로 변경하여 **양쪽 모두 inline** 삽입. 수동 pre-patch 스크립트(`/tmp/patch_workbench.py`)로 즉시 적용 + product.json 체크섬 업데이트
|
- **해결**: HTML 패치 로직을 `htmlFiles = ['workbench.html', 'workbench-jetski-agent.html']` 루프로 변경하여 **양쪽 모두 inline** 삽입. 수동 pre-patch 스크립트(`/tmp/patch_workbench.py`)로 즉시 적용 + product.json 체크섬 업데이트
|
||||||
- **주의**: **항상 양쪽 HTML을 동일하게 패치**. AG가 어느 HTML을 로드할지 런타임까지 알 수 없음. pre-patch 후 1회 풀 재시작이면 충분 (체크섬 사전 업데이트 완료)
|
- **주의**: **항상 양쪽 HTML을 동일하게 패치**. AG가 어느 HTML을 로드할지 런타임까지 알 수 없음. pre-patch 후 1회 풀 재시작이면 충분 (체크섬 사전 업데이트 완료)
|
||||||
|
|
||||||
|
### [2026-03-09] V8 CachedData — 체크섬 정상이어도 스크립트 미실행
|
||||||
|
- **증상**: HTML 패치 + product.json 체크섬 일치 + Bridge 서버 정상 → 그런데도 renderer 스크립트 미실행 (`/deep-inspect` timeout)
|
||||||
|
- **원인**: AG 프로세스 인자 `--code-cache-schemes=vscode-webview,vscode-file`에 의해 V8 바이트코드 캐시가 `vscode-file://` 프로토콜에도 적용. product.json 체크섬 검증과 V8 코드 캐시는 **별도 메커니즘** — 체크섬이 맞아도 V8은 `%APPDATA%\Antigravity\CachedData`의 이전 컴파일된 바이트코드를 재사용
|
||||||
|
- **해결**: `%APPDATA%\Antigravity\CachedData\*` 전체 삭제 후 AG 풀 재시작. AG 실행 중에도 삭제 가능 (파일 잠금 없음 확인됨)
|
||||||
|
- **주의**: CachedData 삭제 후 첫 시작이 약간 느릴 수 있음 (V8이 모든 JS를 재컴파일). **HTML 패치 변경 시마다 CachedData 삭제 필수**. `product.json` 체크섬 업데이트만으로는 불충분
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 승인 전략 결정 체인 (다음 세션 필독)
|
## 승인 전략 결정 체인 (다음 세션 필독)
|
||||||
@@ -224,7 +230,7 @@
|
|||||||
|
|
||||||
| # | 접근 | 상태 | 다음 단계 |
|
| # | 접근 | 상태 | 다음 단계 |
|
||||||
|---|------|------|-----------|
|
|---|------|------|-----------|
|
||||||
| 1 | **Renderer v3 Deep DOM Traversal** | 구현+배포+pre-patch 완료, **AG 재시작 후 검증 필요** | AG 재시작 → `/deep-inspect` 결과 확인 |
|
| 1 | **Renderer v3 Deep DOM Traversal** | 패치+체크섬 OK, **V8 CachedData 삭제 완료, AG 재시작 후 검증** | AG 재시작 → `curl.exe http://127.0.0.1:34332/deep-inspect` |
|
||||||
| 2 | `<webview>.executeJavaScript()` | v3에 포함, **미검증** | 위 결과에서 `hasExecJS=true`이면 유력 |
|
| 2 | `<webview>.executeJavaScript()` | v3에 포함, **미검증** | 위 결과에서 `hasExecJS=true`이면 유력 |
|
||||||
| 3 | TerminalExecutionPolicy.EAGER (Turbo) | 미시도, **최후 수단** | 통제권 포기이므로 사용자 승인 필요 |
|
| 3 | TerminalExecutionPolicy.EAGER (Turbo) | 미시도, **최후 수단** | 통제권 포기이므로 사용자 승인 필요 |
|
||||||
|
|
||||||
@@ -234,4 +240,5 @@
|
|||||||
- `<webview>.executeJavaScript()`가 **유일한 표준 관통 경로** (Electron API)
|
- `<webview>.executeJavaScript()`가 **유일한 표준 관통 경로** (Electron API)
|
||||||
- AG 패치 후 **반드시 풀 프로세스 재시작** 필요 (Reload Window 불충분)
|
- AG 패치 후 **반드시 풀 프로세스 재시작** 필요 (Reload Window 불충분)
|
||||||
- **양쪽 HTML (workbench.html + workbench-jetski-agent.html) 모두 inline 패치** 필수
|
- **양쪽 HTML (workbench.html + workbench-jetski-agent.html) 모두 inline 패치** 필수
|
||||||
|
- HTML 패치 변경 시 **`%APPDATA%\Antigravity\CachedData` 삭제 필수** (V8 바이트코드 캐시 무효화)
|
||||||
|
|
||||||
|
|||||||
@@ -7,3 +7,4 @@
|
|||||||
| 003 | 15:32~17:59 | Renderer v3 deep DOM traversal (iframe/webview/shadow 관통) | `32bf5ae` | 🔧 |
|
| 003 | 15:32~17:59 | Renderer v3 deep DOM traversal (iframe/webview/shadow 관통) | `32bf5ae` | 🔧 |
|
||||||
| 004 | 18:08~18:23 | Deep inspect HTTP endpoint (/deep-inspect) + 렌더러 재귀 인스펙터 | `a07d9d3` | 🔧 |
|
| 004 | 18:08~18:23 | Deep inspect HTTP endpoint (/deep-inspect) + 렌더러 재귀 인스펙터 | `a07d9d3` | 🔧 |
|
||||||
| 005 | 18:30~19:28 | workbench.html inline v3 패치 누락 수정 + pre-patch 검증 | `b61cff1` | 🔧 |
|
| 005 | 18:30~19:28 | workbench.html inline v3 패치 누락 수정 + pre-patch 검증 | `b61cff1` | 🔧 |
|
||||||
|
| 006 | 19:38~19:56 | V8 CachedData 진단 + 캐시 삭제 (renderer 미실행 근본 원인) | docs only | 🔧 |
|
||||||
|
|||||||
43
docs/devlog/entries/20260309-006.md
Normal file
43
docs/devlog/entries/20260309-006.md
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# V8 CachedData 진단 + 캐시 삭제
|
||||||
|
|
||||||
|
- **시작**: 2026-03-09 19:38 KST
|
||||||
|
- **종료**: 2026-03-09 19:56 KST
|
||||||
|
- **상태**: 🔧 미완료 (AG 재시작 후 /deep-inspect 검증 필요)
|
||||||
|
- **Vikunja**: #264 → 진행중
|
||||||
|
|
||||||
|
## 핵심 발견
|
||||||
|
|
||||||
|
### Root cause: V8 바이트코드 캐시가 패치된 HTML을 무시
|
||||||
|
|
||||||
|
이전 세션(#005)에서 HTML 패치 + product.json 체크섬 일치를 확인했으나, AG 재시작 후 `/deep-inspect` timeout 발생.
|
||||||
|
|
||||||
|
**진단 결과:**
|
||||||
|
- Bridge 서버: ✅ 정상 (`/ping → pong`, port 34332)
|
||||||
|
- HTML 패치: ✅ 양쪽 HTML에 v3 inline 스크립트 존재 (deepFindButtons, HARDCODED_PORT, deep-inspect)
|
||||||
|
- product.json 체크섬: ✅ 실제 파일 해시와 정확히 일치
|
||||||
|
- Extension v0.3.5: ✅ 모든 v3 코드 포함
|
||||||
|
- **Renderer: ❌ 미응답** — 스크립트가 HTML에 있지만 실행되지 않음
|
||||||
|
|
||||||
|
**원인**: AG 프로세스 인자 `--code-cache-schemes=vscode-webview,vscode-file`
|
||||||
|
- V8 바이트코드 캐시가 `vscode-file://` 프로토콜에도 적용
|
||||||
|
- `%APPDATA%\Antigravity\CachedData\` (111MB)에 이전 컴파일된 바이트코드 보유
|
||||||
|
- product.json 체크섬 검증과 V8 코드 캐시는 **별도 메커니즘**
|
||||||
|
- 체크섬이 맞아도 V8은 캐시된 바이트코드를 우선 사용
|
||||||
|
|
||||||
|
### 조치
|
||||||
|
- `%APPDATA%\Antigravity\CachedData\*` 전체 삭제 → 0 items remaining
|
||||||
|
- AG 실행 중에도 삭제 가능 (파일 잠금 없음 확인)
|
||||||
|
|
||||||
|
## 다음 단계 (다음 세션)
|
||||||
|
|
||||||
|
1. AG 재시작 (CachedData 없으므로 V8이 HTML을 새로 파싱)
|
||||||
|
2. `curl.exe http://127.0.0.1:34332/deep-inspect` 실행
|
||||||
|
3. 결과 JSON 받으면 webview iframe 접근성 확인
|
||||||
|
4. ACCESSIBLE → E2E 승인 테스트, BLOCKED → executeJavaScript() 확인
|
||||||
|
|
||||||
|
## 파일 변경
|
||||||
|
|
||||||
|
| 파일 | 변경 |
|
||||||
|
|------|------|
|
||||||
|
| `.agents/references/known-issues.md` | V8 CachedData 이슈 추가 + 승인 전략 상태 업데이트 + 핵심 전제에 CachedData 삭제 필수 추가 |
|
||||||
|
| `docs/devlog/2026-03-09.md` | #006 항목 추가 |
|
||||||
Reference in New Issue
Block a user