turboCommit
Crates.io
Crates.io
Crates.io
turboCommit은 GPT-6 계열을 사용하여 Git 및 Jujutsu (JJ) 변경 사항으로부터 Conventional Commit 메시지를 작성하는 CLI 도구입니다. GPT-6 Luna는 속도와 낮은 비용으로 기본값이며, 더 어려운 변경 사항의 경우 Sol과 Astra를 사용할 수 있습니다.
기능 (Features)
- 기본적으로 GPT-6 Luna가 사용되며,
--model을 통해 Sol 및 Astra를 사용할 수 있습니다.
- 기본적으로 하나의 제안이 제공됩니다.
-n을 사용하여 더 많은 제안을 요청할 수 있습니다.
- 커밋 의도, JJ 설명 및 간결한 출력을 위해 조정된 프롬프트가 적용되었습니다.
- 스테이징된 Git 변경 사항 또는 JJ 리비전으로부터 Conventional Commit 제안을 제공합니다.
--auto-commit을 설정하지 않은 경우 대화형 검토, 편집 및 수정 과정이 가능합니다.
- 추론 노력(Reasoning effort) 제어:
none, low, medium, high, xhigh, max (Astra는 low에서 시작).
- 상세 수준(Verbosity) 제어:
low, medium, high.
- 안정적인 다중 제안 구문 분석을 위해 구조화된 JSON 출력을 지원합니다.
- 요청, 응답, 토큰 사용량 및 타이밍에 대한 디버그 로깅 기능을 제공합니다.
~/.turbocommit.yaml 파일을 통한 YAML 설정이 가능합니다.
설치 (Installation)
cargo install --git https://github.com/dikkadev/turboCommit
crates.io에 게시된 최신 버전을 사용하려면 cargo install turbocommit을 사용하십시오. 참고로, 게시된 릴리스는 저장소보다 지연될 수 있습니다.
선택적 셸 별칭 (Optional shell alias):
사용법 (Usage)
- Git의 경우, 변경 사항을 스테이징합니다. JJ는 선택된 리비전의 변경 사항을 직접 사용합니다.
- 하나의 제안을 생성하고 검토합니다.
대화형 흐름(interactive flow)을 통해 사용자는 수락, 편집, 수정 또는 중단할 수 있습니다. 일반적인 자동 흐름을 위해서는 turbocommit --auto-commit을 사용하십시오. Git의 경우 커밋을 생성하며, JJ의 경우 선택된 리비전의 설명을 설정합니다. -n 옵션 순서와 관계없이 항상 하나의 제안을 요청합니다.
turbocommit --auto-commit
...
옵션 (Options)
-n <number>: 제안(suggestion) 개수, 대화형 모드에서는 기본값 1
-m, --model <model>: 모델 (gpt-6-luna (기본값), gpt-6-sol, 또는 gpt-6-astra)
-e, --reasoning-effort <level>: 추론 노력도 (none, low (기본값), medium, high, xhigh, max); Astra는 none을 지원하지 않습니다.
-v, --verbosity <level>: 상세 수준 (low, medium, high)
-d, --debug: 요청 및 사용 세부 정보 출력
--debug-file <path>: 자세한 디버그 로그를 파일에 작성하거나, 표준 출력(stdout)의 경우 -를 사용합니다.
-a, --auto-commit: 대화형 검토 없이 생성된 Git 커밋 또는 JJ 설명을 작성합니다.
--amend: diff로부터 마지막 Git 커밋 메시지를 재생성합니다.
--api-key <key>: API 키를 직접 제공합니다.
--api-endpoint <url>: API 엔드포인트를 재정의합니다.
-c, --config <path>: 기본값이 아닌 설정 파일을 로드합니다.
-r, --revision <rev>: 설명할 JJ 리비전(revision)을 선택합니다.
--rw: JJ 재작성 모드를 토글하며, 현재 설명을 컨텍스트로 모델에 전달합니다.
추론 (Reasoning)
추론 노력도(reasoning effort)는 빠른 커밋 생성을 위해 기본값 low로 설정됩니다. 모호하거나 광범위한 diff의 경우 더 높은 수준을 사용하십시오.
turbocommit --auto-commit
turbocommit --reasoning-effort high -m gpt-6-sol
turbocommit --reasoning-effort none -m gpt-6-luna
상세 수준 (Verbosity)
turbocommit --verbosity low
turbocommit --verbosity medium
turbocommit --verbosity high
디버깅 (Debugging)
turbocommit -d
turbocommit --debug-file debug.log
turbocommit --debug-file -
디버그 로그에는 요청 매개변수(request parameters), API 응답 또는 오류, 토큰 수(token counts), 경과 시간(elapsed time)이 포함됩니다.
가격 책정 (Pricing)
표준 GPT-6 Luna API 가격 (1백만 문자 토큰당):
- 입력(Input): $0.10
- 캐시된 입력(Cached input): $0.01
- 출력(Output): $0.50
지원되는 세 가지 모델 모두 1.05M 토큰 컨텍스트 창을 가집니다. OpenAI는 272K 입력 토큰을 초과하는 프롬프트에 대해 더 높은 요금을 부과합니다. [모델 페이지]를 참조하세요. 이 CLI는 v1/chat/completions을 사용하며, 이는 이러한 모델과 현재의 구조화된 JSON 응답 형식을 지원합니다. [OpenAI는 새로운 텍스트 생성 애플리케이션에 응답(Responses)을 권장합니다]. 이 CLI는 작동하는 Chat Completions 통합 및 구성 가능한 호환 엔드포인트를 유지합니다.
설정 (Configuration)
turboCommit은 첫 실행 시 ~/.turbocommit.yaml 파일을 생성합니다.
예시:
model: "gpt-6-luna"
default_number_of_choices: 1
reasoning_effort: "low"
...
현재 내장 프롬프트를 사용하려면 system_msg를 생략하세요. 사용자 정의된 비어있지 않은 system_msg는 이를 덮어씁니다. 새로 생성된 설정 파일은 기본 프롬프트를 생략하므로, 향후 프롬프트 개선 사항이 자동으로 적용됩니다. 버전 3.x로 생성된 기존 설정 파일은 메모리상에서 GPT-5.4 기본값에서 Luna, 하나의 제안(one suggestion), 그리고 새로운 프롬프트로 업그레이드됩니다. 사용자 정의 프롬프트와 기본값이 아닌 제안 횟수는 유지됩니다. 이 마이그레이션은 설정 파일을 다시 작성하지 않습니다. 파일 자체가 새로운 설정을 반영하기를 원한다면 저장된 모델을 편집하거나 이전 기본 프롬프트를 제거하세요.
여러 설정 파일 (Multiple Config Files)
turbocommit -c ./local-config.yaml
turbocommit -c ~/.turbocommit-azure.yaml
turbocommit
수정 흐름 (Amend Flow)
스테이징된 변경 사항 없이 마지막 커밋 메시지를 개선하고 싶을 때 --amend를 사용하세요.
git status
turbocommit --amend
turbocommit --amend --auto-commit
제약 조건:
--amend 사용 시 스테이징된 변경 사항 없음
- 도구는 이전 커밋의 diff만 분석함
Git Hooks
권장 워크플로우:
- 평소처럼 스테이징하고 커밋하세요.
- 모든 후크(hook) 실패를 수정하세요.
- 필요한 경우 수정을 다시 스테이징하세요.
- 검사가 통과한 후 더 나은 메시지를 원하면
turbocommit --amend를 사용하세요.
JJ는 Git 스테이징(staging)을 사용하지 않습니다. @를 설명하려면 JJ 워크스페이스에서 turbocommit --auto-commit을 실행하거나, 다른 변경 사항을 설명하려면 --revision을 전달하세요. 이 명령어는 설명을 업데이트할 뿐, 새로운 JJ 변경 사항을 생성하지 않습니다.
Dev Container 테스트 환경
실제 저장소에 영향을 주지 않고 Git과 JJ 통합을 검증하기 위해 일회용(disposable) Dev Container가 포함되어 있습니다.
devcontainer up --workspace-folder .
devcontainer exec --workspace-folder . bash
기여 (Contributing)
이슈(Issues)와 풀 리퀘스트(pull requests)를 환영합니다.
라이선스 (License)
MIT 라이선스로 배포됩니다. LICENSE를 참조하세요.