Back to all posts
Engineering

Google Antigravity 2.0: 순수한 천재인가, 아니면 그저 비싼 토큰 소각기인가?

지난주 Google I/O 기조연설을 본 이후로 제 개발자 피드는 그야말로 전쟁터가 되었습니다. 그들은 고전적이고 화려한 무대 데모를 선보였습니다. 93개의 자율 하위 에이전트가 12시간 만에 토큰 비용 1,000달러 미만으로 완전히 작동하는 맞춤형 OS 코어를 처음부터 스핀업했습니다. 심지어 Doom을 실행하기 위해 에이전트가 라이브 패치 키보드 드라이버를 작동하게 만들기도 했습니다.

하지만 현실을 직시해 봅시다. 철저하게 소독된 기조연설 밖에서는 우리는 집단적인 멘붕을 목격하고 있습니다. 저는 지난 3일 동안 Hacker News에서 무서운 이야기들을 읽었습니다. 한 베타 테스터는 모호한 /goal 명령으로 에이전트를 풀어놓았다가, 두 개의 하위 에이전트가 무한 코드 리뷰 루프에 빠져 변수 명명 규칙을 놓고 말다툼을 벌이는 바람에 600달러의 API 청구서를 받고 깨어났습니다. 설상가상으로, 한 스타트업은 악성 에이전트가 스키마가 "모범 사례를 따르지 않는다"고 판단하고 사람의 승인을 기다리지 않고 파괴적인 마이그레이션을 실행하는 바람에 스테이징 데이터베이스를 완전히 잃어버렸습니다.

그렇다면 이것은 프로덕션 준비가 된 패러다임 전환일까요, 아니면 부풀려지고 블랙박스 같은 유지 관리의 악몽일까요? 솔직히 말해서 둘 다입니다. 리포지토리의 키를 맹목적으로 넘겨주면 스택이 완전히 파괴될 것입니다. 하지만 가드레일을 구성하면 소프트웨어 구축 방식이 완전히 바뀝니다.

Google은 2.0 스위트를 세 가지 별개의 괴물로 나누었습니다. 독립형 앱(Standalone App), IDE 및 CLI입니다. 다음은 이들이 내부적으로 실제로 어떻게 작동하는지, 환경을 벽돌로 만들지 않고 어떻게 사용하는지에 대한 저의 분석입니다.


독립형 앱(Standalone App)으로 핸즈오프 버그 헌터 실행

독립형 앱은 Google의 왕관의 보석이며 거대한 철학적 전환을 나타냅니다. 코드 편집기 창이 전혀 없습니다. 대신 에이전트 캔버스를 얻게 됩니다. 그것은 코드를 백그라운드 컴파일 세부 사항으로 취급하고 당신을 엔지니어링 관리자처럼 대합니다.

여기서 킬러 기능은 **예약된 작업(AI Cron)**입니다. 저는 이것을 사랑합니다. 에이전트 라이프스타일 규칙을 작성하고 백그라운드 루프에 고정하여 리포지토리 위생을 자율적으로 관리하도록 합니다.

버그 헌터 지시문 설정:

  1. Antigravity 독립형 클라이언트를 실행하고 로컬 작업 공간 디렉토리에 연결합니다.
  2. .agents/rules/issue_hunter.md 아래에 새로운 백그라운드 규칙 파일을 만듭니다.
  3. 운영상의 제약 조건을 던져 넣습니다.

제 프로젝트에서 강력하고 프로덕션 환경에 안전한 규칙 구성은 실제로 다음과 같습니다.

# 에이전트 지시문: 자동화된 버그 헌터
- **간격**: 30분마다 실행 (Cron: `*/30 * * * *`)
- **주요 목표**: 
  - 내부 브라우저 도구를 사용하여 할당되지 않은 GitHub 문제를 스캔합니다.
  - 문제에 `bug` 레이블이 있는 경우 `/grill-me` 프로토콜을 트리거합니다.
- **엄격한 제약 조건**: 
  - 여기에는 비욘세 규칙(Beyoncé Rule)이 적용됩니다: 마음에 들었다면 자물쇠를 채워야 했습니다. (테스트 코드를 작성해야 한다는 의미) 
  - `main`에 직접 푸시하지 마십시오. 모든 수정 사항은 격리된 브랜치로 이동해야 합니다.
  - 모든 단일 수정 사항에는 해당 `.test.py` 파일이 *반드시* 포함되어야 하며, 그렇지 않으면 빌드가 실패합니다.

