AI
커뮤니티 해설난이도 보통파이토치 한국 사용자 모임 · 10월 31일(토) 공개

OpenQodex: push 전 코드 변경을 별도 리뷰어로 검토하는 도구

스캐너와 별도 AI 리뷰어, 근거 대조를 묶은 도구를 소개한 새 해설로, 자체 버그 실험과 실제 PR 평가의 큰 차이도 함께 살펴봅니다.

쉽게 말하면비유하자면 글을 보내기 전에 맞춤법 검사기를 먼저 돌리고, 글쓴이가 아닌 다른 사람에게 읽힌 뒤, 그 사람이 짚은 문장이 원고에 정말 있는지 대조하는 절차다. 다만 다른 사람이 읽어도 오류를 다 잡는다는 보장은 없다.

왜 봐야 하나
AI로 코드를 쓰는 사람에게 코드를 올리기(push) 전 검토를 도울 수단을 보여 준다. 개발팀 자체 시험의 버그 발견율 최고 98.0%와 실제 코드 변경 36건에서 정답 위치를 짚은 비율 10.7~27.7%는 서로 다른 평가다. 기본 설정은 경고만 하고, 코드는 외부 모델 서비스로 보내진다.

OpenQodex는 push 전 코드 변경을 스캐너와 별도 AI 리뷰어로 검토하고, 지적의 근거를 실제 코드와 대조하는 오픈소스 도구다. 이번 자료는 기존 프로젝트를 소개한 10월 31일 한국어 해설과 공식 문서다. 작은 합성 개발셋에서 보고한 최고 98.0%와 실제 PR 부분집합의 위치 재현율 10.7~27.7%는 서로 다른 평가다. 전자는 일반 저장소의 버그 발견률이 아니며, 후자는 지적이 의미상 맞는지까지 보장하지 않는다.

알아낸 것

  • 정적 스캐너가 후보를 찾고 별도 Claude Code·Codex 세션이 검토하며, 스크립트가 인용 코드와 변경 줄 전달 여부를 확인한다.
  • 자체 개발셋의 최고 버그 재현율은 51개 버그를 세 번 평가한 153기회 중 150기회이며, 일반 저장소의 발견률로 옮길 수 없다.
  • 실제 PR의 dev-laptop 36건에서 정답 이슈 위치 재현율은 Claude 빌드별 10.7~27.7%였고, 의미상 같은 문제인지 사람 판정하는 issue recall은 아직 미확정이다.
  • 기본 push 게이트는 경고만 하며 불완전 리뷰도 차단하지 않는다. 로컬 실행과 코드의 외부 모델 전송은 별개다.

한계와 주의할 점

  • 10월 31일은 새 포럼 해설의 날짜이며 프로젝트 최초 출시일은 확인되지 않았다. 포럼 0.15.0과 조회한 main 0.16.0의 버전을 구분해야 한다.
  • 실험은 개발팀 자체 측정이며 빌드·채점 규칙·부분집합이 다르다. 작은 합성 개발셋의 98.0%를 실제 PR 또는 현재 배포판의 성능으로 해석할 수 없다.
  • 정밀도 상·하한은 미판정 지적을 모두 정답 또는 오답으로 둔 범위이며 통계적 신뢰구간이 아니다.
  • 별도 리뷰어를 쓸 수 없을 때 코드 작성 에이전트가 스스로 검토하는 fallback이 있어 독립 검토가 항상 보장되지는 않는다.
  • 플랫폼 자체 실행과 모델 검토가 외부 서비스로 보내는 코드, 스캐너의 네트워크 조회를 구분해야 한다.

용어 풀이

