open-code-review
무엇인가
Open Code Review는 코드 리뷰 자동화 계층에 속하는 CLI 도구다. 규칙 기반 린터가 잡지 못하는 의미적 결함을 사람 리뷰어 대신 지적하는 자리를 차지한다. Go로 작성됐고, 알리바바 그룹 내부의 AI 코드 리뷰 어시스턴트로 출발해 2년간 사내 수만 명의 개발자에게 쓰인 뒤 오픈소스로 공개됐다.
어떻게 동작하나
처리 흐름은 결정적 파이프라인과 에이전트로 나뉜다. 파이프라인이 Git diff에서 리뷰 대상 파일을 선별하고, 관련 파일을 하나의 리뷰 단위로 묶는다. 예를 들어 message_en.properties와 message_zh.properties는 같은 번들로 처리된다. 각 번들은 격리된 컨텍스트를 가진 서브에이전트로 실행되며 동시 리뷰가 가능하다. 파일 특성에 맞는 규칙을 템플릿 엔진으로 매칭한 뒤, 에이전트가 전체 파일 내용과 코드베이스 검색 결과, 다른 변경 파일을 참조해 리뷰한다. 별도의 위치 모듈과 반영(reflection) 모듈이 코멘트의 줄 위치와 내용을 다시 검증한다. `ocr scan`은 diff가 없는 파일이나 디렉터리 전체를 같은 방식으로 훑는다.
무엇과 다른가
비교 대상은 Skills를 붙인 Claude Code 같은 범용 에이전트다. 범용 에이전트는 리뷰 절차를 자연어 프롬프트로만 규정하므로 큰 변경셋에서 파일을 골라 건너뛰고, 지적 위치가 실제 코드와 어긋나며, 프롬프트가 조금만 바뀌어도 품질이 흔들린다. Open Code Review는 파일 선택, 파일 번들링, 규칙 매칭을 언어 모델이 아닌 엔지니어링 로직이 담당하게 해 이 지점을 고정한다. AACR-Bench(공개 저장소 50개, 실제 PR 200건, 10개 언어, 1,505개 정답 이슈)에서 같은 모델로 정밀도와 F1이 더 높고 토큰은 약 1/9만 쓰는 대신 재현율은 낮다. 재현율 손실은 노이즈를 줄이기 위한 의도된 트레이드오프다.
어떻게 쓰나
설치하면 `ocr` 명령이 전역으로 잡힌다. 리뷰 전에 LLM을 설정해야 하며, 대화형 UI가 제공자 선택, API 키 입력, 모델 지정, 연결 테스트를 순서대로 안내한다. 환경 변수와 커스텀 제공자 설정도 CLI에서 할 수 있다. 엔드포인트는 OpenAI와 Anthropic 호환이면 된다. MCP 서버로 리뷰 에이전트에 외부 도구를 붙일 수 있고, Claude Code, Codex, Cursor, Kimi Code, OpenCode에는 리뷰 슬래시 커맨드나 스킬을 담은 플러그인을 설치해 연동한다.
전제와 한계
Git 2.41 이상이 필요하다. diff 생성, 코드 검색, 저장소 조작을 Git에 의존하기 때문이다. LLM 엔드포인트 설정은 필수이며 Delegation Mode를 쓸 때만 예외다. 내장 규칙셋은 NPE, 스레드 안전성, XSS, SQL 인젝션 같은 결함 유형을 다국어로 다룬다. 전체 문서는 open-codereview.ai/docs에 있다.
유사 도구
- pr-agentPR 코멘트나 CLI 명령으로 AI 코드 리뷰를 실행하는 Python 도구다. GitHub·GitLab·Bitbucket·Azure DevOps에 붙는다.
- git-lrcgit commit 훅에 걸려 커밋되는 모든 diff를 AI로 검토하고, 10개 위험 범주와 100여 개 실패 패턴으로 문제를 지적하는 Go 바이너리다.
- kodus-aiLLM 제공자를 직접 골라 PR 코드 리뷰를 돌리는 TypeScript 모노레포다. GitHub·GitLab·Bitbucket·Azure Repos에 붙고 CLI와 CI/CD에서도 실행된다.
- plannotator에이전트가 낸 계획·마크다운·HTML·코드 diff를 브라우저 검토 화면으로 띄워 위치별 주석을 받고, 그 피드백을 다시 에이전트의 다음 입력으로 되돌리는 Claude Code 스킬 팩이다.
- aislopAI 코딩 에이전트가 남긴 죽은 코드·불안전 캐스트·삼켜진 예외를 결정적 규칙으로 탐지하고 0~100점으로 채점하는 TypeScript CLI다.
- gptme터미널에서 실행되는 개인 AI 에이전트 CLI다. 셸·Python·브라우저·비전 도구를 갖추고 여러 LLM 제공자와 로컬 llama.cpp를 지원한다.