docs: known-issues dual-delivery + devlog #013-014

This commit is contained in:
Variet Worker
2026-03-17 20:39:21 +09:00
parent 0da6291d98
commit 4e8ac8d6b7
2 changed files with 16 additions and 2 deletions

View File

@@ -686,10 +686,23 @@
- **증상**: Discord에서 승인/거부 버튼을 클릭해도 AG에 전달되지 않음. AG가 계속 대기 상태 - **증상**: Discord에서 승인/거부 버튼을 클릭해도 AG에 전달되지 않음. AG가 계속 대기 상태
- **원인**: `ApprovalView` 버튼 콜백이 `bridge.write_response()`만 호출 → Docker 컨테이너 내부 파일시스템에만 기록. Hub WS로 연결된 Extension은 이 파일을 읽을 수 없음 - **원인**: `ApprovalView` 버튼 콜백이 `bridge.write_response()`만 호출 → Docker 컨테이너 내부 파일시스템에만 기록. Hub WS로 연결된 Extension은 이 파일을 읽을 수 없음
- **해결**: `ApprovalView``hub` 파라미터 추가. 모든 버튼 콜백에서 `hub.send_response_to_pending_owner()` 호출하여 WS로 Extension에 직접 전달 - **해결**: `ApprovalView``hub` 파라미터 추가. 모든 버튼 콜백에서 `hub.send_response_to_pending_owner()` 호출하여 WS로 Extension에 직접 전달
- **주의**: 파일 기반 로컬 모드도 여전히 동작 (fallback). Hub가 None이면 파일만 사용. 양쪽 모두 호출하는 dual-write 방식 - **주의**: ~~파일 기반 로컬 모드도 여전히 동작 (fallback). Hub가 None이면 파일만 사용. 양쪽 모두 호출하는 dual-write 방식~~**v0.4.4에서 수정**: Hub 연결 시 file bridge 스킵 (이전 dual-write가 이중 전달의 원인이었음)
### [2026-03-17] WS 응답 파일 경유 — 자동승인이 AG에 안 도착 ### [2026-03-17] WS 응답 파일 경유 — 자동승인이 AG에 안 도착
- **증상**: Discord "🤖 자동 승인됨" 표시되지만 AG는 계속 대기. Hub WS 응답이 Extension에 도착해도 AG가 진행 안 함 - **증상**: Discord "🤖 자동 승인됨" 표시되지만 AG는 계속 대기. Hub WS 응답이 Extension에 도착해도 AG가 진행 안 함
- **원인**: Extension `onResponse`가 WS 응답을 `response/{rid}.json` 파일로 쓴 뒤 `processResponseFile`이 읽는 구조. WS pending 경로는 `pending/{rid}.json` 파일을 안 쓰므로 `processResponseFile``sessionId`/`stepIndex` 메타데이터를 못 찾아 `tryApprovalStrategies` 실패 - **원인**: Extension `onResponse`가 WS 응답을 `response/{rid}.json` 파일로 쓴 뒤 `processResponseFile`이 읽는 구조. WS pending 경로는 `pending/{rid}.json` 파일을 안 쓰므로 `processResponseFile``sessionId`/`stepIndex` 메타데이터를 못 찾아 `tryApprovalStrategies` 실패
- **해결**: `onResponse`에서 파일 경유 제거, `tryApprovalStrategies()` 직접 호출. `getApprovalContext()`/`resetPendingState()` export - **해결**: `onResponse`에서 파일 경유 제거, `tryApprovalStrategies()` 직접 호출. `getApprovalContext()`/`resetPendingState()` export
- **주의**: WS 경로와 파일 경로의 pending/response 생명주기가 완전히 다름. WS pending은 파일 없음 → response 처리도 파일 없이 해야 함 - **주의**: WS 경로와 파일 경로의 pending/response 생명주기가 완전히 다름. WS pending은 파일 없음 → response 처리도 파일 없이 해야 함
### [2026-03-17] WS+File Dual-Write — 명령어/응답 이중 전달
- **증상**: Discord 메시지가 AG에 2번 전달, 승인 응답 처리 후 새 승인 요청이 도착하지 않음
- **원인**: `bot.py:_write_command()``ApprovalView` 콜백이 Hub WS **AND** file bridge 양쪽으로 동시 전송. Extension에서 WS callback + file watcher 양쪽으로 수신하여 `sendPromptToAgentPanel` 2회 실행. 응답도 `resetPendingState()``processResponseFile()`가 동시 실행되어 state 충돌
- **해결**: Hub 연결 시 `return`으로 file bridge 스킵 (명령어, 응답 모두). `else` 분기로 fallback 처리
- **주의**: **Hub WS 연결 시 file bridge는 완전히 비활성화**해야 함. "양쪽 모두 쓰기"는 이중 전달의 근본 원인
### [2026-03-17] WS 명령어 에코 릴레이 — Discord 메시지 2번 표시
- **증상**: Discord에서 메시지 입력 → 같은 메시지가 "👤 사용자 (AG 직접 입력)"으로 다시 Discord에 표시
- **원인**: `handleWSCommand`에서 AG에 텍스트 전달 시 `recentDiscordSentTexts`에 마킹하지 않음 → step-probe가 USER_INPUT step 감지 시 Discord 발신 메시지를 새 사용자 입력으로 오인하여 릴레이
- **해결**: `handleWSCommand``ctx.recentDiscordSentTexts.set(text.trim(), Date.now())` 추가
- **주의**: 파일 기반 `_processCommandFile`에는 이미 마킹 있었음 (L178). WS 경로 추가 시 동일 패턴 적용 필수

View File

@@ -6,7 +6,8 @@
| 010 | 06:50~07:39 | 문서 전면 재작성 + 서버 배포 + WS 호환 수정 | `6ea3211` | ✅ | | 010 | 06:50~07:39 | 문서 전면 재작성 + 서버 배포 + WS 호환 수정 | `6ea3211` | ✅ |
| 011 | 07:44~08:18 | VSIX v0.4.0 E2E 사전 검증 + WS 프록시 수정 | — | 🔧 | | 011 | 07:44~08:18 | VSIX v0.4.0 E2E 사전 검증 + WS 프록시 수정 | — | 🔧 |
| 012 | 09:00~17:44 | VSIX E2E: workspaceUri, 이중발송, ApprovalRequest, ApprovalView WS, 응답 라우팅 | `2eea5fa` | ✅ | | 012 | 09:00~17:44 | VSIX E2E: workspaceUri, 이중발송, ApprovalRequest, ApprovalView WS, 응답 라우팅 | `2eea5fa` | ✅ |
| 013 | 18:05~18:45 | Extension 모듈 분리 #398: http-bridge, html-patcher, command-handler 추출 (1296→650줄) | `2d8266e` | ✅ | | 013 | 18:05~18:45 | Extension 모듈 분리 #398: http-bridge, html-patcher, command-handler 추출 (1296→650줄) | `6640d42` | ✅ |
| 014 | 18:45~20:35 | WS+File dual-delivery 수정 + 에코 릴레이 수정 + VSIX v0.4.4 빌드 | `0da6291` | ✅ |
### #010 상세 ### #010 상세
- **문서**: architecture.md(250줄), tech-stack.md(100줄), conventions.md(100줄) 전면 재작성 + Wiki 동기화 - **문서**: architecture.md(250줄), tech-stack.md(100줄), conventions.md(100줄) 전면 재작성 + Wiki 동기화