-
git-memento는 AI가 생성한 코드 세션을 Git 커밋에 자동으로 기록하는 확장 도구로, 각 커밋에 대응하는 AI 대화 내역을 git notes로 저장함
- 커밋 시 AI 세션 ID를 지정하면, 요약본은 refs/notes/commits, 전체 대화는 refs/notes/memento-full-audit 에 분리 저장되어 추적성과 프라이버시를 동시에 확보함
-
Codex와 Claude 등 다양한 AI 제공자를 지원하며, 요약 생성 시 사용자 정의 스킬을 적용해 커밋 노트의 품질을 제어할 수 있음
- GitHub Actions와 통합되어, 커밋 노트 자동 코멘트, CI 게이트 검증, 병합 시 노트 자동 이관(merge-carry) 기능을 제공함
- AI 코드 생성의 투명성을 높이고, 협업 환경에서 AI 기여 내역의 감사(audit) 가능성을 확보하는 도구로 주목됨
git-memento 개요
-
git-memento는 AI 코딩 세션을 커밋 단위로 기록하는 Git 확장 도구
- 커밋 시 AI 세션의 대화 내용을 정리해 마크다운 노트로 저장
- 각 커밋에 AI 세션의 출처와 대화 맥락을 남겨 코드 생성 과정을 추적 가능
- 기본적으로 Codex를 지원하며, Claude 등 다른 AI 모델도 설정 가능
- MIT 라이선스로 공개되어 있으며, NativeAOT 기반 단일 실행 파일로 배포
주요 명령어 및 기능
-
git memento init으로 저장소별 설정을 초기화하고, AI 제공자 정보를 .git/config에 저장
-
git memento commit <session-id> 명령으로 커밋과 동시에 세션 노트를 추가
-
--summary-skill 옵션을 사용하면 요약본과 전체 세션을 분리 저장
- 요약본은 refs/notes/commits, 전체 로그는 refs/notes/memento-full-audit에 기록
-
git memento amend는 기존 커밋에 새로운 세션을 추가하거나 수정 가능
-
git memento audit은 커밋 범위 내 노트 누락 여부와 메타데이터 유효성을 검사
-
git memento doctor는 설정, 노트 참조, 원격 동기화 상태를 점검
노트 관리 및 동기화
-
git memento share-notes로 원격 저장소(origin 등)에 노트를 푸시
-
git memento notes-sync는 원격 노트를 안전하게 병합하고 백업 생성
-
refs/notes/commits와 refs/notes/memento-full-audit 모두 동기화
-
git memento notes-carry는 리베이스나 스쿼시 후 새 커밋으로 노트를 이관
-
git memento notes-rewrite-setup은 자동 노트 이관 설정을 활성화
GitHub Actions 통합
- 저장소에는 재사용 가능한 GitHub Action이 포함되어 있음
-
mode: comment — 커밋 노트를 읽어 자동 코멘트 작성
-
mode: gate — CI 단계에서 노트 누락 여부 검사, 실패 시 빌드 차단
-
mode: merge-carry — PR 병합 시 노트를 병합 커밋으로 이관
- 각 모드는 action.yml로 정의되어 있으며, 마켓플레이스 등록용 아티팩트(dist/note-comment-renderer.js) 포함
-
ignore-notes 라벨이 붙은 PR은 게이트 검사를 건너뛰고 “Notes ignored” 코멘트를 남김
보안 및 요약 처리
- 세션 대화는 신뢰되지 않은 데이터로 취급, 프롬프트 인젝션 방지를 위한 보안 강화 로직 적용
- 요약 생성 시 메시지 크기 제한, 총 프롬프트 용량 제한, SHA256 무결성 검증 수행
- 사용자 정의 스킬이 기본 스킬과 충돌할 경우 사용자 스킬이 우선 적용
- 감사(audit) 메타데이터에는 원본 세션 로그의 SHA256 해시가 포함되어 무결성 보장
빌드 및 설치
-
.NET SDK 10과 NativeAOT 툴체인을 필요로 하며, macOS·Linux·Windows용 빌드 명령 제공
-
curl을 이용해 최신 릴리스를 자동 설치 가능
- Git 명령어로 인식되도록 실행 파일을 git-memento 이름으로 PATH에 배치
테스트 및 배포 자동화
- CI는 Linux, macOS, Windows 환경에서 설치 및 실행 테스트 수행
-
dotnet test와 npm run test:js로 단위 및 통합 테스트 실행
- 릴리스는 태그 기반으로 자동 생성되며, install.sh는 항상 최신 릴리스를 다운로드
- GitHub Marketplace에 등록 시 v1 태그를 최신 버전으로 유지
노트 포맷 및 버전 관리
- 노트는 git notes add -f -m "<markdown>" <commit-hash> 형식으로 저장
- 다중 세션 지원을 위해 버전 태그(<!-- git-memento-sessions:v1 -->)와 구간 구분자 사용
- 사용자 메시지는 Git 사용자명, AI 응답은 제공자명으로 라벨링
- 기존 단일 세션 노트는 필요 시 자동 업그레이드되어 호환성 유지
기술 구성 및 저장소 정보
- 주요 언어 구성: F# 82.8%, TypeScript 6.4%, JavaScript 4.7%, PowerShell 3.8%, Shell 2.3%
- 커밋 수 32개, 태그 24개, 스타 266개, 포크 8개
- 주요 기여자: mandel-macaque, yarikoptic, claude
- 최신 릴리스: 1.2.0-c7a40900 (2026년 3월 2일)