Files
gravity_control/docs/usage-guide.md
Variet Worker 6dbbb57fa7 feat(gateway): Docker Gateway 봇 + HTTP API 구현 #task-311
- gateway.py: Collector↔Gateway HTTP API (pending, response, chat, register, commands)
- Dockerfile + docker-compose.yml: BOT_MODE=gateway, port 8585
- main.py: gateway 모드 (watcher 비활성, GatewayAPI 시작)
- config.py: gateway 모드 BRAIN_PATH 검증 스킵
- requirements.txt: aiohttp 추가
- docs/usage-guide.md: Docker 배포 섹션 추가
- Extension VSIX v0.3.9 빌드 (auto-approve 포함)
2026-03-11 19:38:26 +09:00

161 lines
4.2 KiB
Markdown

# Gravity Control 사용 가이드
## 시작하기
### 1. 봇 실행
```batch
start_bot.bat
```
또는:
```powershell
C:\ProgramData\miniforge3\envs\gravity_control\python.exe main.py
```
### 2. Extension 설치
```powershell
cd extension
cmd /c npm run compile
cmd /c npx vsce package
# 생성된 .vsix 파일을 VS Code에서 설치
```
---
## Discord 명령어
### 채팅 명령어 (메시지 입력)
| 명령어 | 설명 |
|--------|------|
| `!auto` | 자동 승인 토글 (on/off 반복) |
| `!stop` | AG 에이전트 중단 |
| 그 외 텍스트 | AG에 직접 메시지 전달 |
### 슬래시 명령어
| 명령어 | 설명 |
|--------|------|
| `/auto` | 자동 승인 토글 (on/off 반복) |
| `/stop` | AG 에이전트 중단 |
---
## 자동 승인 (`!auto`)
Discord에서 `!auto` 를 입력할 때마다 on↔off 토글됩니다.
### 동작
- **OFF (기본)**: 승인 요청마다 Discord에 ✅/❌ 버튼 표시 → 클릭하여 수동 승인
- **ON**: 승인 요청 시 자동으로 승인 → Discord에 `🤖 자동 승인됨` 표시
```
사용자: !auto
봇: 🟢 자동 승인 모드
프로젝트: gravity_control
모든 승인 요청이 자동으로 승인됩니다
사용자: !auto
봇: 🔴 수동 승인 모드
프로젝트: gravity_control
모든 승인 요청이 수동 확인이 필요합니다
```
### 자동 승인 시 Discord 표시
```
🤖 자동 승인됨
┌─────────────────────────────┐
│ run_command: npm run build │
└─────────────────────────────┘
auto-approve | 1741678...
```
> **주의**: 봇 재시작 시 auto-approve 상태는 초기화됩니다 (기본 OFF).
---
## 아키텍처
```
[AG IDE] ← Extension → bridge/ ← Bot → Discord
│ │
└── step_probe └── pending 스캔
(WAITING 감지) (자동 승인 처리)
```
### Bridge 프로토콜
```
~/.gemini/antigravity/bridge/
├── pending/ Extension → Bot (승인 요청)
├── response/ Bot → Extension (승인 결과)
├── commands/ Bot → Extension (사용자 명령)
└── register/ Extension → Bot (세션 매핑)
```
### Bot Mode
| 모드 | 설정 | 설명 |
|------|------|------|
| `local` (기본) | `BOT_MODE=local` | 로컬 파일시스템 bridge 사용 |
| `remote` (미래) | `BOT_MODE=remote` | HTTP로 원격 bridge 폴링 (Collector 모드) |
| `gateway` | `BOT_MODE=gateway` | 서버에서 Discord 통신 + HTTP API (Docker용) |
---
## 설정 (.env)
```env
DISCORD_TOKEN=xxx # Discord 봇 토큰 (필수)
DISCORD_GUILD_ID=xxx # Discord 서버 ID (필수)
BRAIN_PATH= # AG 브레인 경로 (기본: ~/.gemini/antigravity/brain)
BOT_MODE=local # 봇 모드 (local/remote)
REMOTE_BRIDGE_URL= # 원격 브릿지 URL (remote 모드 전용)
DEBOUNCE_SECONDS=2 # 이벤트 디바운스 (초)
```
---
## Docker 배포 (Gateway)
서버에서 Gateway 봇을 Docker로 실행:
```
[로컬 PC] [서버 Docker]
Extension → bridge/ ← 로컬 Bot ──HTTP──→ Gateway :8585 ←→ Discord
(Collector)
```
### 서버에서 실행
```bash
git clone https://git.variet.net/Variet/gravity_control.git
cd gravity_control
cp .env.example .env # DISCORD_TOKEN, DISCORD_GUILD_ID 입력
docker compose up -d
docker compose logs -f # 로그 확인
```
### Gateway API
| 메서드 | 경로 | 설명 |
|--------|------|------|
| GET | `/health` | 헬스체크 |
| POST | `/api/pending` | Collector → 승인 요청 |
| GET | `/api/response/{rid}` | Collector ← 승인 응답 |
| POST | `/api/chat` | Collector → 채팅 스냅샷 |
| GET | `/api/commands/{project}` | Collector ← 명령 폴링 |
---
## 트러블슈팅
| 증상 | 해결 |
|------|------|
| `!auto` 했는데 자동 승인 안 됨 | Extension VSIX 재빌드 + 재설치 필요 |
| 봇 재시작 후 auto가 꺼져있음 | 정상 — `!auto`로 다시 켜기 |
| Python 못 찾음 | `C:\ProgramData\miniforge3\envs\gravity_control\python.exe` 사용 |