DOCS/journey/troubleshooting/250723_happybell80_Slack응답및스킬호출문제.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동
- book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서)
- 빈 폴더 제거 (journey/assets/*)
2025-11-17 14:06:05 +09:00

2.6 KiB

Slack 3초 타임아웃 해결 및 스킬 호출 문제

날짜: 2025-07-23
작업자: happybell80 & Claude

오전 1시 00분

Slack 3초 타임아웃 문제 완전 해결

배경:

  • 이전에 subprocess.run()을 asyncio.create_subprocess_exec()로 변경했으나
  • asyncio import 누락으로 실패

해결:

# gemini_service.py에 asyncio import 추가
import asyncio

결과:

  • Slack 재시도 없음 (RETRY, timeout 관련 로그 0건)
  • 응답 시간: 1.8ms ~ 4.8ms로 즉시 200 OK 반환
  • Gemini 처리: 5~6초 소요 (비동기로 정상 작동)

Slack 메시지 중복 처리 문제 해결

문제:

  • 하나의 메시지가 message와 app_mention 두 번 처리
  • 결과적으로 같은 답변 2번 전송

원인:

  • Slack에서 멘션(@로빙)이 포함된 메시지는 두 이벤트 모두 발생

해결:

# app_mention이거나 DM인 message만 처리
is_dm = event.get("channel_type") == "im"

if event_type == "app_mention" or (event_type == "message" and is_dm):
    # 처리 로직

결과:

  • DM: message 이벤트로 처리
  • 채널 멘션: app_mention 이벤트로만 처리
  • 중복 응답 방지 완료

오전 1시 10분

이메일 스킬 호출 문제 발견

증상:

  • 사용자: "메일 확인해줘"
  • Gemini: "로빙은 이메일 서비스를 통해 메일을 확인할 수 있습니다..."
  • 실제 email_skill 호출 없음

로그 분석:

16:08:06 - builtin_skills 2개 설치됨
16:09:43 - Gemini 응답: "메일 확인하겠다"
16:12:03 - Gemini 응답: "읽지 않은 메일 확인하겠다"
  • email_skill 관련 로그 전무
  • skill 호출 로그 없음

문제점 정리:

  1. 스킬 미설치: email_skill이 builtin_skills에 포함되지 않음
  2. Gemini만 답변: 실제 스킬 호출 없이 텍스트 답변만 생성
  3. 스킬 라우팅 실패: RobeingBrain이 스킬로 라우팅하지 않음

예상 원인:

  • email_skill이 builtin_skills에 등록되지 않음
  • 또는 스킬 매칭 로직이 작동하지 않음
  • Gemini가 단순 텍스트 응답만 생성

교훈

  1. 비동기 처리 시 import 확인 필수

    • asyncio 등 필요한 모듈 import 누락 주의
    • 특히 동기→비동기 변환 시 체크
  2. Slack 이벤트 중복 처리 주의

    • 멘션이 있는 메시지는 두 가지 이벤트 발생
    • channel_type으로 DM 구분 필요
  3. 스킬 시스템 통합 테스트 필요

    • 스킬이 실제로 호출되는지 확인
    • Gemini 응답과 스킬 실행이 연동되는지 검증
    • 내일 email_skill 설치 및 라우팅 문제 해결 예정