Git 도구

Git 도구 (Git Tool)

에이전트가 작업 저장소에 구조화된 읽기 전용 접근을 하는 방법을 설명해요. 상태, 기록, 브랜치, 특정 커밋의 변경, 라인 단위 작성자까지 볼 수 있어요.

출처: 문서

본문

git 도구셋은 에이전트에게 작업 저장소에 대한 구조화된 읽기 전용 접근을 제공해요 — 상태, 기록, 브랜치, 커밋의 변경, 라인 단위 작성자까지요. go-git으로 구현되어 있어서 git 바이너리가 필요 없어요.

shell 도구를 통해 git을 실행하는 것과 비교하면, git 도구셋은 모델이 안정적으로 읽을 수 있는 깨끗하고 구조화된 출력을 반환하고, 설계상 안전하며(어떤 명령도 저장소를 수정할 수 없어요), shell이 비활성화되었거나 git 바이너리가 설치되지 않았어도 동작해요.

참고 git 도구셋은 읽기 전용이에요. 스테이징, 커밋, 체크아웃은 shell 도구를 사용하세요.

구성

toolsets:
  - type: git

구성 옵션은 없어요. 저장소는 에이전트의 작업 디렉터리에서 열리고, 하위 디렉터리여도 저장소 루트로 해석돼요.

경고 저장소는 부모 디렉터리를 올라가며 발견돼요. 작업 디렉터리 자체가 저장소가 아니지만 상위에 저장소가 있다면(예: 홈 디렉터리를 dotfiles로 추적), 그 상위로 해석되고 git_show/git_blame이 그 전체 기록과 파일 내용을 노출할 수 있어요. filesystem 도구셋의 allow/deny 목록은 여기에 적용되지 않아요. 주변 저장소를 읽어도 안전한 곳에서만 이 도구셋을 활성화하세요.

참고 성능. go-git은 순수 Go라서 큰 저장소에서는 속도가 느려요: git_status는 전체 작업트리를 다시 해시하고, git_blame은 기록 깊이 × 파일 크기에 비례해 확장돼요. 400줄 출력 상한은 전체 계산 후에 적용되므로 큰 파일을 블레이밍하는 비용을 줄이진 못해요.

도구

도구 설명
git_status 현재 브랜치와 변경된 파일(스테이징/비스테이징/추적 안 됨)
git_log 최근 커밋(해시, 날짜, 작성자, 제목)
git_branches 로컬 브랜치, 현재 브랜치는 *로 표시
git_show 커밋의 메타데이터, 메시지, +/- 수의 변경 파일
git_blame 파일의 라인별 작성자

git_log

파라미터 필수 설명
limit 아니오 반환할 최대 커밋 수(기본 20)
path 아니오 이 경로를 건드린 커밋만 표시

git_show

파라미터 필수 설명
ref 아니오 표시할 커밋 해시 또는 리비전(기본 HEAD)

git_blame

파라미터 필수 설명
path 네 저장소 루트 기준으로 blame할 파일 경로
rev 아니오 blame할 커밋 또는 리비전(기본 HEAD)

예시

agents:
  root:
    model: openai/gpt-5-mini
    description: A code review assistant
    instruction: |
      Review the working changes: check git_status, then git_show the latest
      commit, and summarize what changed.
    toolsets:
      - type: git
      - type: filesystem

git_status 출력 예시:

On branch master
1 changed file(s) [XY = staged/worktree; M=modified A=added D=deleted R=renamed ?=untracked]:
   M main.go

팁 언제 쓸까 에이전트가 저장소 컨텍스트가 필요할 때마다 git 도구셋을 사용하세요 — 편집 전, 최근 기록 검토, 마지막으로 그 라인을 건드린 사람 찾기 등에요. 쓰기 가능한 shell 표면을 노출하지 않고도 할 수 있어요.

더 알아보기 (Learn more)