gac 명령줄 사용법
June 22, 2026 · View on GitHub
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano
이 문서는 uvx gac CLI 도구의 사용 가능한 모든 플래그와 옵션을 설명합니다.
목차
기본 사용법
uvx gac init
# 그런 다음 프롬프트를 따라 프로바이더, 모델 및 API 키를 대화형으로 구성하세요
uvx gac
스테이징된 변경 사항에 대한 LLM 기반 커밋 메시지를 생성하고 확인을 요청합니다. 확인 프롬프트는 다음을 수락합니다:
y또는yes- 커밋 진행n또는no- 커밋 취소r또는reroll- 동일한 컨텍스트로 커밋 메시지 재생성e또는edit- 커밋 메시지 편집. 기본적으로 vi/emacs 키바인딩의 인플레이스 TUI를 엽니다.GAC_EDITOR를 설정하면 원하는 에디터를 대신 열 수 있습니다 (예: VS Code의 경우GAC_EDITOR=code gac, vim의 경우GAC_EDITOR=vim gac)- 다른 텍스트 - 해당 텍스트를 피드백으로 재생성 (예:
make it shorter,focus on performance) - 빈 입력 (엔터만) - 프롬프트 다시 표시
핵심 워크플로우 플래그
| 플래그 / 옵션 | 단축 | 설명 |
|---|---|---|
--add-all | -a | 커밋하기 전에 모든 변경 사항 스테이징 |
--stage | -S | 트리 기반 TUI로 인터랙티브하게 스테이징할 파일 선택 |
--group | -g | 스테이징된 변경 사항을 여러 논리적 커밋으로 그룹화 |
--push | -p | 커밋 후 리모트로 변경 사항 푸시 |
--yes | -y | 프롬프트 없이 자동으로 커밋을 확정 |
--dry-run | 변경 없이 어떤 일이 발생할지 표시 | |
--message-only | 실제 커밋 없이 생성된 커밋 메시지만 출력 | |
--no-verify | 커밋 시 pre-commit 및 lefthook hooks 건너뛰기 | |
--skip-secret-scan | 스테이징된 변경 사항의 비밀 검사 건너뛰기 | |
--no-verify-ssl | SSL 인증서 검증 건너뛰기 (기업 프록시에 유용) | |
--signoff | 커밋 메시지에 Signed-off-by 라인 추가 (DCO 규정 준수) | |
--interactive | -i | 더 나은 커밋을 위해 변경 사항에 대해 질문하기 |
참고: --stage와 --add-all은 동시에 사용할 수 없습니다. --stage는 인터랙티브하게 스테이징할 파일을 선택할 때, --add-all은 모든 변경 사항을 한 번에 스테이징할 때 사용하세요.
참고: 먼저 모든 변경 사항을 스테이징한 다음 커밋으로 그룹화하려면 -a와 -g를 결합하세요 (즉, -ag).
참고: --group을 사용할 때, 최대 출력 토큰 제한은 커밋되는 파일 수에 따라 자동으로 조정됩니다 (1-9개 파일에 2배, 10-19개 파일에 3배, 20-29개 파일에 4배, 30개 이상 파일에 5배). 이는 LLM이 대량의 변경셋에도 잘림 없이 모든 그룹화된 커밋을 생성할 수 있도록 충분한 토큰을 확보합니다.
참고: --message-only와 --group은 동시에 사용할 수 없습니다. 외부 처리나 별도 도구에서 사용할 커밋 메시지가 필요하면 --message-only를, 현재 git 워크플로우에서 여러 커밋을 구성하려면 --group을 사용하세요.
참고: --interactive 플래그는 변경 사항에 대해 질문을 던져 LLM에 추가 컨텍스트를 제공합니다. 특히 복잡한 변경이나 작업의 전체 맥락을 커밋 메시지에 담고 싶을 때 유용합니다.
메시지 커스터마이징
| 플래그 / 옵션 | 단축 | 설명 |
|---|---|---|
--one-liner | -o | 한 줄 커밋 메시지 생성 |
--verbose | -v | 동기, 아키텍처 및 영향을 포함한 상세한 커밋 메시지 생성 |
--hint <text> | -h | LLM을 안내하기 위한 힌트 추가 |
--model <model> | -m | 이 커밋에 사용할 모델 지정 |
--language <lang> | -l | 언어 재정의 (이름 또는 코드: 'Spanish', 'es', 'zh-CN', 'ja') |
--scope | -s | 커밋에 적절한 스코프 추론 |
--50-72 | 커밋 메시지 서식에 50/72 규칙 적용 |
참고: --50-72 플래그는 50/72 규칙을 적용합니다:
- 제목 줄: 최대 50자
- 본문 줄: 줄당 최대 72자
- 이렇게 하면
git log --oneline및 GitHub UI에서 커밋 메시지를 읽기 쉽게 유지할 수 있습니다
이 규칙을 항상 적용하려면 .gac.env 파일에 GAC_USE_50_72_RULE=true를 설정할 수도 있습니다.
참고: 확인 프롬프트에 피드백을 타이핑하여 대화형으로 피드백을 제공할 수 있습니다 - 'r'로 접두사를 붙일 필요가 없습니다. 간단한 재롤링을 위해 r을 타이핑하고, 메시지 편집을 위해 e를 타이핑하세요 (기본적으로 인플레이스 TUI, 또는 $GAC_EDITOR가 설정된 경우 해당 에디터), 또는 make it shorter와 같이 피드백을 직접 타이핑하세요.
출력 및 상세 수준
| 플래그 / 옵션 | 단축 | 설명 |
|---|---|---|
--quiet | -q | 오류를 제외한 모든 출력 억제 |
--log-level <level> | 로그 레벨 설정 (debug, info, warning, error) | |
--show-prompt | 커밋 메시지 생성에 사용된 LLM 프롬프트 출력 |
도움말 및 버전
| 플래그 / 옵션 | 단축 | 설명 |
|---|---|---|
--version | gac 버전 표시 및 종료 | |
--help | 도움말 메시지 표시 및 종료 |
예제 워크플로우
-
모든 변경 사항 스테이징 및 커밋:
uvx gac -a -
한 단계로 커밋 및 푸시:
uvx gac -ap -
한 줄 커밋 메시지 생성:
uvx gac -o -
구조화된 섹션으로 상세한 커밋 메시지 생성:
uvx gac -v -
LLM을 위한 힌트 추가:
uvx gac -h "Refactor authentication logic" -
커밋에 대한 스코프 추론:
uvx gac -s -
스테이징된 변경 사항을 논리적 커밋으로 그룹화:
uvx gac -g # 이미 스테이징한 파일만 그룹화 -
모든 변경 사항 그룹화 (스테이징 + 스테이징되지 않음) 및 자동 확인:
uvx gac -agy # 모든 것을 스테이징하고, 그룹화하며, 자동 확인 -
이 커밋에만 특정 모델 사용:
uvx gac -m anthropic:claude-haiku-4-5 -
특정 언어로 커밋 메시지 생성:
# 언어 코드 사용 (더 짧게) uvx gac -l zh-CN uvx gac -l ja uvx gac -l es # 전체 이름 사용 uvx gac -l "Simplified Chinese" uvx gac -l Japanese uvx gac -l Spanish -
드라이 런 (어떤 일이 발생할지 확인):
uvx gac --dry-run -
커밋 메시지만 가져오기 (스크립트 통합용):
uvx gac --message-only # 예시 출력: feat: add user authentication system -
한 줄 형식의 커밋 메시지 가져오기:
uvx gac --message-only --one-liner # 예시 출력: feat: add user authentication system -
컨텍스트를 제공하기 위해 대화형 모드 사용:
uvx gac -i # 이 변경들의 주요 목적은 무엇입니까? # 어떤 문제를 해결하고 있습니까? # 언급할 가치가 있는 구현 세부사항이 있습니까? -
상세 출력으로 대화형 모드:
uvx gac -i -v # 질문하고 상세한 커밋 메시지 생성
고급
- 더 강력한 워크플로우를 위해 플래그 결합 (예:
uvx gac -ayp로 스테이징, 자동 확인 및 푸시) - LLM에 보낸 프롬프트를 디버깅하거나 검토하려면
--show-prompt사용 --log-level또는--quiet로 상세 수준 조정- 스크립트 통합 및 자동화된 워크플로우를 위해
--message-only사용
스크립트 통합 및 외부 처리
--message-only 플래그는 스크립트 통합 및 외부 도구 워크플로우를 위해 설계되었습니다. 이는 포맷팅, 스피너 또는 추가 UI 요소 없이 순수한 커밋 메시지만 출력합니다.
사용 사례:
- 에이전트 통합: AI 에이전트가 커밋 메시지를 가져오고 직접 커밋을 처리하도록 허용
- 대체 VCS: 생성된 메시지를 다른 버전 관리 시스템(Mercurial, Jujutsu 등)과 함께 사용
- 사용자 정의 커밋 워크플로우: 커밋하기 전에 메시지를 처리하거나 수정
- CI/CD 파이프라인: 자동화된 프로세스를 위해 커밋 메시지 추출
스크립트 사용 예시:
#!/bin/bash
# 커밋 메시지를 가져와서 사용자 정의 커밋 함수와 함께 사용
MESSAGE=20 20 12 61 79 80 81 98 701 33 100 204 250 395 398 399 400uvx gac --message-only --add-all --yes)
git commit -m "$MESSAGE"
# Python 통합 예시
import subprocess
def get_commit_message():
result = subprocess.run(
["gac", "--message-only", "--yes"],
capture_output=True, text=True
)
return result.stdout.strip()
message = get_commit_message()
print(f"생성된 메시지: {message}")
스크립트 사용을 위한 주요 기능:
- Rich 포맷팅이나 스피너 없는 깨끗한 출력
- 확인 프롬프트를 자동으로 우회
- git에 실제 커밋이 생성되지 않음
- 단순화된 출력을 위해
--one-liner와 함께 작동 --hint,--model등 다른 플래그와 결합 가능
Pre-commit 및 Lefthook Hooks 건너뛰기
--no-verify 플래그를 사용하면 프로젝트에 구성된 모든 pre-commit 또는 lefthook hooks를 건너뛸 수 있습니다:
uvx gac --no-verify # 모든 pre-commit 및 lefthook hooks 건너뛰기
다음 경우에 --no-verify 사용:
- Pre-commit 또는 lefthook hooks가 일시적으로 실패하는 경우
- 시간이 많이 걸리는 hooks로 작업하는 경우
- 아직 모든 검사를 통과하지 않는 진행 중인 작업을 커밋하는 경우
참고: 이 훅들은 코드 품질 표준을 유지하므로 주의해서 사용하세요.
보안 검사
gac에는 어떤 AI API 호출이 이루어지기 전에 스테이징된 변경 사항에서 잠재적인 비밀과 API 키를 자동으로 감지하는 내장 보안 검사가 포함되어 있습니다. 비밀이 감지되면 워크플로우가 즉시 중단됩니다 — API 호출이 발생하지 않습니다. 이는 민감한 데이터가 AI 모델로 전송되지 않도록 보장합니다. 스캐너는 정규식 기반 패턴 매칭을 사용하며 LLM이 아니므로 스캔이 빠르고 완전히 로컬에서 실행됩니다.
보안 검사 건너뛰기:
uvx gac --skip-secret-scan # 이 커밋에 대한 보안 검사 건너뛰기
영구적으로 비활성화: .gac.env 파일에서 GAC_SKIP_SECRET_SCAN=true 설정.
건너뛰는 경우:
- 자리 표시자 키가 있는 예제 코드 커밋
- 더미 자격 증명이 포함된 테스트 픽스처로 작업
- 변경 사항이 안전하다고 확인한 경우
참고: 스캐너는 정규식 기반 패턴 매칭(LLLM 아님)을 사용하여 일반적인 비밀 형식을 감지합니다. 모든 AI API 호출 전에 실행됩니다 — 비밀이 발견되면 API 호출이 발생하지 않습니다. 커밋하기 전에는 항상 스테이징된 변경 사항을 검토하세요.
Binary File Detection
uvx gac includes automatic detection of binary files in staged changes, preventing accidental commits of compiled files, images, and other binary assets that typically should not be in version control. The detector uses multiple strategies:
- Extension-based detection - Fast recognition of 60+ binary file types
- Null byte detection - Reliable indicator of binary content
- UTF-8 validity checking - Text files should be valid UTF-8 or ASCII
- Magic byte identification - Detects file types from file signatures
Supported binary types:
- Executables: .exe, .dll, .so, .dylib, .bin, .o, .obj, .lib, .a
- Archives: .zip, .tar, .gz, .bz2, .7z, .rar, .xz, .zst
- Images: .png, .jpg, .jpeg, .gif, .bmp, .ico, .svg, .tiff, .webp
- Media: .mp3, .wav, .ogg, .flac, .m4a, .aac, .mp4, .avi, .mkv, .mov, .wmv
- Fonts: .ttf, .otf, .woff, .woff2, .eot
- Documents: .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx
- Databases: .db, .sqlite, .sqlite3, .mdb, .accdb
- Compiled code: .class, .jar, .war, .ear, .pyc, .pyd, .pyo, .beam, .hi
When binary files are detected:
uvx gac
# Output:
# BINARY FILE WARNING: Binary files detected!
#
# • image.png
# Type: Image file
# Size: 2.3 MB
#
# Binary files should typically be excluded from version control.
# Use .gitignore to prevent accidental commits of binary files.
#
# Options:
# [a] Abort commit (recommended)
# [c] Continue anyway (you know what you are doing)
# [r] Unstage binary file(s) and continue
#
# Choose an option [a]:
Best practices:
-
Add binary patterns to .gitignore:
# Compiled files *.exe *.dll *.so *.dylib *.o *.a # Images *.png *.jpg *.jpeg *.gif # Archives *.zip *.tar.gz # Python *.pyc __pycache__/ -
Use Git LFS for large binary files that must be tracked:
git lfs track "*.psd" git lfs track "*.zip" -
Commit binary files only when necessary:
- Icons and assets that are part of the codebase
- Test fixtures that need to be versioned
- Documentation images
Note: Binary detection runs automatically during the commit workflow (similar to secret scanning). There is no flag to disable it, as binary files generally should not be committed unless there is a specific reason. If you need to commit a binary file, choose the "Continue anyway" option or ensure it is properly documented in your project guidelines.
SSL 인증서 검증
--no-verify-ssl 플래그를 사용하면 API 호출의 SSL 인증서 검증을 건너뛸 수 있습니다:
uvx gac --no-verify-ssl # 이 커밋에 대한 SSL 검증 건너뛰기
영구적으로 설정하려면: .gac.env 파일에서 GAC_NO_VERIFY_SSL=true를 설정하세요.
--no-verify-ssl을 사용하는 경우:
- 기업 프록시가 SSL 트래픽을 가로채는 경우 (MITM 프록시)
- 개발 환경에서 자체 서명된 인증서를 사용하는 경우
- 네트워크 보안 설정으로 인해 SSL 인증서 오류가 발생하는 경우
참고: 신뢰할 수 있는 네트워크 환경에서만 이 옵션을 사용하세요. SSL 검증을 비활성화하면 보안이 감소하고 API 요청이 중간자 공격에 취약해질 수 있습니다.
Signed-off-by 라인 (DCO 규정 준수)
gac는 커밋 메시지에 Signed-off-by 라인을 추가하는 것을 지원하며, 이는 많은 오픈소스 프로젝트에서 Developer Certificate of Origin (DCO) 규정 준수를 위해 필요합니다.
Signoff 추가 :
uvx gac --signoff # 커밋 메시지에 Signed-off-by 라인 추가 (DCO 규정 준수)
영구적으로 활성화하려면 : .gac.env 파일에 GAC_SIGNOFF=true를 설정하거나, 설정에 signoff=true를 추가하세요.
기능 :
- 커밋 메시지에
Signed-off-by: 당신의 이름 <your.email@example.com>추가 - git config (
user.name및user.email)을 사용하여 라인 구성 - Cherry Studio, Linux 커널 및 기타 DCO를 사용하는 프로젝트에 필요함
git 사용자 정보 설정 :
git config에 올바른 이름과 이메일이 설정되어 있는지 확인하세요 :
git config --global user.name "Your Full Name"
git config --global user.email "your.email@example.com"
참고 : Signed-off-by 라인은 메시지 생성 중 AI가 아닌 커밋 중 git에 의해 추가됩니다. 미리보기에는 표시되지 않지만 최종 커밋에 포함됩니다 (git log -1로 확인).
구성 노트
- gac를 설정하는 권장 방법은
uvx gac init를 실행하고 대화형 프롬프트를 따르는 것입니다. - 이미 언어가 구성되었고 프로바이더나 모델만 전환해야 하나요? 언어 질문 없이 설정을 반복하려면
uvx gac model을 실행하세요. - Claude Code를 사용하시나요? OAuth 인증 지침은 Claude Code 설정 가이드를 참조하세요.
- ChatGPT OAuth 를 사용하시나요? 브라우저 기반 인증 지침은 ChatGPT OAuth 설정 가이드 를 참조하세요.
- GitHub Copilot을 사용하시나요? Device Flow 인증 지침은 GitHub Copilot 설정 가이드를 참조하세요.
- gac는 다음 우선순위로 구성을 로드합니다:
- CLI 플래그
- 프로젝트 레벨
.gac.env - 사용자 레벨
~/.gac.env - 환경 변수
고급 구성 옵션
선택적 환경 변수로 gac의 동작을 커스터마이즈할 수 있습니다:
GAC_EDITOR=code --wait- 확인 프롬프트에서e를 누를 때 사용할 에디터를 재정의합니다. 기본적으로e는 인플레이스 TUI를 열며,GAC_EDITOR를 설정하면 외부 에디터로 전환됩니다. 인수가 있는 모든 에디터 명령을 지원합니다. 알려진 GUI 에디터(VS Code, Cursor, Zed, Sublime Text)에는 대기 플래그(--wait/-w)가 자동으로 삽입되어 파일을 닫을 때까지 프로세스가 차단됩니다GAC_ALWAYS_INCLUDE_SCOPE=true- 커밋 메시지에 스코프를 자동으로 추론하고 포함 (예:feat(auth):처럼 스코프를 포함해feat:대신 사용)GAC_ALWAYS_GROUPED=true- 항상 그룹화된 커밋 모드 사용 (항상-g또는--group플래그를 전달하는 것과 동일)GAC_VERBOSE=true- 동기, 아키텍처 및 영향 섹션으로 상세한 커밋 메시지 생성GAC_USE_50_72_RULE=true- 커밋 메시지에 항상 50/72 규칙 적용 (제목 ≤50자, 본문 줄 ≤72자)GAC_SIGNOFF=true- 항상 커밋에 Signed-off-by 라인 추가 (DCO 규정 준수용)GAC_TEMPERATURE=0.7- LLM 창의성 제어 (0.0-1.0, 낮을수록 더 집중됨)GAC_REASONING_EFFORT=medium- 확장된 사고를 지원하는 모델의 추론/사고 깊이 제어 (low, medium, high, max). 설정하지 않으면 각 모델의 기본값을 사용합니다. 호환되는 공급자(OpenAI 스타일, Anthropic 제외)에게만 전송됩니다.GAC_MAX_OUTPUT_TOKENS=4096- 생성된 메시지용 최대 토큰 (--group사용 시 파일 수에 따라 자동으로 2-5배 조정됨; 더 높거나 낮게 설정하려면 재정의)GAC_WARNING_LIMIT_TOKENS=4096- 프롬프트가 이 토큰 수를 초과하면 경고GAC_SYSTEM_PROMPT_PATH=/path/to/custom_prompt.txt- 커밋 메시지 생성을 위해 커스텀 시스템 프롬프트 사용GAC_LANGUAGE=Spanish- 특정 언어로 커밋 메시지 생성 (예: Spanish, French, Japanese, German). 전체 이름 또는 ISO 코드 지원 (es, fr, ja, de, zh-CN). 대화형 선택을 위해uvx gac language사용GAC_TRANSLATE_PREFIXES=true- 컨벤셔널 커밋 접두사 (feat, fix 등)를 대상 언어로 번역 (기본값: false, 접두사를 영어로 유지)GAC_SKIP_SECRET_SCAN=true- 스테이징된 변경 사항의 비밀에 대한 자동 보안 스캔 비활성화 (주의해서 사용)GAC_NO_VERIFY_SSL=true- API 호출의 SSL 인증서 검증 건너뛰기 (SSL 트래픽을 가로채는 기업 프록시에 유용)GAC_DISABLE_STATS=true- 사용 통계 추적 비활성화 (통계 파일 읽기/쓰기를 하지 않음; 기존 데이터는 보존됨). truthy 값만 통계를 비활성화합니다;false/0/no/off로 설정하면 통계가 활성화 상태로 유지되며, 변수를 설정하지 않는 것과 같습니다
전체 구성 템플릿은 .gac.env.example을 참조하세요.
커스텀 시스템 프롬프트 생성에 대한 상세한 안내는 docs/CUSTOM_SYSTEM_PROMPTS.md를 참조하세요.
구성 하위 명령어
다음 하위 명령을 사용할 수 있습니다:
uvx gac init— 프로바이더, 모델, 언어 구성을 위한 대화형 설정 마법사uvx gac model— 언어 프롬프트 없는 프로바이더/모델/API 키 설정 (빠른 전환에 이상적)uvx gac auth— 모든 프로바이더의 OAuth 인증 상태 표시uvx gac auth claude-code login— OAuth를 사용하여 Claude Code에 로그인 (브라우저 열림)uvx gac auth claude-code logout— Claude Code에서 로그아웃하고 저장된 토큰 제거uvx gac auth claude-code status— Claude Code 인증 상태 확인uvx gac auth chatgpt login— OAuth 를 사용하여 ChatGPT 에 로그인 (브라우저 열림)uvx gac auth chatgpt logout— ChatGPT 에서 로그아웃하고 저장된 토큰 제거uvx gac auth chatgpt status— ChatGPT 인증 상태 확인uvx gac auth copilot login— Device Flow를 사용하여 GitHub Copilot에 로그인uvx gac auth copilot login --host ghe.mycompany.com— GitHub Enterprise 인스턴스의 Copilot에 로그인uvx gac auth copilot logout— Copilot에서 로그아웃하고 저장된 토큰 삭제uvx gac auth copilot status— Copilot 인증 상태 확인uvx gac config show— 현재 구성 표시uvx gac config set KEY VALUE—$HOME/.gac.env에서 구성 키 설정uvx gac config get KEY— 구성 값 가져오기uvx gac config unset KEY—$HOME/.gac.env에서 구성 키 제거uvx gac language(또는uvx gac lang) — 커밋 메시지를 위한 대화형 언어 선택기 (GAC_LANGUAGE 설정)uvx gac editor(또는uvx gac edit) — 확인 프롬프트에서e키를 위한 대화형 에디터 선택기 (GAC_EDITOR 설정)uvx gac diff— 스테이징된/스테이징되지 않은 변경, 색상, 자르기 옵션으로 필터링된 git diff 표시uvx gac serve— AI 에이전트 통합을 위한 MCP 서버로 GAC 시작 (stdio 전송)uvx gac stats show— gac 사용 통계 보기 (총계, 연속 사용, 일일 및 주간 활동, 토큰 사용량, 평균 파일 수 포함 상위 프로젝트, 속도 및 지연 시간 포함 상위 모델)uvx gac stats models— 모든 모델의 상세 통계, 토큰 내역, 속도, 지연 시간 및 커밋당 지연 시간 차트 포함uvx gac stats projects— 모든 프로젝트의 통계, 토큰 내역 및 gac당 평균 파일 수 포함uvx gac stats recent— 최근 10개 gac 기록, gac당 토큰, 속도, 지연 시간, 파일 수 (-n 20으로 더 보기)uvx gac stats reset— 모든 통계를 0으로 재설정 (확인 프롬프트 표시)uvx gac stats reset model <model-id>— 특정 모델의 통계 재설정 (대소문자 구분 없음)
대화형 모드
--interactive (-i) 플래그는 변경 사항에 대해 목표 지향적인 질문을 하여 gac의 커밋 메시지 생성을 향상시킵니다. 이 추가 컨텍스트는 LLM이 더 정확하고 상세하며 컨텍스트에 적합한 커밋 메시지를 만드는 데 도움이 됩니다.
작동 방식
--interactive를 사용하면 gac은 다음과 같은 질문을 할 것입니다:
- 이 변경들의 주요 목적은 무엇입니까? - 고수준 목표를 이해하는 데 도움이 됩니다
- 어떤 문제를 해결하고 있습니까? - 동기에 대한 컨텍스트를 제공합니다
- 언급할 가치가 있는 구현 세부사항이 있습니까? - 기술적 세부사항을 캡처합니다
- 호환성 깨지는 변경이 있습니까? - 잠재적인 영향 문제를 식별합니다
- 이것이 이슈나 티켓과 관련이 있습니까? - 프로젝트 관리와 연결합니다
대화형 모드를 사용해야 할 때
대화형 모드는 다음과 같은 경우에 특히 유용합니다:
- 복잡한 변경 - diff만으로는 컨텍스트가 명확하지 않은 경우
- 리팩토링 작업 - 여러 파일과 개념에 걸쳐 있는 경우
- 새로운 기능 - 전체적인 목적에 대한 설명이 필요한 경우
- 버그 수정 - 근본 원인이 즉시 보이지 않는 경우
- 성능 최적화 - 이유가 명확하지 않은 경우
- 코드 리뷰 준비 - 질문이 변경 사항에 대해 생각하는 데 도움이 됩니다
사용 예시
기본 대화형 모드:
uvx gac -i
이렇게 할 것입니다:
- 스테이징된 변경 사항의 요약을 보여줍니다
- 변경 사항에 대해 질문합니다
- 답변을 포함하여 커밋 메시지를 생성합니다
- 확인을 요청합니다 (또는
-y와 결합된 경우 자동 확인)
스테이징된 변경으로 대화형 모드:
uvx gac -ai
# 모든 변경을 스테이징한 다음 더 나은 컨텍스트를 위해 질문합니다
특정 힌트로 대화형 모드:
uvx gac -i -h "사용자 프로필을 위한 데이터베이스 마이그레이션"
# LLM을 집중시키기 위한 특정 힌트를 제공하면서 질문합니다
상세 출력으로 대화형 모드:
uvx gac -i -v
# 질문하고 상세하고 구조화된 커밋 메시지를 생성합니다
자동 확인 대화형 모드:
uvx gac -i -y
# 질문하지만 결과 커밋을 자동 확인합니다
질문-답변 워크플로우
대화형 워크플로우는 이 패턴을 따릅니다:
- 변경 검토 - gac이 커밋하고 있는 내용의 요약을 보여줍니다
- 질문에 답변 - 각 프롬프트에 관련된 세부사항으로 답변합니다
- 컨텍스트 향상 - 답변이 LLM 프롬프트에 추가됩니다
- 메시지 생성 - LLM이 전체 컨텍스트로 커밋 메시지를 만듭니다
- 확인 - 커밋을 검토하고 확인합니다 (또는
-y로 자동 확인)
유용한 답변을 제공하기 위한 팁:
- 간결하지만 포괄적으로 - 과도하게 장황하지 않고 핵심 세부사항을 제공합니다
- "왜"에 집중 - 변경 사항 뒤에 있는 이유를 설명합니다
- 제약사항 언급 - 제한 사항이나 특별한 고려사항을 주목합니다
- 외부 컨텍스트 연결 - 이슈, 문서, 설계 문서를 참조합니다
- 빈 답변도 괜찮음 - 질문이 적용되지 않으면 그냥 Enter를 누르세요
다른 플래그와의 조합
대화형 모드는 대부분의 다른 플래그와 잘 작동합니다:
# 모든 변경을 스테이징하고 질문합니다
uvx gac -ai
# 상세 출력으로 질문합니다
uvx gac -i -v
모범 사례
- 복잡한 PR에 사용 - 상세한 설명이 필요한 pull request에 특히 유용합니다
- 팀 협업 - 질문은 다른 사람들이 검토할 변경 사항에 대해 생각하는 데 도움이 됩니다
- 문서 준비 - 답변은 릴리즈 노트의 기초를 형성하는 데 도움이 될 수 있습니다
- 학습 도구 - 질문은 커밋 메시지의 좋은 관행을 강화합니다
- 간단한 변경에는 건너뛰기 - 사소한 수정의 경우 기본 모드가 더 빠를 수 있습니다
사용 통계
gac은 가벼운 사용 통계를 추적하여 커밋 활동, 연속 사용 일수, 토큰 사용량, 가장 활발한 프로젝트와 모델을 확인할 수 있게 합니다. 통계는 ~/.gac_stats.json에 로컬로 저장되며 어디에도 전송되지 않습니다 — 원격 측정이 없습니다.
추적하는 내용: gac 실행 총횟수, 커밋 총횟수, 프롬프트 및 완료 토큰 총계, 최초/최근 사용 날짜, 일일 및 주간 카운트 (gac, 커밋, 토큰), 현재 및 최장 연속 일수, 프로젝트별 활동 (gac, 커밋, 프롬프트 + 완료 토큰), 모델별 활동 (gac, 프롬프트 + 완료 토큰).
추적하지 않는 내용: 커밋 메시지, 코드 내용, 파일 경로, 개인 정보 또는 카운트, 날짜, 프로젝트 이름 (git 원격 또는 디렉토리 이름에서 파생), 모델 이름을 넘어서는 데이터.
옵트인 또는 옵트아웃
uvx gac init이 통계 활성화 여부를 묻고 저장되는 항목을 설명합니다. 언제든 마음을 바꿀 수 있습니다:
- 통계 활성화:
GAC_DISABLE_STATS를 해제하거나false/0/no/off/비어 있음으로 설정합니다. - 통계 비활성화:
GAC_DISABLE_STATS를 truthy 값 (true,1,yes,on)으로 설정합니다.
uvx gac init 중에 통계를 거부하고 기존 ~/.gac_stats.json이 감지되면 삭제 옵션이 제공됩니다.
통계 하위 명령어
| 명령어 | 설명 |
|---|---|
uvx gac stats | 통계 표시 (uvx gac stats show과 동일) |
uvx gac stats show | 전체 통계 표시: 총계, 연속 사용, 일일 및 주간 활동, 토큰 사용량, 상위 프로젝트, 상위 모델 |
uvx gac stats models | 모든 사용 모델의 상세 통계, 토큰 내역, 속도, 지연 시간 및 커밋당 지연 시간 차트 포함 |
uvx gac stats projects | 모든 프로젝트의 통계, 토큰 내역 및 gac당 평균 파일 수 포함 |
uvx gac stats recent | 최근 10개 gac (-n 20으로 더 보기), gac당 토큰, 속도, 지연 시간, 파일 수 |
uvx gac stats reset | 모든 통계를 0으로 재설정 (확인 프롬프트 표시) |
uvx gac stats reset model <model-id> | 특정 모델의 통계 재설정 (대소문자 구분 없음) |
예시
# 전체 통계 보기
uvx gac stats
# 사용한 모든 모델의 상세 분석
uvx gac stats models
# 모든 프로젝트의 통계
uvx gac stats projects
# 최근 gac 기록
uvx gac stats recent -n 20
# 모든 통계 재설정 (확인 프롬프트 포함)
uvx gac stats reset
# 특정 모델의 통계 재설정
uvx gac stats reset model wafer:deepseek-v4-pro
표시되는 내용
uvx gac stats를 실행하면 다음이 표시됩니다:
- gac 및 커밋 총계 — gac을 사용한 횟수와 생성된 커밋 수
- 현재 및 최장 연속 일수 — gac 활동이 있는 연속 일수 (5일 이상이면 🔥)
- 활동 요약 — 오늘 및 이번 주 gac, 커밋, 토큰 수와 피크 일 및 피크 주 비교
- 상위 프로젝트 — gac 사용 + 커밋 수 기준 상위 5개 가장 활발한 저장소, gac당 평균 파일 수와 토큰 사용량 포함
- 상위 모델 — 전체 기간 속도, 지연 시간 및 토큰 사용량이 포함된 가장 많이 사용된 상위 5개 모델
uvx gac stats projects은 (상위 5개뿐만 아니라) 모든 프로젝트를 다음과 함께 표시합니다:
- 전체 프로젝트 표 — 활동별로 정렬된 각 프로젝트, gac 횟수, 커밋 횟수, gac당 커밋 비율, gac당 평균 파일 수, 프롬프트 토큰, 완료 토큰, 추론 토큰, 총 토큰 및 전체 gac 대비 비율 포함
- 활동 바 차트 — 프로젝트별 상대적 gac 횟수를 보여주는 수평 바
- 토큰 사용량 바 차트 — 프로젝트별 상대적 토큰 소비량을 보여주는 수평 바
uvx gac stats models은 (상위 5개뿐만 아니라) 모든 모델을 다음과 함께 표시합니다:
- 전체 모델 표 — 활동별로 정렬된 각 사용 모델, gac 횟수, 커밋 횟수, 전체 기간 속도(토큰/초), 전체 기간 지연 시간, 프롬프트 토큰, 완료 토큰, 추론 토큰 및 총 토큰 포함
- 속도 비교 (30일) 차트 — 최근(지난 30일) 모델 속도의 수평 막대 차트, 가장 빠른 것부터 가장 느린 것까지 정렬, 속도 백분위수별 색상 코딩 (🟡 초고속, 🟢 빠름, 🔵 보통, 🔘 느림)
- 지연 시간 비교 (30일) 차트 — 최근 호출당 지연 시간의 수평 막대 차트, 가장 짧은 것부터 가장 긴 것까지 정렬
- 커밋당 지연 시간 (30일) 차트 — 최근 지연 시간을 커밋 수로 나눈 수평 막대 차트, 커밋당 실제 대기 시간 표시 (10초 gac에서 5개 커밋을 하는 모델은 2초/커밋 vs 25초 gac에서 1개 커밋을 하는 모델은 25초/커밋)
- 하이 스코어 축하 — 🏆 새로운 일일, 주간, 토큰 또는 연속 기록을 세우면 트로피 획득; 🥈 기록과 타이면 획득
- 격려 메시지 — 활동에 기반한 맥락적 응원
uvx gac stats recent는 최근 10개의 gac을 표시합니다(-n으로 설정 가능):
- 최근 gac 표 — 각 gac에 상대적 시간, 프로젝트, 모델, 커밋 수, 파일 수, 속도, 지연 시간 및 gac당 토큰 내역 포함
통계 비활성화
GAC_DISABLE_STATS 환경 변수를 truthy 값으로 설정하세요:
# 통계 추적 비활성화
export GAC_DISABLE_STATS=true
# 또는 .gac.env에서
GAC_DISABLE_STATS=true
Falsy 값 (false, 0, no, off, 비어 있음)은 통계를 활성화 상태로 유지합니다 — 변수를 설정하지 않는 것과 같습니다.
비활성화하면 gac은 모든 통계 기록을 건너뜁니다 — 파일 읽기나 쓰기가 발생하지 않습니다. 기존 데이터는 보존되지만 다시 활성화할 때까지 업데이트되지 않습니다.
Discord 웹훅 알림
gac는 커밋할 때마다 채널의 통합 설정에서 웹훅 URL을 사용하여 Discord 채널에 알림을 보낼 수 있습니다. 이 통합은 옵트인입니다: 웹훅 URL을 명시적으로 구성할 때까지 아무 작업도 수행하지 않습니다.
설정
전용 discord 하위 명령 그룹을 사용하세요:
uvx gac discord setup # 웹훅 URL을 대화식으로 구성
uvx gac discord show # 웹훅이 구성되어 있는지 표시 (URL 마스킹됨)
uvx gac discord test # 구성된 웹훅에 테스트 알림 전송
uvx gac discord remove # 구성된 웹훅 URL 제거
또는 $HOME/.gac.env(또는./.gac.env)에 변수를 직접 설정하세요:
GAC_DISCORD_WEBHOOK_URL='https://discord.com/api/webhooks/XXXX/YYYY'
동작
- 각 성공적인 커밋 후에 발생합니다(단일 및 그룹화된 워크플로)。
--dry-run과--message-only에서는 건너뜁니다。 - 녹색 스트라이프가 있는 GitHub 스타일 임베드를 게시합니다: 작성자 행으로 레포+브랜치, 제목으로 커밋 제목, 설명으로 커밋 본문, 바닥글에 짧은 SHA를 포함합니다.
- gac 아바타와 사용자 이름
gac를 사용합니다. - 웹훅 실패는 WARNING으로 기록되며 커밋을 절대 차단하지 않습니다.
- 비활성화하려면
GAC_DISCORD_WEBHOOK_URL을 설정하지 않거나 비워두세요.gac init은 영향을 받지 않습니다 — Discord 설정은gac discord에만 있습니다.
도움말 얻기
- MCP 서버 설정(AI 에이전트 통합)에 대해서는 docs/MCP.md를 참조하세요
- 사용자 정의 시스템 프롬프트는 docs/CUSTOM_SYSTEM_PROMPTS.md를 참조하세요
- Claude Code OAuth 설정은 CLAUDE_CODE.md 를 참조하세요
- ChatGPT OAuth 설정은 CHATGPT_OAUTH.md 를 참조
- GitHub Copilot 설정은 GITHUB_COPILOT.md를 참조하세요
- 문제 해결 및 고급 팁은 docs/TROUBLESHOOTING.md를 참조하세요
- 설치 및 구성은 README.md#installation-and-configuration를 참조하세요
- 기여하려면 docs/CONTRIBUTING.md를 참조하세요
- 라이선스 정보: LICENSE