---
writer: 24-server-claude (총괄)
date: 2026-03-23
subject: 로빙 슬랙 대화 문제 — 7개 에이전트 종합 보고서
---

# 로빙 슬랙 대화 문제 종합 보고서

**작성**: 24-claude (총괄)  
**참여 에이전트**: 23-claude, 23-codex, 23-Cursor, 23-Gemini, 24-codex, 24-Cursor, 24-Gemini (총 7개)  
**분석 대상**: 2026-03-23 오후 4:34~4:45, 대표님(Jo Lee) ↔ 로빙(rb8001) 슬랙 대화

---

## 1. 전원 합의된 핵심 결함 (5건)

### P1. 직전 질문 회귀 — 치명적 (전원 동의, 최우선)

| 항목 | 내용 |
|------|------|
| **입력** | "fear & greed 지수 알려줘" (재요청) |
| **기대** | Fear & Greed Index 검색 결과 |
| **실제** | 춘천 날씨를 다시 답변 |
| **실패 지점** | 대화 상태 관리 붕괴 |

- **23-claude**: 대화 히스토리 관리 실패, 의도 분류기가 이전 키워드에 끌려감
- **23-codex**: 회귀·복수요청·정정 발화는 겉보기 비슷하지만 수정 지점이 다름 → 세분화 필요
- **24-Cursor**: "검색 품질" 이전에 **대화 상태 기계** 문제
- **24-Gemini (기술 진단)**: `intent_classifier.py`가 현재 발화만 전달, 대화 히스토리 미참조. "아니", "말고" 정정 신호 처리 로직 부재

**근본 원인**: 의도 분류 LLM 호출 시 대화 히스토리가 프롬프트에 포함되지 않음. 정정 표현 인식 로직 없음.

---

### P2. 복수 질문 누락 — 높음 (전원 동의)

| 항목 | 내용 |
|------|------|
| **입력** | "달러/원 환율과 fear & greed 지수도 알려줘" |
| **기대** | 환율 + Fear & Greed 두 가지 모두 답변 |
| **실제** | 환율만 답변, 지수 완전 누락 |
| **실패 지점** | 의도 분해 단계 부재 |

- **23-codex**: 품질 저하가 아니라 구조적 결함 신호
- **24-Gemini (기술 진단)**: `IntentClassifier`와 `route_message`가 **1메시지 = 1의도** 구조. 복수 의도를 리스트로 분리하는 루프 자체가 없음

**근본 원인**: 파이프라인이 단일 의도만 처리하는 설계. 첫 슬롯만 소비하고 나머지 버림.

---

### P3. 검색 쿼리 재작성 실패 — 높음 (전원 동의)

| 항목 | 내용 |
|------|------|
| **입력** | "fear & greed" + 사용자 힌트 "미국 주식시장 분위기 지수" |
| **기대** | "CNN Fear and Greed Index" 검색 |
| **실제** | FEAR 음악, 웹소설, 두려움 도서 반환 |
| **실패 지점** | 쿼리 재작성 로직 부재 |

- **24-codex**: 답변 문장 개선보다 "어떤 질문은 반드시 측정 후 답한다"는 실행 규칙이 먼저 (Truth First)
- **24-Gemini (기술 진단)**: `re.search` 정규식 기반 단순 패턴 매칭. LLM 기반 Query Rewriting 단계 없음. 불용어("알려줘") 포함된 채 검색
- **24-Cursor**: 모델 무지만이 아니라 툴 인자·검색어 결정 경로가 턴 텍스트를 충분히 반영 못함

**근본 원인**: 검색어 추출이 정규식 의존. 사용자 힌트·도메인 맥락을 검색 쿼리에 병합하는 단계 없음.

---

### P4. 호칭 퇴행 — 중간 (전원 동의, 메모리 품질 지표)

| 항목 | 내용 |
|------|------|
| **입력** | 세션 지속 중 대화 |
| **기대** | "대표님" 일관 유지 |
| **실제** | 첫 답변만 "대표님", 이후 "사용자"로 퇴행 |
| **실패 지점** | 세션 내 사용자 맥락 유실 |

- **23-codex, 23-Cursor, 24-Cursor**: 예절 문제가 아니라 **세션 메모리 유지 실패의 관찰 지표**

---

### P5. 출처 URL 절단 — 낮음 (전원 동의)

- 23-codex: 신뢰도 문제로 이어짐, 별도 품질 항목으로 분리 가치
- 24-Cursor: 슬랙 mrkdwn·길이 제한·후처리 중 어디서 잘리는지 재현 조건 필요

---

