동적 앙상블 개발 과정 평가 시스템 (Inspector)

Rust Version Python Version

inspector 는 단일 평가 모델이 아닌, 여러 세대의 다양한 분석 모델을 지능적으로 결합하여 개발 과정을 평가하는 동적 앙상블(Dynamic Ensemble) 시스템입니다. 최종 코드 결과물뿐만 아니라, 코드가 작성되는 '과정'의 건전성을 분석하고 AI 활용, 벼락치기, 복사-붙여넣기 등 다양한 개발 패턴을 진단합니다.


목차

✨ 주요 특징

⚙️ 작동 원리

inspector는 다음과 같은 단계로 분석을 수행합니다.

  1. 로그 파일 입력: 사용자가 분석할 개발 로그 파일과 시험 시간을 인자로 제공합니다.
  2. 특징 분석 (사건 분류): 로그의 커밋 시간, 코드 변경량 등 메타데이터를 분석하여 전체적인 개발 패턴(예: PROCRASTINATOR, IDEAL_WORKER)을 먼저 진단합니다.
  3. 동적 가중치 선택: 진단된 패턴에 따라 configuration/weights.json 파일에서 가장 적합한 가중치 프로필을 불러옵니다. 예를 들어, '벼락치기' 패턴이 감지되면 시간 분석 모델의 가중치가 높아집니다.
  4. 병렬 분석 실행: 등록된 모든 분석 모델(gen1, gen2, gen3)이 동시에 로그 파일을 분석하여 각자의 점수를 계산합니다.
  5. 앙상블 점수 계산: 각 모델의 점수와 선택된 가중치를 곱하여 최종 앙상블 점수를 산출합니다. 모델 간 점수 편차(표준편차)를 통해 결과의 신뢰도를 함께 평가합니다.
  6. 리포트 생성: 분석 결과를 바탕으로 콘솔 및 HTML 리포트를 생성하여 사용자에게 제공합니다.

📝 결과물 예시

콘솔 리포트

터미널에서 즉시 확인할 수 있는 핵심 요약 정보입니다.

════════════════════════════════════════════════════════════════════════════════
                    📊 동적 앙상블 개발 과정 평가 보고서 📊
════════════════════════════════════════════════════════════════════════════════
 📝 분석 대상 파일: case01_ideal_human_final.log                           
 🕑 설정 시험 시간: 100분                                                      
 🧬 자동 분류 패턴: IDEAL_WORKER (🌟 장시간 동안 꾸준하고 점진적인 커밋 활동)  
────────────────────────────────────────────────────────────────────────────────
 【모델별 상세 점수 및 가중치 (유효 모델만 표시) 】

  🎆 Gen 1 Models ⏭︎
     ✔︎ HAS             | 점수:  89/100 [█████████████████░░░] | 가중치: 15.0%
     ✔︎ RSA-ai.studio   | 점수:  86/100 [█████████████████░░░] | 가중치:  5.0%
     ✔︎ RSA-claude      | 점수:  81/100 [████████████████░░░░] | 가중치:  5.0%
     ✔︎ DPA             | 점수:  83/100 [████████████████░░░░] | 가중치:  5.0%

  🎆 Gen 2 Models ⏭︎
     ✔︎ Qwen            | 점수:  97/100 [███████████████████░] | 가중치: 21.0%
     ✔︎ CPA             | 점수:  84/100 [████████████████░░░░] | 가중치: 16.0%

  🎆 Gen 3 Models ⏭︎
     ✔︎ UPA-A           | 점수:  83/100 [████████████████░░░░] | 가중치: 11.0%
     ✔︎ UPA-G           | 점수:  81/100 [████████████████░░░░] | 가중치: 11.0%
     ✔︎ UPA-QA          | 점수:  88/100 [█████████████████░░░] | 가중치: 11.0%

────────────────────────────────────────────────────────────────────────────────
 【최종 평가 】
  ⏺︎ 최종 앙상블 점수: 87 / 100 	       [🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜]
  ⏺︎ 모델 간 점수 표준편차: 4.78
  ⏺︎ 분석 성공률: 100.0%
  ⏺︎ 신뢰도: ✅ 양호 - 모델 간 평가 결과가 비교적 일관됩니다.
════════════════════════════════════════════════════════════════════════════════

💾 HTML 상세 보고서가 저장되었습니다: case01_ideal_human_final.html
════════════════════════════════════════════════════════════════════════════════════
                    📊 동적 앙상블 개발 과정 평가 보고서 📊
