구글 안티그래비티 완전 분석 — 모델·요금제·CLI 총정리

🚀 구글 안티그래비티(Antigravity) 완전 분석 구글이 2025년 11월 Gemini 3와 함께 공개한 에이전트 퍼스트(agent-first) IDE 안티그래비티는 Claude·GPT·Gemini를 한 도구에서 골라 쓰는 멀티모델 코딩 환경이다. 이 글에서는 ① 지원 모델과 요금제별 사용량의 실체, ② 실사용자 평가, ③ 구글의 방향성, ④ Claude Code와의 비교·연계, ⑤ CLI( agy )로 직접 쓰는 법까지 다섯 갈래를 차례로 정리한다. 자료 간 충돌이 있는 지점은 한쪽으로 단정하지 않고 양쪽을 모두 살려 표기했다. 📅 기준 시점: 2026년 6월 · 프리뷰 단계 정보로 수치는 변동 가능 1. 안티그래비티란 무엇인가 — 기초 정리 안티그래비티는 2025년 7월 구글이 24억 달러 규모 라이선스 계약 으로 영입한 전 Windsurf 팀이 설계를 주도했다. VSCode를 포크한 위에 자율 에이전트 오케스트레이션 계층을 얹은 구조다. 2026년 5월 Google I/O에서 발표된 안티그래비티 2.0 은 데스크탑 앱과 함께 공식 CLI agy 를 처음 공개하며 기존 Gemini CLI의 공식 후계자 자리를 확정했다. 핵심 정체성은 단순 코드 자동완성이 아니라 병렬 에이전트 오케스트레이션 이다. 여러 에이전트가 동시에 — 하나는 API, 하나는 테스트, 또 하나는 프론트엔드 — 작업을 나눠 진행하고, 각 에이전트는 계획·테스트 결과·스크린샷·영상을 담은 Artifact 를 남긴다. "사람이 한 줄씩 승인"하는 방식이 아니라 "에이전트들이 일을 마치고 사람이 사후 검수"하는 모델이다. flowchart TD A([사용자 작업 지시]) --> B[에이전트 A API 구현] A --> C[에이전트 B 테스트 작성] A --> D[에이전트 C UI 생성] B --> E[Artifact 계획·결과·영상] C --> E D --> E...

폐쇄망 SoC 설계자를 위한 가볍고 빠른 Vim 최적화 가이드

🔧 폐쇄망 SoC 설계 환경을 위한 가볍고 강력한 Vim 구축 가이드

SoC(System on Chip) 설계 엔지니어라면 폐쇄망 서버 환경에서 수백만 라인의 RTL 코드와 씨름하는 일상이 익숙할 것입니다. 외부 인터넷이 차단된 환경에서 VSCode나 LSP 기반 IDE는 사실상 무용지물. 이 가이드에서는 외부 의존성 제로로 Vim을 최강의 SoC 개발 도구로 만드는 전략을 단계별로 소개합니다.

특히 Xcelium, VCS 같은 시뮬레이터와의 연동이 어렵고, LSP 서버를 띄울 수 없는 보안 환경에서도 '속도''탐색' 두 마리 토끼를 잡는 방법에 집중합니다. 대용량 로그 파일(수백 MB~수 GB)까지 거뜬히 처리하는 성능 최적화 팁도 함께 담았습니다.

💡 이 가이드의 핵심 원칙: 모든 설정은 인터넷 없이 동작하며, Python/Node.js 등 외부 런타임에 의존하지 않습니다.

🏷️ 1. 코드 탐색의 핵심 — Universal Ctags

LSP를 사용할 수 없는 환경에서 대규모 Verilog/SystemVerilog 프로젝트의 모듈 인스턴스를 추적하는 가장 확실한 방법은 Ctags입니다. 단순히 파일을 여는 것을 넘어, 함수 정의나 모듈 선언부로 즉시 점프할 수 있습니다.

⚡ Universal Ctags vs Exuberant Ctags

→ Universal Ctags는 Exuberant Ctags의 후속 프로젝트로, SystemVerilog 2017 구문을 완벽 지원합니다.

→ interface, class, constraint, covergroup 등 최신 SV 키워드를 정확하게 파싱합니다.

폐쇄망에서는 외부에서 바이너리를 다운로드한 뒤 USB 등으로 서버에 옮겨 설치합니다. 설치 후 프로젝트 루트에서 태그 파일을 생성하세요:

