컨텐츠로 건너뛰기
검색
ITWorld 언론사 이미지

제미나이 CLI로 명령줄에서 AI 코딩하기

ITWorld
원문보기

제미나이 CLI로 명령줄에서 AI 코딩하기

속보
트럼프 "美해군 신예 프리깃함, 韓기업과 협력해 만들게 될 것"

필자는 오래전에 소프트웨어 개발을 시작했을 당시 입력 장치로 300보드 모뎀을 통해 원격 메인프레임에 연결된 텔레타입(Teletype)과 종이 테이프 펀치/리더를 사용했다. 이후 홀러리스(Hollerith) 카드와 키펀치, S/370에 연결된 텍트로닉스(Tektronix) 4010의 녹색 화면을 사용할 수 있게 됐고 더 나중에는 PDP-11에 연결된 VT-100과 같은 CRT 터미널, 그리고 VAX-11도 사용했다.


이 모든 것의 공통점은 무엇일까? 실시간이든 종이 테이프나 홀러리스 카드를 사용한 방식이든 결국 명령줄에서 작업했다는 점이다. MS-DOS가 등장한 무렵에는 명령어가 바뀌긴 했지만 명령줄에서 작업해야 한다는 사실 자체에는 변함이 없었다. 다만 그 사이 CLI 코드 편집기는 계속 더 좋아지고 속도도 빨라지긴 했다(브리프(Brief), 케딧(Kedit) 등).


마우스와 GUI를 도입한 윈도우가 나왔을 때는 마침내 작업 방식이 바뀌겠구나 생각했지만 어느새 cmd 명령 프롬프트를 열어 작업하는 자신을 발견하곤 했다. 훨씬 더 나중에 맥OS로 전환했는데, 터미널이라는 이름을 사용하고 BSD 유닉스 규칙과 명령어를 사용하긴 했어도 거기에도 명령줄은 존재했다.


지금은 맥OS 터미널, 윈도우 cmd, 리눅스 터미널에 코딩 스마트 기능을 추가하는 많은 패키지가 있다. 클로드 코드(Claude Code), 깃허브 코파일럿 CLI(GitHub Copilot CLI), 아마존 Q 디벨로퍼 CLI(Amazon Q Developer CLI)가 여기에 해당하고, 그 외에 비교적 덜 알려진 여러 제품과 오픈소스 프로젝트도 있다. GUI 텍스트 창에서 작동하고 코딩이 가능한 클로드 데스크톱(Claude Desktop), 깃허브 코파일럿 워크스페이스(GitHub Copilot Workspace), 챗GPT, 아마존 Q 디벨로퍼 에이전트(Amazon Q Developer Agent), 솔버(Solver)와 같은 패키지도 있다.


CLI 기반 AI 분야에 최근에 등장한 제품은 2025년 6월 25일 출시된 제미나이 CLI다. 이 리뷰의 주제인 제미나이 CLI는 대부분의 기능이 무료인 오픈소스 명령줄 AI 워크플로우 툴로, 기존 툴에 연결되고 코드를 이해하며 워크플로우의 속도를 높여준다. 제미나이 CLI에 50단어 이내로 자기소개를 요청하자 이렇게 답했다.


✦ 저는 소프트웨어 엔지니어링을 위한 대화형 CLI 에이전트인 제미나이입니다. 파일을 안전하게 읽고 수정하고 명령을 실행하고 웹을 검색하는 툴을 사용해서 코드 작성과 버그 수정, 프로젝트 이해에 도움을 드릴 수 있습니다. 제 목표는 효율적이고 안전하게 사용자의 작업을 돕는 것입니다.


제미나이 CLI 설치와 인증

제미나이 CLI를 설치하기 전에 node -version을 사용해서 Node.js 버전을 확인한다. v20 미만이거나 노드가 아예 없는 경우 업데이트하거나 설치해야 한다. 현재 LTS 버전보다 아래 버전을 사용하고 있다면 잠재적인 문제를 방지하기 위해 기사 작성 시점을 기준으로 현재 버전인 v22.17.0을 다운로드해 설치하는 것이 좋다. 설치하면 리포지토리에서 바로 CLI를 실행할 수 있다.


npx https://github.com/google-gemini/gemini-cli

또는 전역으로 CLI를 설치하고 이름을 사용해 실행해도 된다.


npm install -g @google/gemini-cli
gemini

두 방법 모두 필자의 맥OS에서 정상 작동했다. 데비안 기반 시스템에서 npx 방법이 실패한다는 보고가 있는데, 필자의 컴퓨터에서 npx 방법을 처음 사용했을 때는 빌드를 다운로드하는 동안 잠시 멈추는 현상이 발생했지만 그 이후의 실행에서는 빠르게 시작됐다.


참고로 맥OS의 경우 전역 설치와 업데이트에는 일반적으로 sudo가 필요하다.


또한 gemini-cli 깃허브 리포지토리를 로컬 컴퓨터에 클론해서 자주 업데이트하는 것이 좋다. 현재 프로젝트가 활발하게 개발되고 있어 필자는 로컬 리포지토리를 적어도 하루에 한 번은 업데이트한다. 필요에 따라 [sudo] npm update -g @google/gemini-cli를 사용해서 설치된 실행 파일을 업데이트할 수 있다.


명령줄에서 처음 gemini를 실행하면 색상 테마를 선택하고(기본 테마가 좋지만 /theme 명령으로 언제든 변경 가능) 인증을 받아야 한다. 처음에는 무료 구글 계정 인증을 사용해야 한다. 이렇게 인증하면 분당 60회로 하루에 1,000번 모델 요청을 처리할 수 있다. 이 정도면 한도는 넉넉한 편이다.


나중에 더 높은 한도나 다양한 모델이 필요하면 /auth 명령어를 사용해서 인증 방법을 바꾸고 제미나이 API 프로젝트의 유료 요금제 또는 버텍스 AI 프로젝트의 결제 계정으로 업그레이드하면 된다. 이 두 가지 유료 옵션 중 하나를 사용하면 요청 한도가 높아지고 사용하는 모델과 관련해 더 많은 부분을 제어할 수 있게 된다.


제미나이 CLI 시작 화면Foundry

제미나이 CLI 시작 화면Foundry


제미나이 CLI 샌드박스와 체크포인트

샌드박싱은 잠재적으로 위험한 셸 명령과 기타 작업을 호스트 시스템으로부터 격리한다. -s 또는 --sandbox 플래그를 사용해 제미나이 CLI를 시작하는 방법으로 샌드박싱을 활성화할 수도 있고, settings.json 파일에 "sandbox": true를 추가하거나, 환경 변수를 사용하는 방법도 있다.


맥OS에서는 기본 시트벨트(Seatbelt) 샌드박스를 활용하거나 컨테이너를 사용할 수 있다. 기본 시트벨트 프로필은 permissive-open으로, 쓰기는 제한되고 네트워크 사용은 허용된다. 즉, 제미나이는 시작된 디렉토리를 벗어나서는 쓰기 작업을 수행할 수 없으므로 제미나이가 시스템을 덮어쓰거나 다른 프로젝트를 훼손하거나 모든 문서를 삭제하는 등의 사고를 예방할 수 있다.


샌드박싱된 제미나이 CLI를 사용해서 여러 프로젝트에서 동시에 작업하려면 별도의 터미널 탭이나 창에서 여러 셸 세션을 시작하고, 프로젝트 디렉토리로 이동한 다음 gemini -s를 호출하면 된다. 원한다면 환경 변수를 사용해서 더 엄격히 제한되는 프로필을 선택할 수도 있지만 이 경우 원하는 작업까지 못하게 될 수 있다.


리눅스 시스템에서는 도커, 포드맨과 같은 컨테이너 기반 샌드박스를 사용할 수 있다. 필자의 친구 크리스틴 홀은 데비안 기반 시스템에서 훨씬 더 가벼운 애플리케이션 샌드박스(무료 오픈소스)인 파이어제일(Firejail)을 사용하는 데 성공했다. 다만 제미나이 CLI가 파이어제일을 직접 지원하지 않기 때문에 제미나이 CLI -s 플래그를 사용하는 대신 파이어제일 내에서 gemini를 실행해야 했다.


체크포인트는 제미나이 또는 다른 AI 기반 툴이 파일을 수정하기 전에 현재 상태의 프로젝트 스냅샷을 자동으로 저장한다. 즉, 잘못될 경우 이전 상태로 되돌릴 수 있으므로 위험 부담 없이 안전하게 실험하고 코드 변경 사항을 적용할 수 있다. 체크포인트를 활성화하려면 제미나이 CLI를 시작할 때 --checkpointing 플래그를 사용하거나 settings.json 파일을 편집하면 된다. /restore 명령을 사용하면 복원할 체크포인트를 나열하고 선택할 수 있다.


제미나이 모델

현재 제미나이 CLI의 기본 모델은 제미나이-2.5-프로(gemini-2.5-pro) 모델로, 컨텍스트 윈도우는 100만 토큰이며 일반적으로 좋은 결과를 제공한다. 사용량이 매우 많은 기간에는 제미나이-2.5-플래시 모델로 대체되는 경우도 있다. 이 모델은 더 빠르고 크기도 작지만 그만큼 역량은 떨어진다.


사용할 모델을 설정하려면 CLI에 -m(또는 --model) 플래그를 사용하거나 GEMINI_MODEL 환경 변수를 설정한다. 단, 제미나이 제품군에 속한 모델만 사용 가능하다.


제미나이 CLI 명령과 툴

제미나이 CLI는 현재 17개 내외의 명령과 11개 내외의 툴을 지원한다. 버전이 올라갈수록 지원되는 명령과 툴의 수도 대체로 늘어난다. 최신 목록(v0/1/12 기준)을 보려면 명령, 기본 정보, 단축키의 경우 /help 명령을 사용하고, 툴은 /tools 명령을 사용하면 된다. 데이터베이스에 있는 콘텐츠에 액세스해야 하는 경우 MCP(Model Context Protocol) 서버를 사용해서 설정할 수 있다.


!cd 를 사용해서 단일 디렉토리 트리 제한을 우회하려고 생각할 수 있지만 맥OS 시트벨트 샌드박스에서 막힌다. !cd 명령은 사용 후 원래 디렉토리로 돌아간다.


│ Basics:                                                                   │
│ Add context: Use @ to specify files for context (e.g., @src/myFile.ts) to │
│ target specific files or folders.                                         │
│ Shell mode: Execute shell commands via ! (e.g., !npm run start) or use    │
│ natural language (e.g. start server).                                     │
│                                                                           │
│ Commands:                                                                 │
│  /clear - clear the screen and conversation history                       │
│  /help - for help on gemini-cli                                           │
│  /memory - Commands for interacting with memory.                          │
│    show - Show the current memory contents.                               │
│    add - Add content to the memory.                                       │
│    refresh - Refresh the memory from the source.                          │
│  /theme - change the theme                                                │
│  /docs - open full Gemini CLI documentation in your browser               │
│  /auth - change the auth method                                           │
│  /editor - set external editor preference                                 │
│  /privacy - display the privacy notice                                    │
│  /stats - check session stats. Usage: /stats [model|tools]                │
│  /mcp - list configured MCP servers and tools                             │
│  /extensions - list active extensions                                     │
│  /tools - list available Gemini CLI tools                                 │
│  /about - show version info                                               │
│  /bug - submit a bug report                                               │
│  /chat - Manage conversation history. Usage: /chat      │
│                                                                      │
│  /quit - exit the cli                                                     │
│  /compress - Compresses the context by replacing it with a summary.       │
│  ! - shell command                                                        │
│                                                                           │
│ Keyboard Shortcuts:                                                       │
│ Enter - Send message                                                      │
│ Ctrl+J - New line                                                         │
│ Up/Down - Cycle through your prompt history                               │
│ Alt+Left/Right - Jump through words in the input                          │
│ Shift+Tab - Toggle auto-accepting edits                                   │
│ Ctrl+Y - Toggle YOLO mode                                                 │
│ Esc - Cancel operation                                                    │
│ Ctrl+C - Quit application                                                 │

ℹ Available Gemini CLI tools:

    - ReadFolder
    - ReadFile
    - SearchText
    - FindFiles
    - Edit
    - WriteFile
    - WebFetch
    - ReadManyFiles
    - Shell
    - Save Memory
    - GoogleSearch
Foundry

Foundry


제미나이와 MCP 서버

제미나이 CLI는 settings.json 파일의 mcpServers 구성을 사용해서 MCP 서버를 찾고 연결한다. 이 구성은 서로 다른 전송 메커니즘을 사용하는 여러 서버를 지원한다. 전역 수준에서 MCP 서버를 구성하려면 ~/.gemini/settings.json 파일을 사용하고, 개별 프로젝트의 경우 로컬 .gemini/settings.json 파일을 사용해 구성하면 된다.


구성의 형태는 다음과 같다.


{ …file contains other config objects
"mcpServers": {
"serverName": {
"command": "path/to/server",
"args": ["--arg1", "value1"],
"env": {
"API_KEY": "$MY_API_TOKEN"
},
"cwd": "./server-directory",
"timeout": 30000,
"trust": false
}
}
}

매우 유연하긴 하지만 제대로 구성하기가 다소 까다롭다. 처음 시도한 방식이 작동하지 않는다면 제미나이 CLI에 로컬 .gemini/settings.json 파일 편집에 대한 도움을 요청하는 것이 좋다.