════════════════════════════════════════════════════════════════════════════════════
 📝 분석 대상 파일: case02_initial_burst_ai_final.log                          
 🕑 설정 시험 시간: 100분                                                          
 🧬 자동 분류 패턴: CRAMMING_AI (🔥 소수의 커밋으로 대량의 코드가 한 번에 추가됨)  
────────────────────────────────────────────────────────────────────────────────────
 【모델별 상세 점수 및 가중치 (유효 모델만 표시) 】

  🎆 Gen 1 Models ⏭︎
     ✔︎ HAS             | 점수:   2/100 [░░░░░░░░░░░░░░░░░░░░] | 가중치: 21.0%
     ✔︎ RSA-ai.studio   | 점수:   5/100 [█░░░░░░░░░░░░░░░░░░░] | 가중치: 11.0%
     ✔︎ DPA             | 점수:   0/100 [░░░░░░░░░░░░░░░░░░░░] | 가중치: 10.0%
     ✔︎ RSA-claude      | 점수:   0/100 [░░░░░░░░░░░░░░░░░░░░] | 가중치:  5.0%

  🎆 Gen 2 Models ⏭︎
     ✔︎ Qwen            | 점수:   0/100 [░░░░░░░░░░░░░░░░░░░░] | 가중치:  5.0%

  🎆 Gen 3 Models ⏭︎
     ✔︎ UPA-A           | 점수:   5/100 [█░░░░░░░░░░░░░░░░░░░] | 가중치: 16.0%
     ✔︎ UPA-G           | 점수:   0/100 [░░░░░░░░░░░░░░░░░░░░] | 가중치: 16.0%
     ✔︎ UPA-QA          | 점수:   5/100 [█░░░░░░░░░░░░░░░░░░░] | 가중치: 16.0%

────────────────────────────────────────────────────────────────────────────────────
 【최종 평가 】
  ⏺︎ 최종 앙상블 점수: 2 / 100 	       [⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜]
  ⏺︎ 모델 간 점수 표준편차: 2.32
  ⏺︎ 분석 성공률: 100.0%
  ⏺︎ 신뢰도: ✅ 양호 - 모델 간 평가 결과가 비교적 일관됩니다.
════════════════════════════════════════════════════════════════════════════════════

💾 HTML 상세 보고서가 저장되었습니다: case02_initial_burst_ai_final.html

HTML 상세 보고서

웹 브라우저에서 열어볼 수 있는 상세 보고서입니다. 종합 요약, 전문가(모델)별 상세 의견, 주요 증거 및 해석, 그리고 구체적인 개선 권장사항을 포함합니다.

(실제 보고서는 아래 이미지보다 훨씬 상세한 내용을 담고 있습니다.)

🚀 설치 및 사용법

설치

  1. Rust 설치: 공식 웹사이트(rust-lang.org)의 안내에 따라 Rust 개발 환경을 설치합니다.
  2. 저장소 복제:
    git clone https://github.com/{TBD}}/inspector.git
    cd inspector
  3. 프로젝트 빌드:
    cargo build --release

    빌드가 완료되면 target/release/inspector 실행 파일이 생성됩니다.

사용법

inspector는 커맨드 라인 인터페이스(CLI)를 통해 실행됩니다.

기본 명령어 형식:

./target/release/inspector --logfile <분석할_파일_경로> --duration <시험_시간(분)>

옵션:

실행 예시:

# inspector.sample 폴더의 procrastinator 케이스를 100분 기준으로 분석
./target/release/inspector \
  --logfile ../inspector.sample/input/case08_procrastinator.txt \
  --duration 100 \
  --html-output ../inspector.sample/output/html/case08_procrastinator.html

📁 프로젝트 구조

.
├── inspector/                # Rust 프로젝트 루트
│   ├── Cargo.toml            # 프로젝트 의존성 및 메타데이터 관리
│   ├── configuration/
│   │   └── weights.json      # 개발 패턴별 모델 가중치 설정 파일
│   ├── doc/                  # 추가 문서
│   └── src/                  # 소스 코드
│       ├── main.rs           # 프로그램 진입점, 핵심 로직, 리포팅
│       └── engines/          # 개별 분석 모델(플러그인)
│           ├── common/       # 모델들이 공유하는 파서, 정규식 등
│           ├── gen1/         # 1세대 분석 모델
│           ├── gen2/         # 2세대 분석 모델
│           └── gen3/         # 3세대 분석 모델
│
└── inspector.sample/         # 샘플 데이터
    └── input/
        ├── case01_ideal_human_final.txt
        └── ... (다양한 개발 패턴의 샘플 로그 파일)

📜 라이선스

이 프로젝트는 현재 오픈소스로 배포하지 않고 있습니다. 이에 대한 문의는 drsungwon@khu.ac.kr로 연락바랍니다.