## 2. 에이전트별 고유 기여

| 에이전트 | 고유 기여 |
|---------|----------|
| **23-claude** | 문제 6건 최초 식별 + 심각도 순위 설정 |
| **23-codex** | 관찰 사실 vs 원인 추정 분리 제안, [입력-기대-실제-실패지점] 4칸 양식 제안 |
| **23-Cursor** | 라우팅만으로 끝나지 않는 층 존재 지적, 재현 표에 웹검색·메모리 항목 명시 권고 |
| **23-Gemini** | 에이전트별 업무 분배 초안 (코드구현/RAG/테스트/문서화) |
| **24-codex** | **Truth First 가설** — 응답 품질 vs 실행 권한/도구 문제 분리, "실측 필수 질문 목록"을 SSOT로 고정 제안 |
| **24-Cursor** | `message_router.py`의 `recent_conversations`, `_resolve_search_query` 등 실제 코드 경로 관찰, 로그 역추적 제안 |
| **24-Gemini** | **코드 직접 분석**: intent_classifier.py 히스토리 미참조 확인, 1메시지=1의도 구조 확인, re.search 기반 쿼리 추출 확인 |

---

## 3. 종합 우선순위 (전 에이전트 의견 반영)

| 순위 | 조치 | 관련 결함 | 담당 제안 |
|------|------|----------|----------|
| **1** | 의도 분류 시 최근 3~5건 대화 히스토리를 프롬프트에 포함 + 정정 발화("아니","말고","다시") 인식 로직 추가 | P1 회귀 | 24-Gemini 설계, 23-Cursor 구현 검토 |
| **2** | Multi-Intent Router: 접속사("와/과","그리고") 감지 → 메시지 분할 → 순차/병렬 처리 루프 | P2 누락 | 23-Cursor 구현, 24-Cursor 테스트 |
| **3** | LLM 기반 Search Query Rewriter: 사용자 힌트 + 도메인 맥락 → 최적화된 검색 쿼리 생성 단계 신설 | P3 검색 | 24-codex RAG 규칙, 24-Gemini 구현 |
| **4** | 실측 필수 질문 규칙을 SSOT/시스템 프롬프트에 고정 (시간, 날짜, 서버 식별 등은 반드시 도구 실행 후 답변) | P3 보강 | 24-codex 규칙 정의 |
| **5** | 사용자 프로필(이름, 호칭, 회사)을 세션 불변 메모리에 고정 | P4 호칭 | 23-Cursor 구현 |
| **6** | 출처 URL 절단 방지: 슬랙 출력 포맷터 검증 + 최종 출력 전 정합성 체크 | P5 절단 | 24-Cursor 재현 테스트 |

---

## 4. 다음 단계

1. **로그 역추적** (24-Cursor 제안): 해당 슬랙 스레드의 실메시지에 대해 `intent_classifier` → `route_message` → 도구 호출까지 실제 전달된 context와 선택된 검색어를 로그로 확인 → 추정을 사실로 확정
2. **재현 테스트 시나리오 작성** (23-codex 양식): 위 5건에 대해 [입력-기대-실제-실패지점] 표를 자동화 테스트로 전환
3. **패치 적용**: 우선순위 1~3번 순서로 코드 수정 → 회귀 테스트 → 배포

---

## 5. 총괄 판단 (24-claude)

7개 에이전트 전원이 **"대화 회귀"를 최우선 결함**으로 합의했다. 24-Gemini의 코드 분석으로 근본 원인이 `intent_classifier.py`의 히스토리 미참조임이 확인됐고, 24-codex의 Truth First 관점과 23-codex의 관찰/추정 분리 원칙이 분석 품질을 올렸다.

이번 건의 본질: **로빙은 "말을 잘 못하는" 게 아니라 "듣지 못하는" 것이다.** 사용자의 정정, 힌트, 맥락을 파이프라인이 소화하지 못하는 구조적 문제. 프롬프트 튜닝만으로는 해결 불가, 코드 수준 개선이 필요하다.

---

## 23-server-cursor 추가 의견 (2026-03-23)

- 표·우선순위·다음 단계가 한 파일에 모여 **내부 SSOT 초안**으로 쓰기 좋습니다.
- "담당 제안" 열은 실행 시 **Git 이슈 또는 레포 담당자 한 명**으로 수렴하지 않으면 다시 분산될 수 있습니다.
- 다음 단계 1번(로그 역추적)은 **해당 슬랙 스레드 한 건에 대해 한 번만**이라도 실제 로그 샘플을 붙이면 추정 논쟁이 크게 줄어듭니다.

— **23-server-cursor**
