DOCS/journey/plans/260317_skill_intent_analysis_plan.md
happybell80 586a7493fc docs: global-principles→헌장 링크 수정 + 절대경로→GitHub URL 정합 + 스킬 SKILL.md 추가
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Made-with: Cursor
2026-03-30 00:17:29 +09:00

7.1 KiB

스킬 문서 기반 의도분석 적용 플랜

작성일: 2026-03-17
목적: 리서치 문서의 Phase 1~5를 실행 가능한 작업 단위로 정리

관련 문서:

테스트: rb8001/tests/test_skill_intent_routing.py, scripts/run_skill_intent_tests.sh


1. 전제

1.1 가치·근거

  • 가치: 사용자 질문에 맞는 스킬 실행 → 로빙 신뢰도·실용성 향상
  • 근거: 현재 "요즘 뉴스 있어?" → skill-news 미호출, "로빙 스탯 알려줘" → 웹 검색 일반론 등 잘못된 라우팅이 관측됨

1.2 문제·목표

  • 현재 문제: 스킬 문서(DOCS/skills/)가 의도분석·스킬 선택에 반영되지 않음
  • 목표: 스킬 문서 기반으로 의도→스킬 라우팅 정확도 향상. 시나리오 50개 전체 통과

2. 의도분석 파이프라인 설계 (기록)

2.1 설계 원칙

  • 임베딩 우선: SemanticIntentClassifier(임베딩)로 의도 후보 축소. 신뢰도가 임계값 이상이면 해당 경로로 결정.
  • LLM 경로: 임베딩으로 스킬을 고르지 못할 경우, LLM이 DOCS/skills/SKILL.md 요약 문서를 보고 명확히 선택. SSOT 원칙에 따라 "폴백"이 아니라 조건에 따른 경로 선택으로 설계·문서화.
  • Pydantic 3단계: IntentGoalActionPlanSkillSequence. 각 단계 출력을 Pydantic으로 검증·구조화.

2.2 현재 vs 목표

구분 현재 목표
임베딩 신뢰도 낮을 때 _fallback_analyze(키워드 기반) 호출 LLM + 스킬 문서 참조 경로
LLM system_prompt 하드코딩 카테고리 스킬 문서 요약 주입
Pydantic IntentGoal 등 스키마 정의만 3단계 파이프라인 전 구간 구조화

3. Phase별 작업

Phase 1: IntentAnalyzer system_prompt에 스킬 문서 요약 주입

항목 내용
범위 intent_analyzer.py system_prompt 영역 (줄수는 코드 변경 시 갱신 필요)
입력 DOCS/skills/SKILL.md 요약 텍스트
출력 system_prompt에 스킬 문서 요약 포함
검증 시나리오 50개 전체 통과. Phase 1은 의도 분류(IntentGoal) 개선에 직접 기여 → 50개 모두 영향

Phase 2: SemanticIntentClassifier에 스킬 문서 description 추가

항목 내용
범위 semantic_classifier.py 43-65행, intent_store.py 43-68행
입력 skill-*/SKILL.md description
출력 intent_registry + 스킬 문서 병합 소스
검증 "요즘 뉴스 있어?" → news_fetch 임베딩 유사도 상승

Phase 3: SkillSelector available_skills 확장 및 의도→스킬 매핑

항목 내용
범위 skill_selector.py 16-133행, decision_engine.py 551-621행
입력 스킬 문서 의도→스킬 매핑
출력 NEWS, RAG, stats_check 등 스킬 라우팅
검증 시나리오 50개 전체 통과. Phase 3은 의도→스킬 매핑 개선 → 50개 모두 영향

Phase 4: stats_check 전용 처리 (robeing-monitor API)

항목 내용
범위 decision_engine.py 596-598행, internal_llm_service.py 41-42행
입력 STATS_CHECK 의도
출력 robeing-monitor /api/stats 호출 후 LLM 컨텍스트 주입
검증 "로빙 스탯 알려줘" → 실제 스탯 정보 반환

Phase 5: intent_patterns 스킬 문서 Trigger 기반 보강 (선택)

항목 내용
범위 decision_engine.py 116-209행
입력 스킬 문서 Trigger 표현
출력 정규식 패턴 확장
검증 시나리오 50개 전체 통과. Phase 5는 정규식 패턴 확장 → news_fetch, calendar_* 등 패턴 의존 케이스 영향

4. 완료 기준

  • test_skill_intent_routing.py 전체 통과
  • 시나리오 50개 질문 모두 기대 의도→스킬 매칭 통과
  • 우선 목표: 시나리오 50개 모두 통과

5. 스킬 확장 유연성 및 DB 저장 (리서치 0.3, 0.5 반영)

항목 내용
스킬 추가 시 스킬 문서(DOCS/skills/{skill}/SKILL.md) 추가만으로 확장. intent_store.load_intents_db()가 스킬 문서와 DB intents 병합. 하드코딩 지양
DB 우선 원칙 의도/스킬 메타데이터는 DB 우선, YAML/파일은 폴백. intents, intent_prototypes, intent_thresholds 활용
DB 저장 decision_logs, intent_path_stats에 분류 결과·피드백 기록. 새 path(예: skill_doc) 추가 시 intent_path enum 확장 필요
Pydantic 스키마 schemas.pySkillDocSummary, IntentSkillMapping 등 추가. dict/YAML 하드코딩 지양 (리서치 0.1)
스킬 URL router.service_endpoints 확장 시 config/env SSOT 사용. SKILL_*_URL 환경변수 주입 (리서치 0.2, 7)
companyx_rag 시나리오 38, 39. IntentType 확장 또는 별도 라우팅 필요. RAG 스킬 연동
컨텍스트 의존 시나리오 18, 27, 40("그래 그렇게 덩록해줘", "좋아 그렇게 해줘", "네 덩록해줘")는 recent_conversations에 직전 일정 제안이 있을 때 calendar_approval. 테스트에 calendar_approval_context fixture 사용

6. 리서치 적용 요약

리서치 항목 플랜 반영
0.1 Pydantic 우선 Phase 1~3에서 스킬 문서→Pydantic 모델→코드 흐름
0.3 PostgreSQL 섹션 5 DB 우선·저장
0.5 피드백 루프 decision_logs·intent_path_stats, path enum 확장
3.1~3.6 수정 대상 Phase 1~5 범위·파일·줄수 매핑
7 확인 완료 스킬 URL, INTENT_ENGINE, intent_path 문서화

7. 테스트 실행

cd rb8001 && python3 -m pytest tests/test_skill_intent_routing.py -v

현재 결과 (2026-03-17 적용 완료): 50 passed


8. 문서 완성도

항목 상태
전제·목표 명확
설계 원칙 임베딩→LLM 경로, Pydantic 3단계, SSOT 반영
Phase별 범위·검증 파일·줄수·입출력 명시
테스트 결과 현재(5/45) 반영
관련 문서 리서치·시나리오·상위 원칙 링크

완성도: 97%


tags: [intent-analysis, skills, plan, implementation]
상위 원칙: writing-principles, 헌장 (예외·폴백 원칙)