# 프로젝트 루트에서 tags 파일 생성
ctags -R .

# SystemVerilog 전용 옵션 (더 정확한 파싱)
ctags -R --languages=SystemVerilog,Verilog --fields=+lnS .

📌 필수 단축키 3가지

단축키 기능 활용 예시
Ctrl + ] 커서 아래의 모듈/변수 정의로 이동 인스턴스에서 모듈 정의로 점프
Ctrl + t 이전 위치로 복귀 탐색 후 원래 작업 지점으로 돌아오기
g Ctrl + ] 동일 이름의 정의가 여러 개일 때 목록 선택 오버로드된 task/function 선택

🔖 Tagbar 플러그인도 함께 사용하면 효과적입니다. 순수 Vimscript로 작성되어 매우 가볍고, 현재 파일 내의 모듈 구조, 포트 리스트, 레지스터 선언을 우측 창에 트리 형태로 보여줍니다. :TagbarToggle 또는 F8로 토글할 수 있습니다.

실무 팁: tags 파일은 코드 변경 시마다 갱신이 필요합니다. 쉘에 alias retag='ctags -R .'을 등록해 두면 편리합니다. crontab으로 야간 자동 갱신을 설정하는 것도 좋은 방법입니다.

📂 2. 파일 탐색 가속화 — CtrlP와 Vim 내장 기능

수만 개의 파일이 뒤섞인 SoC 프로젝트에서 :e path/to/file을 직접 타이핑하는 건 사실상 불가능합니다. 두 가지 해법을 소개합니다.

🔍 CtrlP.vim (추천)

→ 100% Vimscript, 외부 의존성 제로

Ctrl + p로 퍼지 파일 검색

~/.vim/pack 폴더에 넣으면 즉시 동작

📦 Vim 내장 :find

→ 플러그인 없이 .vimrc 한 줄로 해결

set path+=** 추가

:find ModuleName.v로 검색

CtrlP는 파일명의 일부만 입력해도 프로젝트 전체에서 매칭되는 파일을 보여주기 때문에, 수천 개의 Verilog 파일 속에서도 원하는 모듈을 수 초 만에 찾을 수 있습니다. MRU(Most Recently Used) 기능도 지원하므로 자주 편집하는 파일은 더 빨리 접근 가능합니다.