스캐너
모델 없이 코드를 검사하는 프로그램. gitleaks는 비밀 정보, semgrep은 보안 문제를 찾는다. OpenQodex는 22종 내장 스캐너를 변경 파일에 맞게 실행하고 변경 줄에 걸린 결과만 후보로 남긴다.
찾기(finder) 세션
변경 부분과 그 코드를 호출하는 코드를 함께 읽고 문제 후보를 근거 줄과 함께 제안하는 별도 리뷰어 프로세스. 후보마다 근거가 되는 코드 줄을 인용해야 하며 스크립트가 인용과 실제 코드를 대조한다.
검증(verifier) 세션
찾기 세션이 낸 후보와 스캐너 결과를 하나씩 확인 또는 반박하는 별도 프로세스. 모든 스캐너 결과에 답했는지와 모든 변경 줄이 리뷰어에게 전달됐는지를 스크립트가 검사한다.
영수증(receipt)
리뷰가 끝나면 출력되는 판정, 지적마다 한 줄, report.html 경로를 담은 요약. 에이전트는 이 영수증을 사용자에게 보여주고 사용자가 지정한 지적만 고친다.
위치 재현율
정답 이슈 가운데 한 줄 이내에 지적이 붙은 비율. 의미상 같은 버그를 발견했는지가 아니라 위치만 맞았는지를 나타내므로 실제 리뷰 품질과 다를 수 있다.
AACR-Bench
Alibaba가 50개 오픈소스 프로젝트의 실제 PR 200개로 만든 외부 벤치마크. OpenQodex는 이 중 개발용 부분집합(dev-laptop)에서 위치 재현율을 측정했다.
코드 그래프
모델 없이 저장소의 함수, 클래스, 타입과 호출·import·상속 관계를 계산한 지도. 리뷰 개요에 바뀐 코드의 호출자를 넣어 리뷰어가 영향 범위를 보도록 돕는다.

더 깊이 읽기 읽는 데 약 7분

배경과 문제

같은 코딩 에이전트에게 자기 변경을 다시 리뷰하게 하면 작성 때의 맥락과 가정을 공유한다. 별도 세션에 검토를 맡기는 것은 다른 관점에서 점검할 기회를 주지만, 그것만으로 오류를 모두 찾는다는 보장은 없다. OpenQodex는 여기에 정적 분석과 코드 인용 대조를 붙여 리뷰가 무엇을 확인했는지 기록하려는 도구다.

OpenQodex는 이 검토를 push 직전, 개발자의 컴퓨터 안으로 옮기고 리뷰어를 코드를 쓴 에이전트와 분리한다. 리뷰 대상은 아직 push하지 않은 커밋과 커밋하지 않은 수정이다. 기본 설정에서는 코드를 쓴 에이전트가 리뷰를 맡지 않으며, 리뷰어는 사용자의 Claude Code 또는 Codex 로그인으로 실행되어 별도 계정이나 API 키가 필요 없다. 리뷰 요청은 Claude Code, Codex CLI, Cursor, Cline에서 모두 할 수 있지만 리뷰어 역할은 Claude Code와 Codex만 맡을 수 있다.

기존 접근의 한계

포럼은 Claude Code의 내장 /code-review와 비교해 OpenQodex의 별도 스캐너 단계와 코드 근거 검사를 강조한다. 22종 스캐너 중 파일 유형과 실행 환경에 맞는 것만 돌아가며 항상 모두 실행되는 것은 아니다. Claude Code 리뷰어는 사용자 설정과 지시 파일을 불러오지 않지만, 공식 agents 문서에 따르면 Codex 리뷰어는 전역 ~/.codex/AGENTS.md를 여전히 읽는다. 모든 리뷰어의 지시 환경이 완전히 비어 있다고 보면 부정확하다.

공식 벤치마크에는 같은 사례를 Claude Code의 /code-review medium으로 평가하는 대조군 모드가 있지만, 공개 결과표에는 아직 그 대조군 행이 없다. 따라서 별도 스캐너와 검증 구조가 있다는 사실은 확인할 수 있어도, 내장 리뷰보다 정확하다는 같은 사례의 비교 증거는 확보되지 않았다.

검토가 진행되는 순서

OpenQodex는 리뷰를 세 단계로 나눈다. 먼저 변경된 파일에 맞는 스캐너(gitleaks, semgrep처럼 모델 없이 코드를 검사하는 프로그램)를 실행하고 변경된 줄에 걸린 결과만 남긴다. 스캐너 결과는 테스트 픽스처와 사용자가 끈 규칙의 결과를 버리고, 의존성 검사는 예외적으로 저장소의 모든 lockfile을 리뷰할 때마다 osv.dev에 조회하되 변경 줄 밖의 취약점 권고는 보여주기만 하고 판정에 세지 않는다.

다음으로 세션 기억이 없는 별도의 Claude Code 또는 Codex 프로세스를 띄운다. 찾기(finder) 세션은 변경 부분과 그 코드를 호출하는 코드를 함께 읽고 문제 후보를 근거 줄과 함께 제안한다. 검증(verifier) 세션은 그 후보와 스캐너 결과를 하나씩 확인 또는 반박하며, 이 모든 과정을 스크립트가 검사한다. 리뷰어는 개발자의 작업 폴더가 아니라 ~/.openqodex/checkouts/ 아래 변경 사본을 읽고, Claude Code 리뷰어에게는 읽기·검색·목록 도구와 웹 검색·웹 페이지 열기 도구만 주어지며 셸과 파일 수정, MCP 서버, 서브에이전트는 주어지지 않는다.

마지막으로 OpenQodex는 판정과 지적 목록을 담은 영수증(receipt)을 출력하고 개발자가 어떤 지적을 고칠지 고른다. 보고서는 저장소의 .openqodex/reviews/ 폴더에 report.html, report.md, report.json, report.sarif로 저장되고 .openqodex/.gitignore가 이 보고서들을 git에서 제외한다. 모든 단계가 실행되지 않은 리뷰는 'Review incomplete'와 빠진 단계를 출력하고 종료 코드 2로 끝난다.

결과와 숫자의 의미

개발팀의 합성 개발셋에는 버그 51개와 버그 없는 변경 2개가 있고, 세 번 반복하면 버그 평가 기회 153회와 깨끗한 변경 평가 6회가 된다. Claude Code의 최고 결과는 150/153, 즉 98.0%다. 이 두 행은 10월 27일 main 빌드 76a4cd15와 1dd1f708이며 채점 규칙은 11과 12다. 84.3%는 10월 12일 빌드의 규칙 7 결과다. 포럼은 당시 0.15.0을 소개하지만 이번에 고정한 공식 main의 package 버전은 0.16.0이다. 이 결과들을 현재 배포판의 측정값이나 규칙까지 동일한 개선 비교로 읽을 수는 없다.

AACR-Bench 결과는 전체 200개 PR이 아니라 dev-laptop 36개 PR·정답 이슈 256개 부분집합이다. Claude의 한 번 평가 위치 재현율은 56/256=21.9%, 71/256=27.7%였고, 앞선 세 번 반복 행은 82/768=10.7%였다. 이는 정답 위치의 한 줄 이내에 지적이 붙었는지만 센다. 내용까지 같은 문제인지 사람이 판정하는 issue recall은 모델 리뷰어 행 모두 아직 미판정이다. 별도 라이브러리 경로에서 gpt-6.1-sol을 AACR 평가기로 채점한 의미 재현율 5.2%도 Claude CLI의 위치 지표와 구분해야 한다.

구체적인 예시

예시 보고서에는 지적의 심각도, 분류, 파일과 줄 위치가 함께 나온다. 검토가 끝나면 판정과 지적 목록을 담은 영수증을 보여주고 개발자가 수정 범위를 고르는 흐름이다. 이미 모든 수정을 요청한 경우에는 다시 묻지 않는다는 공식 문서 설명도 있다. 이 절차는 에이전트에게 주는 작업 지침이며, 지정하지 않은 수정을 기술적으로 불가능하게 만드는 잠금 장치는 아니다.

코드 그래프는 모델 없이 저장소의 함수, 클래스, 타입과 그 사이의 호출, import, 상속 관계를 계산한다. 지원 언어는 TypeScript, TSX, JavaScript, Python, Go, Ruby, Java이며, Django, Rails, Express, React, Next.js, FastAPI, Go net/http는 프레임워크 플러그인이 라우트와 핸들러 같은 관계를 따로 읽는다. 그래프의 각 호출 관계에는 그것을 증명한 근거와 확실도(certain, likely, possible)가 붙는다. OpenQodex는 리뷰 개요(brief)에 바뀐 코드의 호출자를 그래프에서 뽑아 넣는다.

한계와 오해하기 쉬운 점

수치는 개발팀이 공개한 측정이며 이번 검토에서 독립 재현하지 않았다. 정밀도 상·하한은 사람이 아직 판정하지 않은 지적을 모두 오답 또는 모두 정답으로 센 범위로, 통계적 신뢰구간과 다르다. 작은 합성 저장소에서는 그래프 없이도 리뷰어가 호출자를 검색할 수 있었다. 따라서 대규모 저장소에서 코드 그래프가 얼마나 도움이 되는지도 이 결과만으로는 알 수 없다.

로컬에서 실행해도 리뷰어는 읽은 코드를 Claude Code·Codex 로그인이 사용하는 외부 모델 서비스에 보낸다. --offline은 일부 스캐너의 네트워크와 다운로드를 끄지만 모델 호출은 남는다. 별도 리뷰어를 시작하지 못할 때의 review --agent는 작성 에이전트가 스스로 검토하는 fallback이다. 기본 push 게이트는 경고만 하고, 차단 설정을 켜도 불완전 리뷰와 게이트 자체 조회 실패는 통과한다. 검토 완료나 push 허용을 코드 안전성 보증으로 볼 수 없다.

실제로 어떻게 활용할까

사용 환경은 Node 22 이상과 git, macOS 또는 Linux이며 전체 리뷰에는 로그인된 Claude Code나 Codex가 필요하다. init은 작성할 파일 목록을 보여준 뒤 리뷰 스킬, push 훅, 권한 규칙, 코드 그래프 MCP 등록과 런처 등을 설치한다. 사용자 설정뿐 아니라 저장소의 지시 파일도 바꿀 수 있으므로 적용 범위를 확인해야 한다. 추가 계정이나 키가 필요 없다는 설명이 모델 사용량까지 무료라는 뜻은 아니다.

실제 적용에서는 자기 저장소의 대표 변경을 대상으로 발견한 문제, 잘못된 지적, 실행되지 않은 단계를 함께 보는 편이 유용하다. 에이전트 훅은 현재 작업의 리뷰 기록을, git pre-push 훅은 실제 보낼 변경의 기록을 확인한다. review.block_on_severity를 설정해야 미리뷰 변경과 해당 심각도 이상 지적을 차단하며, git 훅은 --no-verify로도 건너뛸 수 있다. 이런 범위를 이해한 뒤 팀의 기존 검토 절차에 보조 수단으로 넣는 것이 이 자료에서 도출되는 활용 관점이다.

원문에서 확인한 근거 5곳
  • 별도 Claude Code·Codex 프로세스가 후보를 검토하며 스크립트가 인용 코드와 변경 줄 전달을 확인한다.Then OpenQodex starts reviewers
  • 최고 합성 개발셋 결과는150/153(98.0%)이고10월27일의 rules11과12 두 main 빌드에 해당한다.Planted bugs
  • AACR의 Claude 위치 재현율은56/256(21.9%),71/256(27.7%),82/768(10.7%)이며 issue recall은아직미판정이다.AACR-Bench
  • AACR dev-laptop은36개PR 부분집합이다.dev-laptop
  • 이번에확보한main의CLI package버전은0.16.0이다."version": "0.16.0"

11월 1일(일) 정리 · AI가 쓰고 원문과 대조

다른 AI 글

전체 보기
물리 연구를 통째로 맡겨 보는 AI 시험 FrontierPhysics물리학자 42명이 자기 연구로 만든 과제 56개를 AI 에이전트에게 통째로 맡겼더니, 가장 잘한 AI도 168번 가운데 46…평가·벤치마크난이도 보통AI가 아는 것과 '안다'는 말의 차이를 잰 벤치마크 FinDendro날짜가 붙은 미국 금융 사실 2,226건으로 AI가 실제로 맞히는 것과 '안다'고 말하는 것을 견줬더니, 대부분의 모델에서…평가·벤치마크난이도 보통에이전트 메모에 근거 기록을 연결하는 기억 기법 WikiTraceAI 에이전트가 쌓아 둔 교훈마다 근거가 된 작업 기록을 연결해 되짚게 했더니, 메모 때문에 틀리는 일이 줄고 평균 점수가…연구 · 프리프린트난이도 보통세포 종류별로 DNA 변이 영향을 예측하는 알파게놈 2DNA 100만 글자와 '어떤 세포인지'를 함께 넣는 모델을 만들어, 변이가 세포 종류마다 유전자 활동을 어떻게 바꾸는지 이…공식 연구 발표난이도 어려움시그널 암호 코드 보안을 AI가 증명한 AlphaProof Code사람이 '무엇을 증명할지'를 정하면 AI 에이전트 팀이 증명을 쓰는 방식으로, 메신저 시그널의 암호 코드가 보안 약속을 지킨…공식 연구 발표난이도 어려움AI 모델 파일에 남은 GPU 지문을 읽는 체크포인트 포렌식공개된 AI 모델 파일에 남은 초기값 흔적으로 첫 값을 만든 GPU 계열을 가려내는 방법을 내놓았다. 중국 4개 회사의 모델…기술 보고서난이도 어려움생활 속 일을 실제로 해내는 AI를 평가하는 LifeVal시간 사용 조사와 이용자 설문으로 생활 과제를 정한 평가이며, 공개된 일부 과제 점수의 의미와 한계를 살펴봅니다.평가난이도 쉬움잡음을 지웠더니 언어 판별이 나빠졌다: SceneMaker의 한국어 방송 실험한국어 방송 6편의 발화 3,115구간에서 잡음 제거가 언어 판별 점수를 낮춘 사례를 살펴보고, 검수 방식과 적용 범위를 구…커뮤니티 해설난이도 보통