Skip to content
 
 

Latest commit

 

History

243 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Video Agent Studio

자연어 지시로 영상을 편집하는 AI 에이전트. Claude Code 스타일의 대화형 인터페이스로 업로드 · 계획 승인 · 실시간 스트리밍 · 편집 완료까지 한 화면에서.

Prometheus 2026-1 4팀 스터디 · 데모 프로젝트.


스택 · 아키텍처 요약

Backend — FastAPI + WebSocket + LangGraph Supervisor 그래프 + Gemini

  • 그래프: analysis → script → interrupt_gate → supervisor (ReAct + spawn 서브에이전트) → critic → summary → END
  • Sub-agents: edit_expert, text_expert, audio_expert, effect_expert, research_expert
  • Memory: rolling summary + 세션 간 이월 user_memories
  • Persistence: PostgreSQL (sessions/messages/artifacts/interrupts) via SQLAlchemy async

Frontend — Next.js 15 (App Router) + React 19 + Zustand + Motion

  • / 스튜디오 (대화 rail + 스테이지 + 타임라인 실시간)
  • /motion 모션 에디터 (자막 · 이팩트 편집)
  • WebSocket 스트리밍 (interrupt · phase 카드 · tool_call · final)

Infra — Docker Compose (로컬 postgres:16)


저장소 구조

video-agent-study/
├── backend/                    FastAPI + LangGraph
│   ├── venv/                   Python 가상환경 (팀원 각자 생성 · gitignored)
│   ├── agent/                  그래프 · 노드 · 툴 · 프롬프트
│   │   ├── graph.py            메인 그래프 (supervisor_node · build_graph)
│   │   ├── nodes/              analysis / script / critic / summary
│   │   ├── tools/              edit · text · audio · effect · research · memory
│   │   ├── sub_agent.py        make_spawn_tools (격리 서브에이전트)
│   │   ├── prompt_builder.py   supervisor / script system prompt
│   │   └── config.py           모델명 · 온도 · 경로
│   ├── db/                     SQLAlchemy async (sessions · messages · artifacts · interrupts · user_memories)
│   ├── server.py               FastAPI (REST + WebSocket)
│   ├── docker-compose.yml      로컬 postgres:16
│   ├── requirements.txt
│   ├── scripts/                cli.py (단독 실행) · tools_demo.py (툴 테스트)
│   └── videos/                 입력 영상 · 편집 결과 · 자막 (.gitignore)
│
├── frontend/                   Next.js Video Agent Studio
│   ├── src/
│   │   ├── app/                / 스튜디오, /motion 모션에디터
│   │   ├── studio-v2/          스튜디오 UI (대화 rail · 스테이지 · 타임라인 · 백엔드 WS)
│   │   └── motion-editor/      모션 에디터 shell
│   ├── remotion/               Remotion 렌더 엔진 (spec 기반 이팩트)
│   └── public/
│
├── docs/                       설계 · 아키텍처 · 이관 노트
├── CLAUDE.md                   프로젝트 규칙 (에이전트용)
├── CONTRIBUTING.md             팀 협업 규칙
├── DESIGN.md                   디자인 시스템
└── README.md

세팅 가이드 (Mac & Windows)

요구사항 요약

Mac Windows
Python 3.10+ 3.10+
Node.js 20+ 20+
pnpm 8+ 8+
ffmpeg brew install ffmpeg choco install ffmpeg
Docker Desktop brew · 또는 dmg msi installer
Git preinstalled git-scm.com

1. 저장소 클론 & 브랜치 만들기

git clone https://github.com/2026-1-prometheus-4-team/video-agent-study.git
cd video-agent-study
git switch -c <이름>/<작업설명>        # 예: git switch -c seongmin/timeline-sync

2. 백엔드 세팅

2-1. Python venv (backend/ 안에서)

Mac / Linux

cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Windows (PowerShell)

cd backend
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt

처음에 실행 정책 오류 뜨면 관리자 PowerShell 에서 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 한 번.

2-2. Docker Postgres 기동

세션 · 메시지 · 아티팩트 · 사용자 기억 로그가 여기 저장. Supabase 이관 시 DATABASE_URL 만 교체.