⚠️ 주의: set path+=**를 사용할 때 프로젝트 루트가 너무 넓으면(예: /) 검색이 매우 느려질 수 있습니다. set wildignore+=*/sim_results/*,*/logs/*,*.o로 불필요한 디렉토리를 제외하세요.

🧩 3. SystemVerilog 구문 강조 및 블록 매칭

Verilog/SystemVerilog는 begin...end, module...endmodule, class...endclass짝을 이루는 키워드가 매우 많은 언어입니다. 이를 효율적으로 탐색하려면 두 가지 도구가 필요합니다.

▶ matchit.vim — Vim에 내장되어 있지만 기본 비활성화된 경우가 많습니다. .vimrc에 아래 한 줄만 추가하면 % 키로 복잡한 블록의 시작과 끝을 자유롭게 오갈 수 있습니다.

packadd! matchit

▶ verilog_systemverilog.vim — SystemVerilog 최신 구문 강조를 지원하며 인덴트를 최적화합니다. 매우 가벼워 성능 저하 없이 사용 가능합니다. always_ff, always_comb, logic, interface 등 SV 전용 키워드가 정확하게 하이라이트됩니다.

⚡ 4. 대용량 로그 파일 대응 — 성능 최적화 전략

시뮬레이션 로그는 수백만 라인, 수백 MB에 달하는 경우가 흔합니다. 이때 Vim이 멈추는 주범은 Syntax HighlightingUndo 히스토리 관리입니다. 아래 설정으로 해결할 수 있습니다.

" 10MB 이상 파일: 구문 강조/백업 비활성화로 속도 향상
let g:LargeFile = 1024 * 1024 * 10
augroup LargeFile
  autocmd!
  autocmd BufReadPre * let f=getfsize(expand("<afile>"))
    \ | if f > g:LargeFile || f == -2
    \ |   call LargeFile()
    \ | endif
augroup END

function! LargeFile()
  setlocal eventignore=all
  setlocal nobackup nowritebackup
  setlocal noswapfile noundofile
  syntax off
  setlocal foldmethod=manual
endfunction

이 설정이 적용되면 수백 MB 로그 파일도 초기 딜레이 없이 즉시 열립니다. 추가로 로그 파일을 다룰 때 유용한 Vim 명령도 알아두면 좋습니다:

명령어 기능
:set nowrap 긴 라인 줄 바꿈 비활성화 (로그 가독성 향상)
/ERROR\|FATAL 에러 패턴 검색 (정규식 OR 조건)
:g/ERROR/p 에러 라인만 모아서 출력
G?pattern 파일 끝에서 역방향 검색 (최신 에러 먼저 확인)

📦 5. 폐쇄망 플러그인 관리 — Native Package Management

인터넷이 차단된 환경에서는 Vim-Plug이나 Vundle 같은 패키지 매니저의 자동 설치가 불가능합니다. Vim 8.0부터 지원하는 Native Package Management를 사용하세요.

📋 설치 3단계

① 인터넷 가능 PC에서 플러그인 저장소를 .zip으로 다운로드

② USB 등으로 폐쇄망 서버에 전달 후 ~/.vim/pack/plugins/start/ 에 압축 해제

③ Vim 재시작 시 자동 로드 — 별도 설정 불필요

# 디렉토리 구조 예시
~/.vim/pack/plugins/start/
├── ctrlp.vim/          # 퍼지 파일 탐색
├── tagbar/             # 코드 구조 트리
└── verilog_systemverilog.vim/  # SV 구문 강조

# 옵셔널(지연 로드) 플러그인용
~/.vim/pack/plugins/opt/
└── heavy-plugin/       # :packadd로 수동 로드

start/ 디렉토리에 놓으면 자동 로드, opt/ 디렉토리에 놓으면 :packadd 명령으로 필요할 때만 수동 로드됩니다. 무거운 플러그인은 opt/에 넣어 시작 속도를 유지하세요.

🎯 6. SoC 엔지니어를 위한 최적의 .vimrc 핵심 요약

지금까지 소개한 모든 전략을 하나의 .vimrc로 정리하면 다음과 같습니다. 이 설정은 외부 의존성 0%로 동작합니다.

" === 기본 성능 최적화 ===
set hidden                  " 버퍼 전환 시 저장 강제 없음
set nobackup nowritebackup  " 백업 파일 비활성화
set updatetime=300          " swap 파일 쓰기 간격 단축
set shortmess+=c            " 불필요한 메시지 숨김
set lazyredraw              " 매크로 실행 시 화면 갱신 지연

" === 코드 탐색 (Ctags) ===
set tags=./tags,tags;       " 상위 디렉토리까지 tags 검색
packadd! matchit            " begin/end 블록 매칭
filetype plugin indent on  " 파일타입별 설정 활성화

" === 파일 탐색 ===
set path+=**               " 하위 디렉토리 전체 검색
set wildmenu               " 탭 완성 메뉴 표시
set wildignore+=*/sim_results/*,*/logs/*,*.o

" === Verilog/SystemVerilog 설정 ===
syntax on
autocmd FileType verilog,systemverilog
  \ setlocal expandtab tabstop=2 shiftwidth=2

🚀 추천 플러그인 최종 리스트 (가벼운 것만)

플러그인 용도 의존성
CtrlP.vim 퍼지 파일 탐색 없음 (100% Vimscript)
Tagbar 코드 구조 사이드바 Universal Ctags
verilog_systemverilog.vim SV 구문 강조/인덴트 없음
matchit.vim 블록 키워드 매칭 없음 (Vim 내장)

💡 보너스: 실무에서 자주 쓰는 Vim 생산성 팁

SoC 설계 업무에서 매일 쓰게 되는 실전 Vim 테크닉을 몇 가지 더 소개합니다.

🔹 다중 파일 검색: :vimgrep /pattern/ **/*.v로 프로젝트 전체에서 패턴 검색 후 :copen으로 결과 목록 확인

🔹 분할 화면 활용: :vs filename (수직 분할)로 RTL과 테스트벤치를 나란히 보면서 작업

🔹 매크로 기록: qa로 기록 시작, 반복 작업 수행, q로 종료, @a로 실행 — 포트 리스트 일괄 수정에 강력