이 리뷰 기사를 작성하기 시작할 때쯤 앤트로픽이 클로드 데스크톱용 MCP 서버를 간단히 구성할 수 있게 해주는 데스크톱 확장을 발표했다. 필자는 같은 개념을 제미나이 CLI에도 적용할 수 있다고 생각해서 이를 제안하는 깃허브 이슈를 제출했다. 현재 이 기능 요청은 우선순위 p3으로 분류돼 있는데, p3이란 것은 사실상 “기약이 없다”는 뜻이다.


제미나이 CLI에서 사용할 MCP 서버를 찾고 싶다면 "mcp servers"로 검색해도 되지만, 더 믿을 만한 서버 목록은 여기에서 찾을 수 있다.


몇 가지 제미나이 CLI 실험

필자는 제미나이 CLI가 구글 클라우드에 작동할 수 있도록 하기 위해 제미나이 CLI가 출시되기 전날 gcloud를 설치했다. 그러나 gcloud 설치에 문제가 있었다. 필자가 제미나이 CLI를 사용해 가장 먼저 한 일은 이 문제를 해결하기 위해 gcloud의 오류 메시지를 입력한 것이다. 제미나이가 알려준 문제 해결 방법에는 제미나이에 허용된 권한보다 더 높은 권한이 필요했기 때문에 다른 터미널 탭에서 실행했는데, 결과적으로 문제는 잘 해결됐다.


그 다음에는 제미나이에 클라인(Cline) 코드 베이스에 대한 설명을 요청해봤다. 제미나이는 사용량이 많았는지 대기 메시지를 출력했는데, 스타 트렉에서 일부를 차용한 재미있는 메시지였다. 예를 들어 “플럭스 커패시터 조정 중…”이라고 나왔다가 잠시 후 “응답 정체가 감지되어 이 세션의 나머지 시간 동안에는 더 빠른 응답을 위해 제미나이-2.5-프로에서 제미나이-2.5-플래시로 자동 전환합니다”와 같은 메시지를 출력했다. flash 모델은 필자의 요청을 그럭저럭 이행했다. 다음 날 같은 질문을 다시 시도한 결과 확실히 프로 모델이 훨씬 더 뛰어났다.


참고로 복잡한 코드 생성 중에 플래시 모델로 대체되는 상황을 경험한 일부 사용자들은 계속 개선되고 있는 프로 모델과 달리 플래시 모델은 엉뚱한 길로 빠졌다고 지적하기도 했다. 경험의 질은 사용자마다 다를 수 있다.


다음으로, 필자는 ~/Code 디렉토리로 전환해서 제미나이에 새 gemini 폴더를 만들 것을 요청했고, 제미나이는 그대로 이행했다. 이후 필자는 다음과 같이 요청했다.


pi를 계산하고 출력하는 c++ 앱을 만들어. 명령줄 변수를 사용해서 자릿수를 설정해. 자릿수는 1 이상이어야 하고 값은 100자릿수까지 정확해야 해. 프로그램을 gemini 폴더에 pi_value라는 이름으로 저장해.


제미나이는 임의 정밀도 수학을 사용하지 않고, 대신 스피곳(spigot) 알고리즘을 구현했다. 그런데 생성된 코드를 50자리로 실행하자 0이 50개 출력됐으며 이를 두고 제미나이는 제대로 작동하고 있다고 보고했다. 필자는 14살 때 이미 스피곳 알고리즘을 기계어로 구현한 적이 있었던 만큼 이 결과는 매우 실망스러웠다.


그래서 다음과 같이 입력했다.


그 답은 완전히 틀렸어.


제미나이는 다음과 같이 답했다.


✦ 네, 그 말이 맞습니다. 죄송합니다. 제가 사용한 알고리즘에는 문제가 있었고 잘못된 결과를 도출했습니다. Pi의 자릿수를 정확히 계산하도록 스피곳 알고리즘을 수정했습니다.


제미나이는 한동안 이리저리 궁리하다가 결국 스피곳 알고리즘을 포기하고 부스트 C++ 라이브러리를 사용하기로 했다. 생성된 코드는 그럭저럭 괜찮아 보였지만 필자가 홈브루로 부스트를 설치한 다음 제미나이에 설치 경로를 알려줘야 했고, C++14를 지원하도록 컴파일 플래그도 바꿔야 했다. 코드는 작동했지만 사실 이보다 더 나은 방법이 여러 개 있었다.


필자는 다음과 같이 입력했다.


이미 설치돼 있는 mpfr을 사용해서 다시 시도해봐. pi_value_mpfr이라는 이름을 사용해.


