Playball Logo

Command Palette

Search for a command to run...

목차 열기

10. 설정 및 실행

실행 모드

두 가지 실행 모드를 지원합니다.

모드내용
단일 에이전트에이전트 1개만 실행 (디버깅·개발 용)
스웜 모드구성 파일 기반 다중 에이전트 동시 실행

공통 매개변수

필수

매개변수타입설명
target-envstringstaging / dev / prod — 환경별 기본 URL·세션 경로·로그 경로 설정
game-idstring대상 경기 식별자

오픈 시각 관련

매개변수타입기본값설명
open-atISO8601(즉시 실행)오픈 시각 (타임존 포함 권장)
open-at-click-spacing-msinteger3000에이전트 간 클릭 선형 지연
open-at-queue-retry-msinteger180000큐 미개방 시 최대 재시도 총 시간

출력

매개변수기본값설명
log-dir자동로그 저장 디렉터리 (환경별 기본값)
frontend-url자동대상 URL (환경별 기본값, 직접 덮어쓰기 가능)

단일 에이전트 매개변수

매개변수타입설명
modestringMAP (직접 좌석 선택) / RECOMMEND (좌석 추천)
session-filepath세션 파일 경로
party-sizeinteger예매 인원수
zonestring목표 구역 이름 (MAP 모드)
challenge-strategystring챌린지 풀이 전략
vqa-require-armflag타이밍 엄격화 장치 활성
vqa-drag-verifyflag드래그 후 재확인 장치 활성
headlessflag헤드리스 모드 (UI 없이 실행)
slow-mo-msintegerPlaywright 슬로우모션 (디버깅용)
manual-loginflag자동 로그인 대신 사용자 수동 로그인 대기

챌린지 전략

전략의미마우스 프로파일
ui_solver결정론 풀이 (기본)human
ui_solver_stealth스텔스 모드 추가human
ui_solver_pass스텔스 + 통과 경향human
botlike_fail의도적 실패 (탐지 반응 확인용)bot

스웜 매개변수

매개변수타입설명
swarm-configpath스웜 구성 파일 경로
agent-countinteger실행할 에이전트 수 (기본: 구성의 전체)
no-monitorflagTUI 대시보드 비활성
no-coordinatorflagLLM 코디네이터 비활성
vqa-concurrencyinteger스웜 내 동시 챌린지 풀이 제한 (기본 1)
vqa-start-jitter-msinteger에이전트별 챌린지 시작 시각 jitter
repeatinteger반복 실행 횟수
repeat-delay-msinteger반복 간 간격

환경변수

환경변수설명
TM_FRONTEND_URL대상 URL
TM_GAME_ID대상 경기
TM_ATTACK_MODE모드 기본값
TM_HEADLESS헤드리스 모드
TM_SLOW_MO_MS슬로우모션
TM_MOUSE_PROFILE마우스 프로파일 (human / bot)
TM_ATTACK_CHALLENGE_MODE챌린지 모드
TM_ATTACK_CHALLENGE_STRATEGY챌린지 전략
TM_VQA_REQUIRE_ARM타이밍 엄격화 기본값
TM_VQA_DRAG_VERIFY드래그 재확인 기본값
TM_OPEN_AT_QUEUE_RETRY_MS큐 재시도 기본값
TM_SESSION_FILE세션 파일 기본 경로
TM_MANUAL_LOGIN수동 로그인 기본값
TM_MANUAL_LOGIN_TIMEOUT_MS수동 로그인 타임아웃
TM_ATTACK_AGENT_LLM_MODELLLM 모델 (기본 gpt-4.1-nano)
TM_ATTACK_AGENT_LLM_BASE_URLLLM API 베이스 URL
TM_ATTACK_AGENT_LLM_API_KEYLLM API 키
COORDINATOR_BATCH_SIZE코디네이터 배치 크기 (기본 5)
COORDINATOR_BATCH_INTERVAL_SEC코디네이터 배치 간격 (기본 10초)

스웜 구성 파일

YAML 형식. 예시:

swarm_id: S9
mode: MAP
zone_strategy: TARGET_SPECIFIC
frontend_url: https://staging.playball.one
agents:
  - agent_id: 0
    session_file: sessions/s9_agent0.json
    zone: 오렌지석
    party_size: 6
    seat_order: front_left_first
    start_delay_ms: 0
  - agent_id: 1
    session_file: sessions/s9_agent1.json
    zone: 오렌지석
    party_size: 4
    seat_order: front_left_first
    start_delay_ms: 500
  # ... 반복

필드 설명

필드설명
swarm_id스웜 식별자 (S1 ~ S15)
modeMAP 또는 RECOMMEND
zone_strategy구역 배정 전략 (TARGET_SPECIFIC / RANDOM 등)
frontend_url대상 URL (CLI에서 덮어쓰기 가능, 선택)
agents에이전트별 상세 설정 리스트

에이전트별 필드

필드설명
agent_id에이전트 순번 (0부터)
session_file세션 파일 경로
zone목표 구역 (MAP 모드) / RANDOM (RECOMMEND 자동 배정)
party_size예매 인원
seat_order좌석 선택 순서 (front_left_first, back_right_first 등)
start_delay_ms시작 지연

스웜 정의 예시 (S1~S15)

스웜모드에이전트 수특징
S1~S6RECOMMEND5좌석 추천 모드 대량 점유
S7MAP5테라존 타깃
S8MAP5익사이팅존 타깃
S9MAP5오렌지석 타깃
S10MAP5테이블석 타깃
S11~S12RECOMMEND10대규모 RECOMMEND
S13~S15MAP102연석 대량 점유

실행 흐름

1. 환경 준비
   └─ Python 가상환경 + 의존성 설치
   └─ Playwright 브라우저 설치

2. 세션 파일 준비
   └─ 계정별 로그인 완료 상태 저장

3. 스웜 실행
   ├─ 스웜 구성 로드
   ├─ 에이전트 N개 병렬 시작
   ├─ 코디네이터·모니터 백그라운드 실행
   ├─ 각 에이전트 상태머신 순차 진행
   └─ 모든 에이전트 terminal 진입 시 종료

4. 결과 저장
   ├─ 이벤트 로그 JSON Lines
   ├─ 증거 스냅샷 폴더
   └─ 자동 집계 요약 파일

5. 수동 결제 (선택)
   └─ DONE 에이전트의 브라우저에서 결제 완료

로그 폴더 구조

logs/attack/<env>/<run_id>/
├── swarm_S9_agent0_<ts>.jsonl          # 에이전트별 이벤트
├── swarm_S9_agent1_<ts>.jsonl
├── ...
├── swarm_S9_coordinator_<ts>.jsonl     # LLM 결정 로그
├── summary_S9_<ts>.json                # 기계 판독용 KPI
└── summary_S9_<ts>.txt                 # 사람 판독용 요약

<run_id> 포맷: {스웜ID}_{예정시각}_ran{실행시각}

세션 파일 관리

일괄 생성

scripts/create_sessions.py를 사용해 여러 계정의 세션을 일괄 생성합니다.

매개변수설명
--swarm스웜 식별자
--target-env환경
--session-dir저장 위치
--agents특정 에이전트만 생성 (선택)

단일 계정 수동 생성

scripts/save_session.py를 사용해 사용자가 직접 로그인한 상태를 저장합니다.

자동 갱신

에이전트 실행 종료 시 브라우저의 저장소 상태가 세션 파일로 다시 저장됩니다. 토큰 갱신이 자동으로 반영됩니다.

참조