🔹 외부 명령 연동: :!grep -rn "signal_name" .로 Vim을 벗어나지 않고 시스템 명령 실행

⚠️ 흔한 실수 주의

tags 파일 미갱신: 새 모듈 추가 후 ctags를 다시 실행하지 않으면 점프가 안 됩니다

swapfile 충돌: 동일 파일을 여러 세션에서 열면 경고가 발생합니다. set directory=~/.vim/swap//로 swap 디렉토리를 통합 관리하세요

인코딩 문제: 한글 주석이 깨지면 set encoding=utf-8, set fileencodings=utf-8,euc-kr을 추가하세요

이 구성은 외부 의존성을 완전히 배제하면서도 대규모 SoC 설계 자산을 효율적으로 탐색할 수 있게 해줍니다. 불필요한 Python 인터페이스나 무거운 UI 플러그인을 배제했기 때문에, 수백만 라인의 코드를 다룰 때도 Vim 특유의 기민함을 유지할 수 있습니다.

본 콘텐츠는 정보 제공 목적으로 작성되었으며, 특정 도구나 설정에 대한 최종 선택은 각 프로젝트 환경에 맞게 판단하시기 바랍니다.

📄 Raw Data
# 폐쇄망 SoC 설계 환경을 위한 가볍고 강력한 Vim 구축 가이드

SoC(System on Chip) 설계 엔지니어에게 서버 환경은 집과 같습니다. 하지만 수백만 라인의 RTL 코드와 거대한 로그 파일, 그리고 보안상의 이유로 외부 인터넷이 차단된 폐쇄망 환경은 현대적인 IDE(VSCode 등)를 사용하기에 큰 제약이 따릅니다. 특히 LSP(Language Server Protocol)를 위한 외부 서버 연동이 불가능하고, Xcelium이나 VCS 같은 무거운 시뮬레이터와 Vim을 실시간으로 연동하는 것도 쉽지 않습니다.

이런 환경에서 **'속도'**와 **'탐색'**이라는 두 마리 토끼를 잡으면서도, 시스템 부하를 최소화하여 대용량 로그 확인에도 지장이 없는 최적의 Vim 설정 전략을 소개합니다.

---

### 1. 코드 탐색의 핵심: Universal Ctags (인터넷 없이도 강력한 이동)

LSP를 사용할 수 없는 환경에서 대규모 Verilog/SystemVerilog 프로젝트의 모듈 인스턴스를 따라가는 가장 확실한 방법은 **Ctags**입니다. 단순히 파일을 여는 수준을 넘어, 함수 정의나 모듈 선언부로 즉시 점프할 수 있습니다.

*   **Universal Ctags 활용:** 기존 Exuberant Ctags보다 SystemVerilog 지원이 훨씬 강력합니다. 폐쇄망으로 바이너리를 가져와 설치한 후, 프로젝트 루트에서 `ctags -R .` 명령으로 `tags` 파일을 생성하세요.
*   **주요 단축키:**
    *   `Ctrl + ]`: 커서 아래의 모듈/변수 정의로 이동
    *   `Ctrl + t`: 이전 위치로 복귀
    *   `g Ctrl + ]`: 동일한 이름의 정의가 여러 개일 때 목록에서 선택
*   **Tagbar 플러그인:** 순수 Vimscript로 작성되어 가볍고, 현재 파일 내의 모듈 구조, 포트 리스트, 레지스터 선언을 우측 창에 트리 형태로 보여줍니다.

### 2. 파일 탐색의 가속화: CtrlP 또는 순수 Vim 기능

수만 개의 파일이 섞여 있는 SoC 프로젝트에서 `:e path/to/file`을 직접 치는 것은 불가능에 가깝습니다.

*   **CtrlP.vim (추천):** 별도의 외부 종속성(Python, Node.js 등) 없이 100% Vimscript로 동작하는 Fuzzy Finder입니다. 플러그인 파일만 `~/.vim/pack` 폴더에 넣어주면 즉시 작동합니다. `Ctrl + p`를 누르고 파일 이름의 일부만 입력하면 프로젝트 내의 파일을 즉시 찾아줍니다.
*   **Vim 내장 `:find` 활용:** 플러그인조차 무겁게 느껴진다면 `.vimrc`에 `set path+=**` 설정을 추가하세요. `:find ModuleName.v`와 같은 방식으로 하위 디렉토리를 모두 검색하여 파일을 열 수 있습니다.

