re_gent : AI 코딩 에이전트 활동을 추적하는 버전 관리 시스템
목차
개요
re_gent는 AI 코딩 에이전트의 활동을 추적하는 버전 관리 시스템이다. Git이 개발자의 코드 변경을 관리하듯, re_gent는 Claude Code, OpenAI Codex, OpenCode 같은 AI 에이전트의 모든 작업을 감시하고 기록한다. 이 도구가 해결하려는 핵심 문제는 명확하다. AI 에이전트에게 코드베이스 접근 권한을 주었지만, 정작 에이전트가 무엇을 했는지 추적할 방법이 없었다는 것이다.
re_gent는 에이전트가 변경한 파일과 라인뿐 아니라, 그 변경을 유발한 프롬프트와 대화 기록까지 함께 보존한다. 덕분에 코드의 각 라인이 어떤 맥락에서 생성됐는지 사후에 추적할 수 있다. 프로젝트는 Apache License 2.0으로 공개되어 있으며, 747개의 스타와 52개의 포크, 5개의 릴리스를 기록하고 있다.
기본 명령어
re_gent는 Git의 사용 경험과 유사하게 설계되어, 익숙한 명령어 패턴으로 에이전트 활동을 조회할 수 있다.
세 가지 핵심 명령어
다음 세 가지 명령어가 re_gent의 기본 조작을 구성한다.
| 명령어 | 설명 |
|---|---|
| rgt log | 에이전트의 활동 이력을 조회한다 |
| rgt blame | 각 코드 라인이 어느 프롬프트에서 생성됐는지 추적한다 |
| rgt show | 특정 단계의 전체 컨텍스트와 대화 내용을 확인한다 |
rgt blame은 Git의 blame과 개념이 유사하지만, 라인의 작성자를 사람이 아니라 프롬프트 기준으로 추적한다는 점이 다르다. rgt show는 단일 단계에 담긴 모든 맥락을 펼쳐 보여준다.
세션 관리
re_gent는 여러 AI 에이전트가 동시에 작업하는 상황을 전제로 설계됐다. 각 세션은 독립적으로 추적되며, 서로의 작업 이력이 뒤섞이지 않는다. 활성 세션 목록은 rgt sessions 명령어로 확인할 수 있다.
특히 Claude Code의 “/compact”나 “/clear” 명령으로 대화 컨텍스트가 압축되거나 초기화된 이후에도, re_gent는 이전 대화 기록을 그대로 유지한다. 에이전트 내부의 컨텍스트가 사라져도 추적 데이터는 보존되는 구조다.
상세 추적
re_gent는 작업을 Step(단계) 단위로 기록하며, 각 Step에 다음 정보를 함께 담는다.
| 추적 항목 | 내용 |
|---|---|
| 파일 변경 | 변경된 파일과 라인 수 |
| 사용 도구 | Edit, Write, Bash 등 호출된 도구 |
| 실행 메타데이터 | 실행 시각과 세션 ID |
| 대화 이력 | 해당 단계의 완전한 대화 내용 |
이 정보들이 모여 어떤 프롬프트가 어떤 코드 변경으로 이어졌는지를 끝까지 재구성할 수 있게 한다.
아키텍처와 기술 스택
re_gent는 Git처럼 프로젝트 루트에 전용 디렉토리를 두고 모든 추적 데이터를 관리한다.
저장소 구조
추적 데이터는 .regent/ 디렉토리에 저장되며, 내부 구성은 다음과 같다.
| 경로 | 역할 |
|---|---|
| objects/ | BLAKE3 해싱을 통한 내용 주소 지정 blob 저장 |
| refs/ | 세션별 포인터 |
| index.db | SQLite 쿼리 인덱스 |
| config.toml | 설정 파일 |
각 Step은 DAG(방향성 비순환 그래프) 형태로 연결된다. 하나의 Step 노드는 부모 단계의 해시, 작업 공간 스냅샷, 도구 호출과 그 결과, 세션 ID와 타임스탬프를 포함한다. 부모 해시를 통해 단계 간 인과 관계가 그래프로 이어지며, 세션별로 독립된 DAG가 형성된다.
기술 스택
re_gent는 Go 기반으로 구현됐으며, 코드베이스의 98.6%가 Go로 작성되어 있다.
| 구성 요소 | 사용 기술 |
|---|---|
| CLI 프레임워크 | Cobra |
| 해싱 | BLAKE3, 내용 기반 중복 제거 |
| Diff 알고리즘 | Myers diff, go-diff |
| 데이터베이스 | Pure Go SQLite, modernc.org/sqlite |
| 언어 | Go 98.6%, Shell, Makefile |
Pure Go SQLite를 사용하기 때문에 별도의 CGO 의존성 없이 단일 바이너리로 동작한다. BLAKE3 해싱은 동일한 내용의 blob을 자동으로 중복 제거하는 기반이 된다.
설치와 워크플로우
re_gent는 두 가지 방식으로 설치할 수 있으며, 사용 흐름은 Git과 매우 유사하다.
설치
Homebrew를 사용하는 경우 tap을 추가한 뒤 설치한다.
1
2
brew tap regent-vcs/tap
brew install regent
Go 환경이 있다면 go install로 바로 설치할 수 있다.
1
go install github.com/regent-vcs/regent/cmd/rgt@latest
기본 워크플로우
프로젝트 초기화부터 추적 조회까지의 흐름은 다음과 같다.
1
2
3
4
5
rgt init # 프로젝트 초기화 (git init처럼)
# AI 에이전트가 평상시처럼 작업하면 자동으로 추적된다
rgt log # 변경사항 확인
rgt blame src/handler.go:42 # 특정 라인의 출처 확인
rgt show a1b2c3d # 상세 정보 조회
rgt init으로 프로젝트를 초기화하면, 이후 AI 에이전트는 평소처럼 작업하면 된다. re_gent는 자동 훅 설정을 통해 별도 조작 없이 에이전트의 작업을 추적한다. 변경사항은 rgt log로 확인하고, 특정 라인의 출처는 rgt blame으로, 단계별 상세 정보는 rgt show로 들여다본다.
Git과의 비교
re_gent는 Git을 대체하는 도구가 아니다. Git이 코드 자체의 변경 이력을 관리한다면, re_gent는 그 변경을 누가 왜 만들었는지에 대한 맥락을 함께 관리한다. 두 도구는 함께 사용하도록 설계됐다.
| 항목 | Git | re_gent |
|---|---|---|
| 코드 추적 | 지원 | 지원 |
| 에이전트 활동 추적 | 미지원 | 지원 |
| 프롬프트 정보 | 미지원 | 지원 |
| 대화 기록 | 미지원 | 지원 |
| 동시 세션 관리 | 미지원 | 지원 |
Git이 다루지 못하는 영역, 즉 어떤 프롬프트가 어떤 코드로 이어졌고 그 과정에서 어떤 대화가 오갔는지를 re_gent가 보완한다.
지원 도구와 VSCode 확장
re_gent는 주요 AI 코딩 에이전트를 지원하며, 일부 도구는 지원이 계획 단계에 있다.
| 도구 | 지원 상태 |
|---|---|
| Claude Code | 완전 지원 |
| OpenAI Codex CLI | 완전 지원 |
| OpenCode | 완전 지원 |
| Cursor | 계획 중 |
| Cline | 계획 중 |
| Continue | 계획 중 |
VSCode 확장도 제공되어, 추적 데이터를 에디터 안에서 바로 활용할 수 있다. 확장은 다음 기능을 제공한다.
| 기능 | 설명 |
|---|---|
| 인라인 blame 어노테이션 | 코드 라인 옆에 출처 정보를 표시 |
| 호버 컨텍스트 | 마우스를 올리면 전체 컨텍스트를 표시 |
| 세션 타임라인 사이드바 | 세션별 작업 흐름을 시간순으로 표시 |
| 대화 이력 접근 | 원클릭으로 대화 기록을 조회 |
주요 특징
re_gent의 설계상 강점은 성능과 동시성, 그리고 무설정 운영에 있다.
| 특징 | 설명 |
|---|---|
| 내용 주소 지정 저장소 | 동일 내용 blob을 자동 중복 제거 |
| SQLite 인덱스 | 10ms 이하의 빠른 조회 |
| 세션별 DAG | 세션마다 독립된 작업 그래프 |
| 동시성 안전성 | CAS refs와 ACID 트랜잭션 기반 |
| 자동 훅 설정 | 별도 설정 없이 동작하는 zero configuration |
내용 주소 지정 저장소는 BLAKE3 해시를 키로 사용하여 같은 데이터를 두 번 저장하지 않는다. SQLite 인덱스 덕분에 이력 조회는 10ms 미만으로 응답한다. CAS(Compare-And-Swap) 기반 refs와 ACID 트랜잭션은 여러 세션이 동시에 기록할 때도 데이터 일관성을 보장한다.
결론
re_gent는 AI 코딩 에이전트 시대에 새롭게 떠오른 추적 가능성 문제를 정면으로 다루는 도구다. 에이전트가 코드를 자율적으로 수정하는 상황에서, 무엇이 어떤 프롬프트로 인해 바뀌었는지를 사후에 재구성할 수 있게 한다. Go 단일 바이너리로 가볍게 동작하며, BLAKE3 내용 주소 지정과 SQLite 인덱스로 성능을 확보하고, 세션별 DAG로 동시 작업을 안전하게 추적한다. Git을 대체하지 않고 보완하는 위치에 서 있다는 점에서, 기존 워크플로우에 부담 없이 더할 수 있는 도구다. 프로젝트는 Apache License 2.0으로 공개되어 있으며, Discord와 GitHub Discussions를 통해 커뮤니티가 운영되고 있다.