MCP Host-LLM Pivot — 수동 평가 Runbook
MCP Host-LLM Pivot — 수동 평가 Runbook
평가 목표
host LLM(Claude Code)이 신규 MCP 도구 project_map_get + anchor_read_content 만으로 사용자 자연어 요청을 정확한 file:anchor로 매핑하는가.
Baseline = patch_suggester.suggest_patch(request, use_ai=False) (Task 4 tests/benchmark/test_patch_suggester_baseline.py 에서 락된 수치).
BASELINE_FILE_PASSING = 14/20(sample_project 인공 시나리오)BASELINE_ANCHOR_PASSING = 0/19— 단, 이 값은 sample_project에 앵커가 0개이기 때문에 측정 불가 영역. 실제 사용자 프로젝트(앵커 다수)에서 별도 측정 필요.
현재 상태 (2026-05-13)
- sample_project (file-level) 측정 가능 — 즉시 실행 가능
- 사용자 프로젝트 (anchor-level) 측정 보류 —
tests/benchmark/user_requests.json미수집. 사용자가 본인 프로젝트에서 자연어 수정 요청 3~10개 + 정답 file/anchor 메모를 제공해야 anchor-level 평가가 가능. 그 전까지 anchor 측정은 sample_project 한정 (anchor 0개로 의미 없음). - 의미 있는 평가 진행 = sample_project file-level 1차 → user_requests.json 수집 후 anchor 2차.
최신 상태 반영 (2026-05-14)
이 runbook의 위 “현재 상태”는 PoC 실행 전 기준이다. 이후 tests/benchmark/user_requests.json 이 추가되었고, CHANGELOG.md v2.2.10 에 사용자 실요청 자연 분포 측정 결과가 기록되었다.
tests/benchmark/user_requests.json: 사용자 실 자연어 요청 데이터셋 존재.tests/benchmark/test_patch_suggester_baseline.py: sample_project baseline14/20 file,0/19 anchor고정.CHANGELOG.mdv2.2.10 측정: 사용자 실 요청에서 rule-based baseline0/6, host-LLM-driven flow6/6.
따라서 이 문서는 더 이상 “데이터 미수집으로 평가 보류” 상태의 source of truth 로 읽으면 안 된다. 다음 작업자는 이 runbook을 평가 절차 기록으로 보존하되, 실제 의사결정에는 CHANGELOG.md v2.2.10 과 tests/benchmark/user_requests.json 을 함께 대조해야 한다.
한계 (먼저 알아둘 것)
sample_project는 anchor marker가 0개이므로 correct_anchor 매핑 평가는 사실상 불가능하다. 이 한계는 의도적 — host LLM이 신규 도구로 file 매핑을 어떻게 하는지가 1차 측정, anchor 매핑은 사용자 실 프로젝트가 필요.
데이터셋
tests/benchmark/scenarios.json— 인공 시나리오 20개 (sample_project, file 매핑만 의미 있음)tests/benchmark/user_requests.json— 사용자 실제 자연어 요청 N개 (Task 0 산출물, 비어 있을 수 있음). anchor가 있는 실 프로젝트로 평가하려면 이 데이터셋이 필수.
사전 준비
- Claude Code (또는 Cursor) 에 VibeLign MCP 서버 등록
- 평가용 worktree 만들기:
git worktree add ../eval-worktree - sample_project 평가: 평가 worktree에
tests/benchmark/sample_project복사 - 사용자 프로젝트 평가: 본인의 실제 프로젝트 사본 (vib doctor 통과한 anchor가 있는 상태)
평가 절차
각 시나리오마다 새 대화로:
request텍스트를 그대로 Claude에게 입력- Claude에게 명시적 지시:
“정답 파일과 앵커 이름만 알려줘. 코드 수정은 하지 마. VibeLign MCP 도구(
project_map_get,anchor_read_content) 를 활용해도 좋아.” - Claude의 답을 기록 (file:anchor)
- 정답(
correct_files,correct_anchor)과 대조
메트릭
| 메트릭 | 정의 |
|---|---|
| File-level pass | Claude가 답한 파일이 correct_files 중 하나에 포함 (Task 4 의 _file_matches 와 동일 로직) |
| Anchor-level pass | file이 맞고 + anchor도 correct_anchor 와 정확히 일치 (correct_anchor=null인 시나리오는 anchor 평가 제외) |
| Tool 호출 분포 | 평균 호출 수, 가장 많이 쓰인 도구 |
| 응답 시간 | Claude의 처음 도구 호출~최종 답변까지 |
성공 기준
- sample_project (file-level): ≥ 14/20 (baseline 동등) 그리고 가능하면 ≥ 17/20 (개선 증거)
- 사용자 프로젝트 (file-level): 5+ 자연어 요청에서 ≥ 60% pass
- 사용자 프로젝트 (anchor-level): 5+ 자연어 요청에서 ≥ 50% pass (sample_project에선 측정 불가, 이 기준이 anchor의 실제 평가)
- 도구 호출 수: 평균 5번 이하로 수렴
결과 기록
.vibelign/eval/2026-05-13-mcp-pivot/results.md 에 표 형태:
| id | dataset | request | correct | got (host LLM) | baseline | tools used | tool_count |
|---|---|---|---|---|---|---|---|
| … | … | … | … | … | … | … | … |
의사결정
- 성공 (모든 성공 기준 충족) → full migration plan 작성:
vibelign/core/ai_codespeak.pydeprecation 계획ACTION_MAP단순화 또는 폐기vib patch --ai플래그 deprecation- marketing 메시지 갱신 (“LLM IDE의 안전한 편집 손”)
- 부분 성공 (file-level ok, anchor-level 미달) → 추가 MCP 도구 도입 검토:
anchor_search(query)— anchor 이름/의도 fuzzy 검색anchor_list_by_file(file)— 특정 파일의 anchor 목록 + 의도- plan v3 작성
- 실패 (file-level baseline 이하) → 가설 재검토. host LLM이 도구를 잘 못 쓰는 건지, 도구가 부족한 건지 차이 진단 필요.
참고
- 본 PoC plan:
docs/superpowers/plans/2026-05-13-mcp-host-llm-pivot-plan.md - Baseline 락:
tests/benchmark/test_patch_suggester_baseline.py - 관련 메모:
vibelign-mcp-pivot(auto-memory)