104 lines
3.9 KiB
Markdown
104 lines
3.9 KiB
Markdown
# Tech Stack
|
|
|
|
> AI 에이전트는 구현 전 이 문서를 확인하여 올바른 기술/버전을 사용합니다.
|
|
|
|
## 언어 & 런타임
|
|
|
|
| 항목 | 버전 | 경로/비고 |
|
|
|------|------|-----------|
|
|
| Python | 3.12 (miniforge3) | `C:\ProgramData\miniforge3\envs\gravity_control\python.exe` |
|
|
| Node.js | 시스템 설치 | `node`, `npm` (PowerShell에서 `cmd /c npm` 권장) |
|
|
| TypeScript | 5.3+ | `extension/src/*.ts` → `tsc` → `extension/out/*.js` |
|
|
|
|
> [!IMPORTANT]
|
|
> Python은 **반드시** 위 miniforge3 경로를 사용. WindowsApps의 python stub은 동작하지 않음.
|
|
|
|
## 프레임워크 & 라이브러리
|
|
|
|
### Python (서버)
|
|
|
|
| 패키지 | 버전 | 용도 |
|
|
|--------|------|------|
|
|
| discord.py | 2.x | Discord 봇 (슬래시 명령, 버튼 UI, 이벤트) |
|
|
| aiohttp | 3.x | Gateway HTTP 서버 + WebSocket endpoint |
|
|
| watchdog | - | Brain 디렉토리 파일시스템 감시 |
|
|
| python-dotenv | - | .env 파일 로드 |
|
|
| PyJWT | - | ❌ 미사용 (자체 HMAC-SHA256 구현) |
|
|
|
|
### TypeScript (Extension)
|
|
|
|
| 패키지 | 용도 |
|
|
|--------|------|
|
|
| @types/vscode | VS Code Extension API 타입 |
|
|
| @types/node | Node.js 타입 |
|
|
| typescript | 컴파일러 |
|
|
| ws | WebSocket Hub 연결 (`.vscodeignore`에 `!node_modules/ws/**` 필수) |
|
|
| antigravity-sdk | AG RPC 호출 (로컬 임베드 `sdk/`) |
|
|
|
|
## 패키지 관리
|
|
|
|
| 측 | 도구 | 파일 |
|
|
|----|------|------|
|
|
| Python | pip | `requirements.txt` |
|
|
| Extension | npm | `extension/package.json` |
|
|
|
|
## 개발 도구 & 명령어
|
|
|
|
| 작업 | 명령어 |
|
|
|------|--------|
|
|
| **봇 실행** | `C:\ProgramData\miniforge3\envs\gravity_control\python.exe main.py` |
|
|
| **봇 실행 (gateway)** | `.env`에서 `BOT_MODE=gateway` 설정 후 위 명령 |
|
|
| **Extension 구문 검사** | `cd extension && npx tsc --noEmit` |
|
|
| **Extension 컴파일** | `cd extension && cmd /c npm run compile` |
|
|
| **Extension VSIX** | `cd extension && npx @vscode/vsce package --no-dependencies` |
|
|
| **Python 구문 검사** | `python -c "import ast; [ast.parse(open(f).read()) for f in ['bot.py','hub.py',...]]"` |
|
|
| **Hub WS 테스트** | `python tests/test_ws_hub.py` (서버 기동 상태에서) |
|
|
|
|
## 환경 변수 (.env)
|
|
|
|
### 필수
|
|
|
|
| 변수명 | 용도 | 기본값 |
|
|
|--------|------|--------|
|
|
| DISCORD_TOKEN | Discord 봇 토큰 | (필수) |
|
|
| DISCORD_GUILD_ID | Discord 서버 ID | (필수) |
|
|
|
|
### 선택
|
|
|
|
| 변수명 | 용도 | 기본값 |
|
|
|--------|------|--------|
|
|
| BRAIN_PATH | AG 브레인 경로 | `~/.gemini/antigravity/brain` |
|
|
| BOT_MODE | `local` / ~~`remote`~~ / `gateway` | `local` |
|
|
|
|
> [!WARNING]
|
|
> `BOT_MODE=remote` (Collector 모드)는 **deprecated**입니다. `gateway` 모드 + Extension WS를 사용하세요.
|
|
| DEBOUNCE_SECONDS | Watcher 디바운스 간격 | `5` |
|
|
| PROJECT_NAME | 프로젝트 이름 | `gravity_control` |
|
|
|
|
### Gateway 모드 전용
|
|
|
|
| 변수명 | 용도 | 기본값 |
|
|
|--------|------|--------|
|
|
| GATEWAY_PORT | Gateway HTTP/WS 포트 | `8585` |
|
|
| GATEWAY_API_KEY | REST API 인증 키 | (미설정 시 인증 미사용) |
|
|
| GRAVITY_HUB_SECRET | WS Hub JWT 서명 시크릿 (64char hex) | (미설정 시 인증 생략) |
|
|
| GRAVITY_REGISTRATION_CODE | Extension 등록 코드 (32char hex) | (미설정 시 인증 생략) |
|
|
| REMOTE_BRIDGE_URL | ~~Collector 원격 URL~~ | ⚠️ deprecated (remote 모드 전용) |
|
|
|
|
## Extension VS Code 설정
|
|
|
|
| 설정 키 | 용도 |
|
|
|---------|------|
|
|
| `gravityBridge.bridgePath` | Bridge 디렉토리 경로 |
|
|
| `gravityBridge.projectName` | 프로젝트 이름 (기본: git remote) |
|
|
| `gravityBridge.hubUrl` | Hub WS URL (예: `ws://localhost:8585/ws`) |
|
|
| `gravityBridge.registrationCode` | Hub 등록 코드 |
|
|
|
|
## 빌드 산출물
|
|
|
|
| 항목 | 경로 | 설명 |
|
|
|------|------|------|
|
|
| VSIX | `extension/gravity-bridge-{ver}.vsix` | VS Code 확장 패키지 |
|
|
| JS 출력 | `extension/out/*.js` | TypeScript 컴파일 결과물 |
|
|
| SDK 복사 | `extension/out/sdk/` | compile 시 자동 복사 |
|