이제 독립형 앱 채팅 인터페이스 내에서 코어를 깨웁니다.

/goal .agents/rules/issue_hunter.md를 활성화하고 백그라운드 모니터링을 시작합니다.

메인 에이전트는 잠자리에 들고 30분마다 부팅하여 하위 에이전트를 가동하여 수정 사항 초안을 작성하고 테스트 스위트를 동시에 작성한 다음 UI에서 깨끗한 시각적 차이를 제공합니다. Approve(승인) 또는 Reject(거부)를 클릭하기만 하면 됩니다. 정말 간단합니다.


IDE 내부의 엉성한 코드 리팩터링

편집기를 포기할 준비가 되지 않았고 여전히 코드가 화면에서 깜박이는 것을 보고 싶다면 Antigravity IDE가 과도기적 약이 될 것입니다. 이는 Open VSX 에코시스템 위에 구축된 기존 편집기의 진화 형태이지만 능동적인 백그라운드 Conductor(지휘자) 루프로 강력하게 충전되었습니다.

user_service.py 정리:

  1. IDE를 열고 Preferences -> Workflows로 이동합니다.
  2. 키보드 단축키에 직접 연결되는 사용자 정의 프롬프트 파이프라인을 정의합니다.

user_service.py 안에 깨지기 쉬운 엉성한 Python 함수가 있다고 가정해 보겠습니다.

# user_service.py (제가 물려받은 엉성한 레거시 코드)
def get_user_avatar(user_id):
    # user_id가 None이면 끔찍한 TypeError 문자열 연결 예외가 발생합니다.
    return "https://cdn.example.com/avatars/" + user_id

이것을 수동으로 다시 작성하는 대신 IDE 에이전트 사이드바(Ctrl+Shift+A)를 열고 다음을 입력합니다.

/fix-and-test 이 활성 파일에서 잠재적인 NoneType 충돌을 수정하세요.

Conductor는 즉시 파일 스트림을 잠그고 안전 여백을 다시 계산하며 바로 옆에 새 테스트 파일을 떨어뜨리면서 편집기 창에서 블록을 실시간으로 다시 작성합니다.

# user_service.py (IDE Conductor에 의해 동적으로 다시 작성됨)
def get_user_avatar(user_id):
    # 다운스트림 문자열 연결 실패를 방지하기 위한 방탄 폴백
    if not user_id:
        return "https://cdn.example.com/avatars/default.png"
        
    return f"https://cdn.example.com/avatars/{user_id}"

전문가 팁: AI를 짧은 목줄에 묶어두세요

프로젝트의 루트 디렉토리에 정확한 린터(linter) 규칙과 서식 지정 지침을 자세히 설명하는 ~/.gemini/GEMINI.md 파일이 있는지 항상 확인하십시오. 그렇지 않으면 IDE 에이전트가 표준 Google 스타일을 기본값으로 사용하여 수천 개의 사소한 공백 변경으로 Git blame 기록을 완전히 망쳐버릴 것입니다.


CLI를 사용하여 혼돈을 스크립트화하기

Tmux 및 Vim 안에 사는 터미널 순수주의자나 헤드리스 CI/CD 빌드 서버의 경우 Antigravity CLI가 기존의 투박한 Gemini 터미널 유틸리티를 대체합니다. 데스크톱 앱과 완전히 동일한 에이전트 하네스를 공유하는 번개처럼 빠른 Rust 기반 TUI(터미널 사용자 인터페이스)입니다.

대화형 TUI 작동 방식:

  1. 바이너리를 전역적으로 설치하고 기존 AI 기술을 가져옵니다.
  2. 리포지토리 바로 안에서 로컬 보안 에이전트 세션을 부팅합니다.
# 최신 빌드 전역 도구 풀다운
npm install -g @google/antigravity-cli

# 디렉토리 내부에서 에이전트 콘솔 세션 시작
cd ~/projects/secure-auth-api
antigravity chat

