DEV 소개: prx - 로컬 우선 PR 리뷰: AI가 정보를 제공하고, 인간이 결정한다
요약
PRX는 로컬에서 실행되는 도구로, 개발자가 풀 리퀘스트(PR) 리뷰 시 겪는 맥락 상실 문제를 해결합니다. 이 도구는 백그라운드 데몬이 PR을 주기적으로 확인하고, AI를 활용하여 요약, 발견 사항, 판정 등을 제공함으로써 인간의 의사결정을 지원하는 것을 목표로 합니다.
핵심 포인트
- PRX는 로컬에서 실행되어 보안 우려를 줄입니다.
- AI가 정보를 제공하고(informs), 최종 결정은 사람이 내립니다(human decides).
- PR에 대한 요약, 발견 사항(blocking/nit), 판정 등을 미리 제공받을 수 있습니다.
풀 리퀘스트(Pull request) 리뷰는 쌓여갑니다. 저에게 가장 느린 부분은 읽기가 아니었습니다. 그것은 전환의 순간이었습니다. 즉, 아무 맥락 없이 PR을 열고, 이것이 무엇을 위한 것인지 파악하고, 그 안에서 중요한 몇 가지를 찾아내는 과정이었습니다. 제가 충분한 맥락을 얻었을 때쯤이면, 이전에 하던 작업의 흐름을 잃어버린 상태였습니다.
저는 여기에 도착하기 전에 첫 번째 검토가 완료되기를 바랐습니다. AI에게 제 리포지토리의 키를 넘겨주어 그것을 처리하게 하고 싶지는 않았습니다.
그래서 저는 prx를 만들었습니다. 이 도구의 태그라인은 "AI informs, human decides"(AI가 정보를 제공하고, 인간이 결정한다)이며, 이번 글에서는 이것이 코드에서 무엇을 의미하는지에 대해 다루겠습니다.
작동 방식
prx는 사용자의 기기에서 실행됩니다. 백그라운드 데몬(daemon)이 사용자가 선택한 GitHub 리포지토리를 주기적으로 확인합니다. 열려 있는 각 풀 리퀘스트에 대해 이미 설치되어 있는 코딩 에이전트 CLI(claude, codex 또는 pi)를 실행하거나, LLM API를 호출하여 리뷰 결과를 받습니다.
제가 검토 작업을 할 때, 각 PR에는 이미 다음 내용이 포함되어 있습니다:
- 요약(a brief): PR이 변경하는 내용과 주목해야 할 점에 대한 몇 문장의 간단한 설명,
- 발견 사항(findings), 각각
blocking또는nit으로 표시됨, - 한 줄짜리 판정(verdict).
macOS에서는 메뉴 바에 위치합니다. 어디서든, 터미널에서 prx status와 prx brief를 실행하면 동일한 정보를 볼 수 있습니다.
게시할 수 있는 리뷰어의 문제점
GitHub에 게시할 수 있는 에이전트는 풀 리퀘스트를 승인하거나, 병합(merge)하거나, diff 안에 숨겨진 지침을 따르는 것도 가능합니다. 저는 에이전트가 올바르게 작동하는 것에 의존하고 싶지 않았습니다.
이것이 제공하지 않는 것
저는 한계에 대해 정확하게 말하고 싶습니다.
에이전트의 읽기 전용(read-only) 규칙은 프롬프트 내의 지침입니다. 에이전트 CLI는 사용자가 시작할 때 가진 도구와 권한으로 실행되며, 내장된 claude 엔진은 --dangerously-skip-permissions 옵션으로 실행되어 백그라운드 검토가 멈춰서 질문하는 일이 없습니다. prx는 에이전트를 격리(sandbox)하지 않습니다. 만약 도구가 전혀 없는 엔진을 원한다면, LLM API 엔진을 사용하세요. 이 엔진은 프롬프트와 diff를 받고 텍스트만 반환할 수 있습니다.
자동화된 검토 결과는 사용자의 GitHub 계정에서 게시되며, 자동화되었다는 푸터가 포함되고 요청 변경(request-changes) 검토일 수 있습니다. 만약 아무것도 게시하지 않고도 검토 결과를 보고 싶다면, monitor 모드가 있으며, prx review --dry-run은 게시될 내용을 출력합니다.
'로컬 우선(Local-first)'이라는 것은 prx를 설명하는 말입니다. 데몬(daemon), 그 상태 및 기록은 사용자의 디스크에 저장되며, 중간에 저의 서버는 없고 텔레메트리도 없습니다. GitHub는 이미 로그인된 gh 세션을 통해 연결되므로, prx는 GitHub 토큰을 저장하지 않습니다. diff는 여전히 에이전트나 API가 사용하는 모델 제공업체로 전송됩니다. Ollama와 같은 로컬 OpenAI 호환 서버 역시 사용자의 기기에 보관합니다.
작동 환경
하나의 Rust 바이너리가 CLI, 데몬, PR별 상태 머신(state machine), 그리고 localhost API를 포함하고 있습니다. macOS 메뉴 바 앱은 이 API의 별도의 경량 클라이언트입니다. 이는 macOS와 Linux에서 실행됩니다. Windows 빌드는 없으며, GitHub가 유일한 전송지(forge)입니다.
사용자가 에이전트나 API 키를 가져와야 합니다. prx는 모델을 포함하고 있지 않으므로, 검토 비용은 사용자가 청구하는 비용과 같습니다.
이는 v0.1.0 버전이며 제가 혼자 만들었습니다. Mac 앱은 아직 공증(notarized)되지 않았기 때문에 다운로드한 사본이 열리기 전에 한 가지 명령이 필요합니다. README에 설명되어 있습니다. Linux 바이너리는 glibc 2.39 이상을 필요로 합니다.
직접 사용해 보세요 - https://github.com/vs4vijay/prx
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
