3.3 KiB
3.3 KiB
260304 51124 먹통 근본원인 해결계획
작성일: 2026-03-04 상태: 미구현 목표: 51124 먹통의 근본 원인(의도분류 재진입 루프)을 제거하고 restart loop 재발을 차단한다.
1. 기준 문서
2. 근본 원인(확정)
INTENT_ENGINE=graph+INTENT_USE_LANGGRAPH=true에서IntentGraph.detect_with_workflow()->classify_intent_node()->IntentGraph.detect()재진입 루프가 발생한다.- 이 재진입 루프가
Restarting반복과 CPU 폭주의 직접 원인이다.
3. 범위 고정
포함
- 51124 실환경 설정값 확인
- 재진입 루프 차단 코드 수정
- 회귀 테스트 추가
- 51124 재배포 및 재발 판정
제외
- 23/24 자동 전환(페일오버)
- 스케줄러 구조 개선
- DB 풀 일반 튜닝
- 타 서비스 기능 개선
4. 실행 계획
- 51124 실환경 값 확정
- 51124에서
INTENT_ENGINE,INTENT_USE_LANGGRAPH실제 값을 확인한다. - 확인 증적(명령 출력)을 남긴다.
- 값 미확정 상태에서는 다음 단계를 진행하지 않는다.
- 재진입 차단 코드 수정
-
파일:
robeing/rb8001/app/services/brain/intent_graph.py -
detect()에 내부 호출 가드를 추가한다. -
workflow 내부 호출이면
detect_with_workflow()를 금지하고_detect_traditional()만 실행한다. -
파일:
robeing/rb8001/app/services/brain/intent_langgraph_workflow.py -
classify_intent_node()의IntentGraph.detect()호출에 내부 호출 가드를 명시한다. -
classify 단계는 단일 분류 실행으로 종료한다.
- 운영 기본값 안전화
- 파일:
robeing/rb8001/docker-compose.yml - 기본값을 아래로 고정한다.
INTENT_USE_LANGGRAPH=${INTENT_USE_LANGGRAPH:-false}INTENT_ENGINE=${INTENT_ENGINE:-v1}
- 회귀 테스트 추가
- 파일:
robeing/rb8001/tests/test_intent_workflow_no_reentry.py - 검증 항목:
- workflow classify 단계에서
detect_with_workflow()재호출 0회 INTENT_ENGINE=graph+INTENT_USE_LANGGRAPH=true에서도 단일 요청 정상 종료
- 51124 배포 및 검증
- 배포:
docker compose down && docker compose up -d --build - 검증은 실도메인(
https://ro-being.com) 기준으로만 수행한다. - 30분 관찰 구간을 고정한다.
5. 완료 판정
rb8001컨테이너Restarting0회RecursionError0건GRAPH_RECURSION_LIMIT0건https://ro-being.com/api/message3회 연속 성공- 30분 관찰 동안 운영자 조작 불가 구간 0회
6. 실패 시 처리
- 완료 판정 1개라도 미달이면 미완료로 유지한다.
- 실패 원인과 증적을 troubleshooting 문서로 분리 기록한다.
- 본 문서에는 troubleshooting 링크만 추가한다.
7. 문서 상태 전환
- 위 완료 판정 전부 충족 시 본 문서를
plans/archive/로 이동한다. - 이동과 동시에 완료 troubleshooting 문서를 연결한다.