cd backend
docker compose up -d          # postgres:16-alpine · 5433 포트
docker compose ps             # video-agent-postgres · Up · healthy 확인

Docker Desktop 이 미설치라면

2-3. 환경변수

# Mac / Linux
cp backend/.env.example backend/.env

# Windows (PowerShell)
Copy-Item backend\.env.example backend\.env

그 다음 backend/.env 열어서 실제 키 입력:

2-4. uvicorn 서버 실행

cd backend
# Mac
source venv/bin/activate
# Windows
.\venv\Scripts\Activate.ps1

uvicorn server:app --reload --port 8000

3. 프론트엔드 세팅

3-1. pnpm 설치

Mac

brew install pnpm
# 또는
curl -fsSL https://get.pnpm.io/install.sh | sh -

Windows (PowerShell 관리자)

iwr https://get.pnpm.io/install.ps1 -useb | iex
# 또는 winget
winget install pnpm

3-2. 의존성 설치 + 환경변수

cd frontend
pnpm install
cp .env.example .env.local            # Mac
# Windows: Copy-Item .env.example .env.local

기본값은 로컬 uvicorn (http://localhost:8000) 을 가리켜서 대부분 그대로 두면 됨.

3-3. 개발 서버

cd frontend
pnpm dev                              # http://localhost:3001

포트가 이미 쓰이는 중이면 Next.js가 사용 가능한 다른 포트를 안내함.


4. 실행 확인 · 첫 테스트

  1. 브라우저 http://localhost:3001
  2. 좌측 사이드바 영상 업로드 → 짧은 mp4 (10~30 초 권장) 업로드
  3. 채팅에 숏츠로 만들어줘 전송
  4. Rail 에 영상 분석 중 · Xs 경과 phase 카드 · 계획 승인 카드가 순차 등장
  5. 승인 → supervisor 실행 → 편집 완료 → 스테이지가 편집본으로 자동 스위치

정상 흐름 확인 명령들

# 세션 로그 · 메시지 · 아티팩트 조회 (docker 컨테이너에서 직접 psql)
docker exec -it video-agent-postgres \
  psql -U video_agent -d video_agent -c "SELECT id, status, created_at FROM sessions ORDER BY created_at DESC LIMIT 5;"

# 백엔드 로그 실시간 (uvicorn 콘솔에서 확인)
# 프론트 콘솔 (Chrome DevTools) — WebSocket messages 도 확인 가능

5. 단독 실행 · 툴 데모

파이프라인이나 툴 하나만 CLI 로 테스트:

cd backend
# Mac
source venv/bin/activate
# Windows
.\venv\Scripts\Activate.ps1

python -m scripts.cli              # 그래프 CLI (질문 입력 → 진행)
python -m scripts.tools_demo       # edit_expert 툴 개별 호출

6. 브랜치 · PR

  • main 은 항상 배포 가능 상태 유지
  • 작업은 <이름>/<작업설명> 브랜치 (예: seongmin/timeline-sync)
  • PR 은 main 브랜치로 · 최소 1인 리뷰 후 머지
  • 커밋: Conventional Commits (feat:, fix:, docs:, refactor:, chore:)

자세한 협업 규칙: CONTRIBUTING.md


7. 자주 만나는 트러블

backend uvicorn 이 429 RESOURCE_EXHAUSTED Gemini 무료 티어 하루 20 req 소진. backend/.env 에 다른 팀원 키 추가하거나 유료 티어 전환.

프론트 WebSocket 이 계속 연결 · 종료 반복 백엔드 프로세스가 재기동돼서 in-memory 세션이 사라진 상태. 브라우저에서 sessionStorage.clear() 후 새로고침, 또는 새 chat 보내면 새 세션 자동 생성됨.

Postgres 컨테이너가 unhealthy

cd backend
docker compose down -v         # 볼륨까지 초기화 (개발 데이터 날아감)
docker compose up -d

.env 수정했는데 반영 안 됨 uvicorn --reload 는 .py 만 감시. 환경변수 바꾼 뒤엔 Ctrl+C → 재실행 필수.

Windows PowerShell 에서 python 이 스토어 앱 여는 문제 설정 > 앱 > 앱 별칭 에서 Python 앱 별칭 끄기. 또는 py -3 -m venv venv.


라이선스

MIT

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages