fix: v2.2.203 — 기업모드 dev-impl 빈 깡통 99% 버그 (hollow check 기본 ON)
증상: 사용자가 기획서 + 폴더 주고 "여기 개발해줘" 요청 → ASTRA 가 파일 만들고
"개발 완료" 보고 → 실제 파일을 열면 class/함수 본문이 비어 있음
(def foo(): pass · 빈 class · imports only). 99% 확률 재발.
원인:
- 안전망 이미 존재 (selfReflectorHollow.ts 가 정규식으로 빈 깡통 감지)
- BUT 두 개 config 모두 OFF — selfReflectorEnabled (Phase A) +
selfReflectorExternalEnabled (Phase B)
- Phase A 켜면 [Self-Reflector Check] 블록이 답변에 노출 (UX 부작용),
Phase B 는 +1 LLM 호출 비용 — 부작용 때문에 기본 OFF
- 결과: 다수 사용자가 안전망 전혀 없는 상태로 코드 작성 → 빈 깡통 통과
Fix 3종:
1. Hollow check 를 selfReflector 와 분리 — 신규 설정 2개:
- g1nation.hollowCheck.enabled (boolean, 기본 ON) — action-tag 있는 모든
응답에 무조건 hollow 스캔. LLM 호출 0.
- g1nation.hollowCheck.autoRetry (boolean, 기본 ON) — 검출 시 1회 자동
재작업. Phase B 와 분리.
- dispatcher.ts 게이트 조건 교체
2. dev-impl 프롬프트 강화 (pipelineTemplates.ts) — [빈 깡통 금지] 5개 규칙:
- 파일은 하나씩 생성, 모든 함수 본문 완전 구현 후 다음 파일로
- 금지 패턴 명시: pass · ... · NotImplementedError · # TODO · 빈 class
- 인터페이스/추상 메서드만 빈 본문 OK
- 각 파일 생성 직후 자가 검증
- 최종 요약에 파일별 핵심 동작 한 줄씩
3. 기본값 변경 — 사용자 행동 없이 안전망 작동. 옛 selfReflector Phase A/B 는
그대로 OFF (UX 부작용 보존).
예상 효과: ~70-85% stub 감소. 남은 ~15% (작은 모델 attention 한계 / 큰 프로젝트)
는 per-file 순차 생성으로 v2.2.204+ 검토.
모델 한계 vs 로직 fix: 대부분 로직 fix 가능. 매우 작은 모델 (≤4B) 은 한계 더
빠름 — 더 큰 모델 (gemma-12b, qwen-32b) 권장.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,52 @@
|
||||
# Astra Patch Notes
|
||||
|
||||
## v2.2.203 (2026-06-01)
|
||||
### 🐛 기업모드 dev-impl — 빈 깡통 파일 99% 발생 버그 (검출+자동 재작업 기본 ON)
|
||||
**증상**: 사용자가 기획서 + 폴더 주고 "여기 개발해줘" 요청 → ASTRA 가 파일·폴더 만들고 "개발 완료" 보고 → 실제 파일을 열면 **class/함수 본문이 비어 있음** (`def foo(): pass` · 빈 class · imports only). 99% 확률 재발.
|
||||
|
||||
**원인** (감사로 확인):
|
||||
- 안전망 **이미 존재**: `selfReflectorHollow.ts` 가 정규식으로 빈 깡통 감지 + retry 로직
|
||||
- BUT 두 개 config 가 모두 OFF — `selfReflectorEnabled` + `selfReflectorExternalEnabled`
|
||||
- Phase A 켜면 [Self-Reflector Check] 블록이 답변에 노출 (UX 부작용), Phase B 는 +1 LLM 호출 비용 — 두 부작용 때문에 기본 OFF
|
||||
- 결과: 다수 사용자가 안전망 *전혀 없는 상태* 로 코드 작성 stage 실행 → 빈 깡통 그냥 통과
|
||||
|
||||
**원인 분석 핵심**:
|
||||
- 모델 한계도 있음 (작은 local LLM 이 다중 파일 한 번에 생성 시 attention 고갈 → 첫 2~3 파일만 완전, 나머지는 stub)
|
||||
- **그러나 대부분 ASTRA 로직 fix 가능** — 안전망 존재하는데 묶여 있던 문제
|
||||
|
||||
**Fix 3종 (이번 빌드):**
|
||||
|
||||
1. **Hollow check 를 selfReflector 와 분리** — 신규 설정 2개:
|
||||
- `g1nation.hollowCheck.enabled` (boolean, **기본 ON**) — action-tag 가 있는 모든 응답에 무조건 hollow 스캔. LLM 호출 0.
|
||||
- `g1nation.hollowCheck.autoRetry` (boolean, **기본 ON**) — 검출 시 1회 자동 재작업. Phase B 와 분리, 코드 작성 stage 의 단발 추가 호출.
|
||||
- [dispatcher.ts](src/features/company/dispatcher.ts) 게이트 조건 교체 — `selfReflectorEnabled` → `hollowCheckEnabled`, `selfReflectorExternalEnabled` → `hollowCheckAutoRetry`
|
||||
|
||||
2. **dev-impl 프롬프트 강화** ([pipelineTemplates.ts](src/features/company/pipelineTemplates.ts)) — `[빈 깡통 금지]` 섹션 5개 규칙 추가:
|
||||
- 파일은 *하나씩* 생성, 모든 함수·메서드·클래스 본문 완전 구현 후 다음 파일로
|
||||
- **금지 패턴 명시**: `pass` · `...` · `NotImplementedError` · `# TODO` · 빈 class
|
||||
- 인터페이스/추상 메서드만 빈 본문 OK
|
||||
- 각 파일 생성 직후 자가 검증 "본문 비었나?"
|
||||
- 최종 요약에 파일별 핵심 동작 한 줄씩
|
||||
- 마지막 경고: "구조만 잡고 추후 구현" 패턴은 즉시 자동 재작업
|
||||
|
||||
3. **기본값 변경 — 사용자 행동 없이 안전망 작동**: hollow check 신규 toggle 둘 다 기본 ON. 옛 selfReflector Phase A/B 는 그대로 OFF (UX 부작용 보존).
|
||||
|
||||
**예상 효과**:
|
||||
- 옛: 빈 깡통 → 그대로 disk 기록 → "완료" 보고 → 사용자 발견
|
||||
- 새: 빈 깡통 → hollow detector 검출 → 1회 자동 재작업 → 다시 검출하면 사용자 경고 (무한 루프 방지)
|
||||
- 작은 local LLM 대상 ~80% stub 감소 예상 (per-file 순차 생성은 v2.2.204+ 검토)
|
||||
|
||||
**솔직히 — 모델 한계 vs 로직 fix**:
|
||||
- ✅ **로직 fix 로 70~85% 잡힘** (이번 빌드)
|
||||
- ⚠️ **남은 ~15%** 는 모델 attention 한계 — *진짜 큰 프로젝트* (20+ 파일) 는 per-file 순차 생성 (B) 필요 — 다음 빌드 후보
|
||||
- ⚠️ 매우 작은 모델 (≤4B) 은 한계 더 빠름 — 더 큰 모델 (gemma-12b, qwen-32b) 권장
|
||||
|
||||
**신규 패키징:** `astra-2.2.203.vsix`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## v2.2.202 (2026-06-01)
|
||||
### 🐛 기업모드 — Intent Alignment 가 일반 채팅 컨텍스트 무시하던 버그
|
||||
**증상**: 사용자가 일반 채팅에서 프로젝트·요구사항을 충분히 논의한 뒤 기업모드로 전환해 *후속 작업* 을 요청하면, 분석기가 "추가 정보 필요 — 맥락/목표/기준/형식" 화면을 띄움. 사용자 입장에선 *방금 다 말한 내용을 다시 묻는* 느낌.
|
||||
|
||||
Reference in New Issue
Block a user