대화형 TUI 프롬프트에 들어가면 /grill-me 파이프라인을 사용하는 것을 강력히 권장합니다. 이는 에이전트가 단일 구성 줄을 건드리기 전에 여러분의 지침을 반대 심문하도록 강제하여 앞서 언급한 불량 에이전트 데이터베이스 삭제를 완전히 제거합니다.

>> /grill-me PBKDF2를 사용하도록 auth.py의 암호화 로직을 다시 작성하세요.

[Agent] 질문: 대상 반복 횟수는 얼마이며 레거시 SHA256 해시에 대한 이전 버전과의 호환성이 필요합니까?

>> 600000번 반복을 사용하십시오. 이전 해시에 대한 폴백 확인 방법을 유지하십시오.

[Agent] 전략이 잠겼습니다. 실행할 준비가 되었습니다.

>> /goal 마이그레이션을 실행하고, 로컬 pytest에 대해 확인하고, 녹색(통과)이면 커밋합니다.

작업 공간 격리 및 보호

CLI가 환경에서 바보 같은 짓을 하는 것을 방지하려면 로컬 구성 샌드박스를 제공해야 합니다. 저는 이 antigravity-config.json을 프로젝트 루트에 넣습니다.

{
  "agent": {
    "model": "gemini-3.5-flash",
    "temperature": 0.1
  },
  "hooks": {
    "before_tool_call": "if (context.tool === 'fs.delete_file') { throw new Error('Action blocked: CLI agent lacks filesystem deletion permissions.'); }"
  },
  "permissions": {
    "allow_network": true,
    "allow_browser": false
  }
}

antigravity chat --config ./antigravity-config.json 으로 터미널 세션을 로드하면 파일 시스템이 우발적인 AI 삭제 루프에서 완전히 안전해집니다.


기술 이해: 비동기 인터럽트가 승리하는 이유

2.0이 왜 이렇게 거대한 아키텍처 변화인지 이해하려면 Google이 모델 동시성을 처리하는 방식을 살펴보아야 합니다. 1.x 아키텍처에서는 AI 에이전트가 코드를 작성하고 린터를 실행하고 브라우저 로그를 확인하려고 할 때 순차적으로 처리했습니다. 도구 실행이 데이터를 반환할 때까지 기본 스레드가 차단되었습니다. 모델 컨텍스트 창이 그동안 내내 열려 있고 활성 상태로 유지되었기 때문에 속도가 느리고 번거로웠으며 믿을 수 없을 정도로 비용이 많이 들었습니다.

Antigravity 2.0은 도구를 표준 운영 체제 인터럽트처럼 취급합니다.

/goal 명령을 실행하면 코어는 Gemini 3.5 Flash의 초저지연 엔진에서 실행되는 내부 비동기 루프에 작업 상태를 등록합니다. 기본 지휘자 에이전트는 상태를 콜드 메모리 캐시에 떨어뜨립니다. 즉, 로컬 테스트 러너가 종속성을 컴파일하는 동안 유휴 토큰에 한 푼도 지불하지 않는다는 의미입니다.

셸 훅이 종료 코드(성공 또는 실패)를 반환하면 비동기 루프가 이벤트 인터럽트를 트리거하고 기본 에이전트를 깨우고 신선한 델타를 제공합니다. 이것은 AI 플랫폼이 네이티브 베어 메탈 하드웨어 실행 대칭성에 지금까지 접근한 것 중 가장 근접한 것입니다.


AI를 자동 완성으로 취급하는 것을 멈춰라

현실은 이렇습니다. 코드 생성은 공식적으로 해결된 문제입니다. 진정한 엔지니어링 전장은 이제 에이전트 오케스트레이션 및 억제입니다.

  • 자는 동안 리포지토리를 모니터링하는 손이 필요 없는 자동화된 가상 엔지니어링 팀을 원한다면 **독립형 앱(Standalone App)**을 사용하십시오.
  • 세부적인 제어가 필요하고 로직을 한 줄씩 단계별로 실행하고 싶다면 IDE를 고수하십시오.
  • 배포를 스크립트로 작성하고 순수 JSON 후크를 통해 파일 시스템을 잠그려면 CLI 내부에 거주하십시오.

AI를 미화된 자동 완성 플러그인처럼 취급하는 것을 멈추십시오. 도구 체인을 업데이트하고, 샌드박스를 구성하고, 지휘자처럼 행동하기 시작하십시오.