docs: confirm #14 failed, add systematic trial plan (A→E)

This commit is contained in:
2026-03-07 20:48:14 +09:00
parent 3fab31b465
commit 804aa19b35

View File

@@ -123,9 +123,9 @@
- `.system_generated/click_feedback/` → 브라우저 스크린샷만 - `.system_generated/click_feedback/` → 브라우저 스크린샷만
- **결론**: Brain 디렉토리에는 AI 대화 텍스트가 저장되지 않음 - **결론**: Brain 디렉토리에는 AI 대화 텍스트가 저장되지 않음
### ❌ 시도 14: `getDiagnostics.extensionLogs`에서 AI 텍스트 추출 (현재, 미검증) ### ❌ 시도 14: `getDiagnostics.extensionLogs`에서 AI 텍스트 추출
- extensionLogs에서 notify_user 패턴, content 블록, 한국어 텍스트 검색 - extensionLogs에서 notify_user 패턴, content 블록, 한국어 텍스트 검색
- **결과**: 미검증 상태 - **결과**: ❌ 실패 — summary fallback 트리거됨, extensionLogs에 AI 응답 텍스트 없음
- **커밋**: `0d90b25` - **커밋**: `0d90b25`
--- ---
@@ -200,3 +200,98 @@
3. **Brain 디렉토리 = artifacts만**: 실제 AI 대화 텍스트는 brain에 저장되지 않음 3. **Brain 디렉토리 = artifacts만**: 실제 AI 대화 텍스트는 brain에 저장되지 않음
4. **summary = 영어 대화 제목**: `getDiagnostics.recentTrajectories.summary`는 AI가 자동 생성한 제목이지 실제 응답이 아님 4. **summary = 영어 대화 제목**: `getDiagnostics.recentTrajectories.summary`는 AI가 자동 생성한 제목이지 실제 응답이 아님
5. **반복 실수**: 같은 RPC를 다른 필드명으로 반복 시도 (trajectoryId, cascadeId, googleAgentId, conversationId → 모두 실패) 5. **반복 실수**: 같은 RPC를 다른 필드명으로 반복 시도 (trajectoryId, cascadeId, googleAgentId, conversationId → 모두 실패)
---
## 🎯 체계적 시도 계획 (우선순위순)
> 아래 각 접근법을 **순서대로** 시도. 각 시도는 **별도 프로브 코드**로, 결과 로그 확인 후 다음 단계 진행.
### Trial A: Extension API exports 탐색 (난이도: 낮음, 기대확률: 중)
**방법**: `vscode.extensions.getExtension('google.antigravity')``.exports` 객체 탐색
**프로브 코드**:
```typescript
const ext = vscode.extensions.getExtension('google.antigravity');
console.log('exports keys:', Object.keys(ext?.exports || {}));
console.log('exports:', JSON.stringify(ext?.exports, null, 2).substring(0, 2000));
```
**성공 기준**: exports에 `getConversation`, `getChatMessages`, `lspClient` 등 유용한 메서드/객체 존재
**실패 시**: Trial B 진행
---
### Trial B: VS Code 채팅 내보내기/참여자 API (난이도: 낮음, 기대확률: 중)
**방법**: `@bridge` chat participant가 이미 등록되어 있으므로, participant의 `handleRequest`에서 AI 응답을 가로채기
**프로브 코드**:
```typescript
// 현재 등록된 chat participant에서 응답 stream 가로채기
// 또는 workbench.action.chat.export 같은 명령어 시도
const cmds = await vscode.commands.getCommands(true);
const chatCmds = cmds.filter(c => c.includes('chat'));
console.log('Chat commands:', chatCmds.join('\n'));
```
**성공 기준**: 대화 내용을 반환하는 명령어 또는 stream 접근 가능
**실패 시**: Trial C 진행
---
### Trial C: OutputChannel 캡처 (난이도: 중간, 기대확률: 중)
**방법**: Antigravity의 OutputChannel에서 AI 응답 텍스트 캡처
**프로브 코드**:
```typescript
// Antigravity Output Channel 탐색
const channels = vscode.window.visibleTextEditors; // or output channels
// 또는 DevTools 콘솔의 Extension Host 출력에서 패턴 매칭
```
**성공 기준**: OutputChannel에 AI 응답 텍스트가 출력됨
**실패 시**: Trial D 진행
---
### Trial D: StreamCascadeReactiveUpdates (난이도: 높음, 기대확률: 높)
**방법**: ConnectRPC 서버-사이드 스트리밍으로 실시간 업데이트 구독
**프로브 코드**:
```typescript
// ConnectRPC streaming: POST + Transfer-Encoding: chunked
// 또는 SSE endpoint
const streamRes = await fetch(`http://127.0.0.1:3274/exa.language_server_pb.LanguageServerService/StreamCascadeReactiveUpdates`, {
method: 'POST',
headers: { 'Content-Type': 'application/connect+proto', 'x-codeium-csrf-token': csrfToken },
body: Buffer.from([0, 0, 0, 0, 0]) // empty protobuf message
});
// Read streaming response chunks
```
**성공 기준**: 스트림에서 AI 응답 텍스트가 실시간으로 수신됨
**실패 시**: Trial E 진행
---
### Trial E: Electron IPC / DevTools Protocol 인터셉트 (난이도: 높음, 기대확률: 높)
**방법**: Electron의 IPC 또는 Chrome DevTools Protocol로 WebView 메시지 캡처
**프로브 코드**:
```typescript
// DevTools Protocol로 WebView의 console.log/network 캡처
// 또는 Electron의 webContents.getAllWebContents()로 채팅 패널 접근
```
**성공 기준**: WebView ↔ Extension Host 사이 메시지에서 AI 텍스트 추출
**실패 시**: 완전히 다른 아키텍처 접근 필요 (예: 화면 OCR, Accessibility API 등)