콘텐츠로 이동

Gemini CLI

Gemini CLI는 개발자의 터미널 환경에 상주하며 소프트웨어 엔지니어링 작업을 돕는 AI 에이전트입니다. 단순한 코드 자동 완성을 넘어, 프로젝트의 맥락을 이해하고 복잡한 리팩토링, 디버깅, 문서화 작업을 자율적으로 수행할 수 있습니다.

🚀 설치 및 시작 (Installation)

Gemini CLI는 Node.js 환경에서 동작합니다. npm을 사용하여 전역으로 설치할 수 있습니다.

npm install -g @google/gemini-cli

설치 후 터미널에서 gemini 명령어로 실행합니다.

gemini

⚙️ 설정 및 환경 구성 (Configuration)

Gemini CLI는 전역 설정프로젝트별 설정을 모두 지원하여, 개인의 작업 스타일과 프로젝트의 컨벤션을 유연하게 맞출 수 있습니다.

1. 폴더 구조 (Folder Structure)

Gemini CLI는 작동 시 다음의 경로들을 참조합니다.

  • ~/.gemini/ (홈 디렉토리)
    • 전역 설정을 저장하는 곳입니다. 모든 프로젝트에 공통으로 적용되는 규칙이나 기억을 저장합니다.
    • GEMINI.md: 사용자에 대한 정보, 선호하는 코딩 스타일, 전역적으로 기억해야 할 사실들을 기록합니다. (Long-term Memory)
  • ./.gemini/ (프로젝트 루트)
    • 현재 작업 중인 프로젝트에 특화된 설정을 저장합니다.
    • GEMINI.md: 프로젝트의 아키텍처, 코딩 컨벤션, 특별한 빌드 규칙 등을 자연어로 기록해두면 에이전트가 이를 읽고 작업에 반영합니다.
  • .geminiignore
    • .gitignore와 유사하게, Gemini가 읽거나 분석하지 말아야 할 파일이나 디렉토리를 지정합니다. (예: node_modules, dist, 비밀 키가 포함된 파일 등)

2. 컨텍스트 설정 (GEMINI.md)

GEMINI.md 파일은 Gemini에게 "이 프로젝트는 어떻게 다뤄야 하는지"를 알려주는 지침서 역할을 합니다.

작성 예시 (.gemini/GEMINI.md):

# Project Context
이 프로젝트는 Python FastAPI 기반의 백엔드 서버입니다.

## Coding Convention
- 변수명은 snake_case를 사용합니다.
- 모든 함수에는 Type Hint를 반드시 작성해야 합니다.
- Docstring은 Google Style을 따릅니다.

## Git Workflow
- 커밋 메시지는 Conventional Commits 규격을 따릅니다 (feat, fix, docs, ...).
- 문서를 수정할 때는 반드시 `scripts/validate_pages.py`를 실행하여 무결성을 검증해야 합니다.

이렇게 작성해두면, Gemini는 코드 수정 시 Type Hint를 자동으로 추가하고, 커밋 메시지를 작성할 때 규격을 준수하며, 문서 작업 후 검증 스크립트를 실행하려 할 것입니다.

💡 사용 가이드 (Usage Guide)

명령 프롬프트 예시

Gemini는 자연어를 잘 이해하지만, 명확한 컨텍스트를 제공할수록 더 정확한 결과를 얻을 수 있습니다.

  • Bad: "이거 고쳐줘" (무엇을, 어떻게 고쳐야 할지 모호함)
  • Good: "현재 열려있는 auth.py 파일에서 login 함수가 비동기로 동작하지 않는 버그가 있어. async/await 패턴으로 변경하고 관련된 테스트 코드도 수정해줘."

유용한 프롬프트 패턴

  1. 코드 분석 및 설명 요청 > "지금 src/utils 폴더에 있는 파일들이 어떤 역할을 하는지 요약해줘." > "PaymentService 클래스의 구조를 다이어그램으로 그려줄 수 있어?"

  2. 리팩토링 > "이 함수의 복잡도가 너무 높아. 역할을 분리해서 가독성을 높여줘. 기존 로직은 유지해야 해."

  3. 테스트 작성 > "user_controller.ts에 대한 단위 테스트를 tests/unit 폴더에 작성해줘. Jest를 사용해."

  4. 에러 디버깅 > (에러 로그를 복사해 붙여넣은 후) "이 에러가 왜 발생하는지 분석하고 해결책을 제안해줘."

슬래시 명령어 (Slash Commands)

대화 중에 사용할 수 있는 특수 명령어들입니다.

  • /help: 도움말을 확인합니다.
  • /bug: 버그를 신고하거나 피드백을 전송합니다.
  • /clear: 현재 대화 세션의 컨텍스트를 초기화합니다 (새로운 주제로 넘어갈 때 유용).
  • /exit 또는 /quit: CLI를 종료합니다.

🧠 메모리 기능 (Memory)

Gemini는 대화 중 중요한 정보를 기억할 수 있습니다.

  • 사용자: "내 이름은 Rudy이고, 리눅스 환경에서 개발해. 이 사실을 기억해."
  • Gemini: (내부적으로 save_memory 도구를 사용하여 ~/.gemini/GEMINI.md 등에 저장)

이후 대화부터는 사용자가 리눅스 환경임을 인지하고 그에 맞는 쉘 명령어를 제안하게 됩니다.