fix: v2.2.202 — 기업모드 Intent Alignment 가 일반 채팅 컨텍스트 무시하던 버그

증상: 일반 채팅에서 프로젝트·요구사항을 충분히 논의한 뒤 기업모드 전환 후
후속 작업을 요청하면 "추가 정보 필요 — 맥락/목표/기준/형식" 화면이 떠
사용자에게 *방금 말한 내용을 다시 묻는* 느낌을 줌.

원인:
- Intent Classifier 는 prior chat 컨텍스트(previousBrief/Tail) 받음 → follow-up
  분기 정확
- Intent Alignment (clarification 화면 만드는 분석기) 는 IntentAnalysisInput
  인터페이스에 chat history 필드가 없음 → 오직 현재 사용자 메시지만 봄
- 결과: 모드 전환 직후 첫 라운드 분석기는 사용자가 이전에 일반 채팅에서 한
  모든 설명을 못 봄 → context 빈칸 → openQuestions 에 "맥락은?" 추가

Fix:
- IntentAnalysisInput 에 priorChatSummary?: string 필드 추가
- 시스템 프롬프트에 *모드 전환 시 context 우선 추출* 규칙 추가 — 일반 채팅에서
  명시된 항목은 추측이 아니라 명시된 사실로 취급
- _buildUserMessage() 가 [모드 전환 직전 일반 채팅 요약] 블록을 user message
  상단에 주입
- sidebarProvider.ts 호출 지점에서 this._agent.getHistory() → 최근 10 turn
  (!internal) 추출 → "role: content" 한 줄씩, content 200자 cap
- 후속 라운드 (previousContract 있음) 면 history 중복 첨부 안 함 — 이미 contract
  에 흡수됨

효과: 일반 채팅 → 기업모드 전환 시 분석기가 prior chat 의 context/goal/criteria
를 직접 추출. redundant "맥락/목표/기준/형식 다시 말해 주세요" 질문 사라짐.
첫 라운드부터 confidence=high 가능 → 바로 본 작업 진행.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 11:24:34 +09:00
parent 7bec20620a
commit c27cd823a9
13 changed files with 98 additions and 25 deletions
+29
View File
@@ -1,5 +1,34 @@
# Astra Patch Notes
## v2.2.202 (2026-06-01)
### 🐛 기업모드 — Intent Alignment 가 일반 채팅 컨텍스트 무시하던 버그
**증상**: 사용자가 일반 채팅에서 프로젝트·요구사항을 충분히 논의한 뒤 기업모드로 전환해 *후속 작업* 을 요청하면, 분석기가 "추가 정보 필요 — 맥락/목표/기준/형식" 화면을 띄움. 사용자 입장에선 *방금 다 말한 내용을 다시 묻는* 느낌.
**원인** (감사로 확인):
- `Intent Classifier` 는 prior chat 컨텍스트(previousBrief/Tail) 를 *받음* — 그래서 "follow-up vs new task" 분기는 정확
- `Intent Alignment` (clarification 화면 만드는 분석기) 는 `IntentAnalysisInput` 인터페이스에 *chat history 필드가 없음* — 오직 현재 사용자 메시지만 봄
- 결과: 모드 전환 직후 첫 라운드의 분석기는 사용자가 이전에 일반 채팅에서 한 모든 설명을 *못 봄* → context 빈칸 → openQuestions 에 "맥락은?" 추가
**Fix:**
- [`intentAlignment.ts`](src/features/company/intentAlignment.ts) `IntentAnalysisInput``priorChatSummary?: string` 필드 추가
- 시스템 프롬프트에 *모드 전환 시 context 우선 추출* 규칙 추가 — 일반 채팅에서 명시된 항목은 *추측이 아니라 명시된 사실* 로 취급
- `_buildUserMessage()``[모드 전환 직전 일반 채팅 요약]` 블록을 user message 상단에 주입
- [`sidebarProvider.ts`](src/sidebarProvider.ts) 호출 지점에서 `this._agent.getHistory()` → 최근 10 turn (`!internal`) 추출 → `role: content` 한 줄씩, content 200자 cap
- *후속 라운드* (previousContract 있음) 면 history 중복 첨부 안 함 — 이미 contract 에 흡수됨
**효과**:
- 일반 채팅 → 기업모드 전환 시 분석기가 prior chat 의 context/goal/criteria 를 *직접 추출*
- "맥락/목표/기준/형식 다 다시 말해 주세요" 같은 redundant 질문 사라짐
- 첫 라운드부터 confidence='high' 가능 → 바로 본 작업 진행
**기능 변경 없음 외부 API**. 컨텍스트 전달 누락만 fix.
**신규 패키징:** `astra-2.2.202.vsix`.
---
## v2.2.201 (2026-05-29) 🎯
### 🏗️ 리팩터링 라운드 7 — datacollect cluster split (god-file 완전 해체)
slashRouter god-file 의 마지막 클러스터 — 6 datacollect 핸들러 (research/benchmark/youtube/blog/wikify/meet) 도메인 파일로. 더불어 LLM 호출 인프라(callLmSynthesis/repairKoreanGlitches/bridgeErrorRemedy) 도 별도 모듈로.