🌊 SpecFlow 설계 세션
기존 소스코드 지원 방향 확정 — 주요 결정 정리
🏭
SpecFlow가 뭔데?
Claude Code를 누구나 균일하게 쓸 수 있도록 랩핑한 SDLC 자동화 플랫폼
프롬프트 실력에 따라 결과가 천차만별인 문제 → 정해진 워크플로우 + 하네싱으로 해결
💬 Grill Me
→
📄 To Spec
→
🎫 Tickets
→
💻 코딩 ★병목
→
🔍 리뷰
→
✅ 커밋
😓
핵심 문제: 기존 코드에 붙이기
열의 아홉은 기존 코드에 붙이려 함. 근데 에이전트가 기존 파일 구조를 모름.
❌ 지금의 구멍
현재 흐름
scaffold_project_files
→ AGENTS.md (SpecFlow 스펙만)
→ 코딩 시작
→ 기존 repo 파일 구조 모름
✅ 목표
개선 후
scaffold_project_files
→ AGENTS.md + 파일 트리 분석 포함
→ 코딩 시작
→ 코드베이스 맥락 있음
📋 확정된 설계 결정
🧠 코드베이스 컨텍스트 주입
1
누가 분석?MCP 로컬에서 파일시스템 직접 접근 — 서버로 소스 안 올림
2
뭘 넣나?패턴 화이트리스트 (package.json, go.mod 등) + 전체 파일 트리 (10KB 상한)
3
어디에?scaffold_project_files → AGENTS.md 추가 섹션으로 포함
4
갱신 시점?수동 기본 + 에이전트가 필요 시 refresh_context 도구 호출
🔀 Git 브랜치 전략
태스크 시작
→
specflow/task-{id} 생성
→
코드 작성
→
REVIEW 상태
수락
→
커밋 → merge 제안 → 브랜치 삭제
거절
→
브랜치 삭제 + TaskNote 피드백 → 재큐
🔍 Diff 리뷰 UI
UI 결정
- TaskDetailModal에 diff 탭 추가
- 파일 단위 수락/거절
- 부분 수락 허용
- 거절 → 피드백 입력 → 재작업
- FAIL 노트만 재작업 시 에이전트에 주입
🏗️ 핵심 아키텍처 선택
🤖
로컬 에이전트 데몬 방식 채택
GitHub Actions self-hosted runner 패턴과 동일
데이터 흐름
SpecFlow 웹 UI (오케스트레이션)
↕ SSE (태스크 디스패치) + REST (결과 전송)
로컬 에이전트 데몬 ← 파일시스템 직접 접근
↓ Claude Code 실행
사용자 로컬 코드베이스
- 파일을 서버로 안 올림
- 로컬 환경 그대로 실행
- 웹 UI로 진행 상황 관리
- 기존 MCP에 데몬 모드 추가
- 에이전트 자율 루프 (get_next_task)
- SSE 연결 = presence 감지
💰 Council 결론 — 한정 토큰 상황
🚨
지금 당장 고쳐야 할 것 2가지
⚡ 1순위: SyncSpecsWithExpandedTaskScope 조건 강화
태스크 생성마다 PRD+TRD 전문을 LLM에 전송 → 태스크 30개 = ~540,000 토큰 낭비
→ "PRD/TRD 변경됐을 때만" 또는 수동 트리거로 변경
⚡ 2순위: 서브프로세스 토큰 집계
Claude Code 서브프로세스 토큰이 LlmUsageLog에 안 잡힘 → "내가 얼마 쓰는지" 모름
→ --output-format stream-json에서 usage 필드 파싱
🔴 레드팀이 뒤집은 가정들
"MCP 모드가 효율적"의 함정
- 세션 재시작 = 컨텍스트 반복 비용
- 탐색적 대화 = 실패 경로 토큰 누적
- 사람이 병목 = 완료 작업량 적음
"데몬이 편리"의 함정
- 로컬 git 상태 모름 → 자동 실패
- 2시간 잘못 달리면 토큰 낭비
- 디버깅에 3개 인터페이스 필요
💡 진짜 비용 드라이버
케이스 선택이 아니라 스펙 품질 + 재실행 횟수가 토큰 비용을 결정한다.
📌 한 줄 요약
로컬 실행 + 웹 관리 방식으로 확정. 기존 코드 지원은 AGENTS.md 확장으로 해결.
단, 토큰 낭비 버그 먼저 잡아야 한다.
로컬 에이전트 데몬
AGENTS.md 확장
REVIEW 상태 추가
파일 단위 diff
토큰 집계 수정 우선