제미나이는 첫 시도에 제대로 해냈는데 사실 크게 놀랄 일은 아니다. MPFR에는 pi에 대한 내장 상수 함수가 있기 때문이다. 이후 제미나이는 묻지도 않았는데 MPFR 구현이 부스트 구현에 비해 약간 느리다고 지적했다. 필자는 MPFR이 최적은 아니지만 안정적인 알고리즘을 사용한다는 것을 이미 알고 있었다.


그래서 다음과 같이 입력했다.


가능한 최선의 알고리즘을 사용해서 다시 시도하고, 프로그램 이름은 pi_value으로 지정해.


제미나이는 MPFR와 함께 추드노프스키(Chudnovsky) 알고리즘은 잘 선택했지만 구현이 제대로 작동하기까지 여러 번 시행착오를 거쳤다. 결국 정확한 값을 얻었을 때 실제 실행 시간은 pi용 내장 상수 함수에 비해 절반 수준이었다. 이후 필자는 제미나이에 3개의 결과값을 서로, 그리고 브리태니커 백과사전에 나온 39자리 기준 값과 비교 확인하라고 지시했고 제미나이는 요청대로 실행했다.


이번에는 더 복잡한 작업으로 넘어가서, gemini-cli 리포지토리의 최신 복사본이 있는 디렉토리로 이동했다. 먼저 제미나이에 리포지토리에 대한 설명을 요청한 다음 열려 있는 이슈를 나열하도록 요청했다. 접근 권한을 부여하자 제미나이는 gh를 사용해 요청을 잘 처리했다. 그 다음에는 열린 이슈 중 good first issue로 표시된 이슈를 선택하고 구현을 제안하도록 요청했다. 제미나이는 일단 계획을 수립하고 이후 구현에서 문제를 겪은 다음 계획을 수정했지만, 수정된 계획에도 문제가 있었다. 그러다가 타입스크립트 괄호를 맞추다가 무한 루프에 빠지는 바람에 작업을 취소했다.


괜찮지만 뛰어난 수준은 아니다

필자의 결론은 제미나이-2.5-프로 모델을 사용하는 제미나이 CLI는 꽤 괜찮지만 뛰어난 수준까지는 아니라는 것이다. 단계를 0부터 5까지 나눈다면(0단계는 “자동화 또는 에이전시는 없지만 단조롭고 반복적인 사용에는 괜찮은 툴”, 5단계는 “완전한 자동화: 소프트웨어가 인간의 감독 없이 문제 해결과 구현 가능”) 제미나이는 3.5 정도라고 할 수 있다. 즉, 3단계(“조건부 자동화: 소프트웨어가 사전에 정의된 규칙과 레시피에 따라 스스로 코드를 작성할 수 있음”)과 4단계(“높은 자동화: 소프트웨어가 인간의 감독이 거의 없는 상태에서 스스로 코드를 작성할 수 있음”)의 중간에 위치한다.


필자가 테스트해본 시스템 중에서 이보다 더 나은 시스템은 클로드 코드와 솔버밖에 없다. 클로드 코드와 솔버 모두 종종 4단계 또는 그에 근접한 수준으로 작동한다. 대신 제미나이 CLI는 무료이고, gemini-2.5-pro 모델은 컨텍스트 윈도우가 100만 토큰에 이르고 고급 코딩 기능도 갖춘 만큼 구독하거나 사용료를 내지 않고도 꽤 많은 일을 할 수 있다.



비용


분당 모델 요청 60회, 하루 요청 1,000회까지 무료. 사용량 기반의 요금제 및 구독 제공



플랫폼


명령줄/터미널. Node.js v18+; 윈도우, 맥OS, 리눅스



결론


제미나이 CLI는 무료이며 gemini-2.5-pro 모델에는 컨텍스트 윈도우 100만 토큰과 고급 코딩 기능이 있어 구독하거나 사용료를 내지 않고도 꽤 많은 일을 할 수 있다. 필자가 테스트한 시스템 중에서 이보다 나은 시스템은 클로드 코드와 솔버밖에 없다.



장점


  • - 대부분의 사용에 대해 무료
  • - 대부분의 경우 준수한 결과 제공
  • - 조건부 자동화와 높은 자동화 사이에 위치
  • - 활발한 오픈소스 프로젝트


단점


  • - 나온지 아직 한 달이 되지 않은 만큼 여전히 버그가 많음
  • - 호스팅되는 모델을 사용하므로 코드 유출 가능성을 배제할 수 없음
  • - 제대로 작동하지 않을 때 엉터리 코드를 내놓고도 잘 작동한다고 우길 수 있음

dl-itworldkorea@foundryco.com



Martin Heller editor@itworld.co.kr
저작권자 Foundry & ITWorld, 무단 전재 및 재배포 금지