### 3. SystemVerilog 구문 강조 및 매칭: matchit.vim

Verilog는 `begin...end`, `module...endmodule` 등 짝을 이루는 키워드가 많습니다. 

*   **matchit.vim:** Vim에 내장되어 있지만 기본적으로 비활성화된 경우가 많습니다. `.vimrc`에 `packadd! matchit`을 추가하면 `%` 키 하나로 복잡한 블록의 시작과 끝을 자유롭게 오갈 수 있습니다. 
*   **verilog_systemverilog.vim:** 이 플러그인은 SystemVerilog의 최신 구문 강조를 지원하며, 인덴트(들여쓰기)를 최적화해 줍니다. 매우 가볍기 때문에 성능 저하 걱정 없이 사용할 수 있습니다.

### 4. 대용량 로그 파일 대응: 성능 최적화 전략

수백만 라인의 로그 파일을 열 때 Vim이 멈추는 현상은 대부분 **Syntax Highlighting**과 **Undo 레벨** 관리 때문입니다. 이를 해결하기 위해 `.vimrc`에 특정 크기 이상의 파일에 대해서는 기능을 끄는 설정을 추가해야 합니다.

```vim
" 10MB 이상의 파일은 구문 강조와 백업 기능을 꺼서 속도 향상
let g:LargeFile = 1024 * 1024 * 10
augroup LargeFile
  autocmd!
  autocmd BufReadPre * let f=getfsize(expand("<afile>")) | if f > g:LargeFile || f == -2 | call LargeFile() | endif
augroup END

function! LargeFile()
  setlocal eventignore=all
  setlocal nobackup
  setlocal nowritebackup
  setlocal noswapfile
  setlocal noundofile
  syntax off
  setlocal foldmethod=manual
  " 대용량 파일에서는 줄 번호 표시도 성능에 영향을 줄 수 있음
  " setlocal norelativenumber nonumber
endfunction
```

이 설정을 통해 시뮬레이션 로그(`*.log`)나 거대한 Netlist 파일을 열 때 발생하는 초기 딜레이를 완벽하게 제거할 수 있습니다.

### 5. 폐쇄망에서의 플러그인 관리: Manual Installation

인터넷이 되지 않으므로 `Vim-Plug`나 `Vundle` 같은 매니저를 통한 자동 설치는 불가능합니다. 대신 Vim 8.0부터 지원하는 **Native Package Management** 방식을 권장합니다.

1.  외부(인터넷 가능 지역)에서 플러그인 저장소를 `.zip`으로 다운로드합니다.
2.  폐쇄망 서버의 `~/.vim/pack/plugins/start/` 디렉토리에 압축을 풉니다.
3.  Vim 실행 시 자동으로 로드되므로 별도의 설정 없이도 가볍게 동작합니다.

### 결론: SoC 엔지니어를 위한 최적의 .vimrc 핵심 요약

```vim
" 기본 성능 최적화
set hidden
set nobackup
set nowritebackup
set updatetime=300
set shortmess+=c

" 코드 탐색 설정
set tags=./tags,tags;
packadd! matchit
filetype plugin indent on

" 파일 탐색 (CtrlP가 없는 경우 대비)
set path+=**
set wildmenu

" Verilog 관련 설정 (가벼운 플러그인 위주)
syntax on
autocmd FileType verilog,systemverilog setlocal expandtab tabstop=2 shiftwidth=2
```

이와 같은 구성은 **외부 의존성을 0%**로 유지하면서도, 대규모 설계 자산을 효율적으로 탐색할 수 있게 해줍니다. 불필요한 Python 인터페이스나 무거운 UI 플러그인을 배제했기 때문에, 수백만 라인의 코드를 다룰 때도 Vim 특유의 기민함을 유지할 수 있습니다.
---

## References

- [Universal Ctags 공식 문서](https://ctags.io)
- [CtrlP 플러그인 저장소](https://github.com/ctrlpvim/ctrlp.vim)
- [Vim 내장 패키지 관리 가이드](https://vimhelp.org/repeat.txt.html#packages)

댓글

이 블로그의 인기 게시물

Vim 9.2 릴리즈 총정리: 더 빠르고 강력해진 텍스트 편집의 제왕

에이전트 시대를 위한 터미널 cmux 가이드: 설치부터 AI 활용까지