AI가 코드를 작성한다면 세션도 커밋의 일부가 되어야 할까?

2 hours ago 1

  • git-memento는 AI가 생성한 코드 세션을 Git 커밋에 자동으로 기록하는 확장 도구로, 각 커밋에 대응하는 AI 대화 내역을 git notes로 저장함
  • 커밋 시 AI 세션 ID를 지정하면, 요약본은 refs/notes/commits, 전체 대화는 refs/notes/memento-full-audit 에 분리 저장되어 추적성과 프라이버시를 동시에 확보함
  • CodexClaude 등 다양한 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일)

Read Entire Article