<h1 align="center">OpenRabbit</h1>
<p align="center">
무료, 오픈 소스, 자체 호스팅 가능한 GitHub PR 리뷰어이며, 제3자 검토 도구를 대체합니다.
</p>
<p align="center">
<b>:copilot:</b> <a href="https://github.com/Aledon8/OpenLeukemia/pull/12"><b>예시 PR 보기</b></a><br>
<b>✦</b> <a href="https://aryan.my/posts/open-rabbit"><b>openrabbit에 대한 필독 기사</b></a><br>
<sub></sub>
</p>
<p align="center">
<i>OpenRabbit을 가능하게 해준 기여자 및 유지 관리자분들께 감사드립니다.</i>
</p>
<!--
<p align="center">
<a href="https://github.com/aryan6673/openrabbit/graphs/contributors">
<img src="https://contrib.rocks/image?repo=aryan6673/openrabbit" />
</a>
</p>
-->
개요 (Overview)
OpenRabbit은 무료(아래에서 설명하는 경우 심지어 무료 LLM API도 얻을 수 있음) 오픈 소스 자체 호스팅 가능한 GitHub Pull Request 리뷰어입니다. 이는 PR diff를 분석하고, 플러그인 가능한 LLM 제공업체(Groq / OpenRouter / 기타)와 상담하여 간결하고 구조화된 리뷰를 게시합니다. 이 리뷰는 사람이 읽을 수 있는 요약과 정확한 인라인 댓글 또는 제안으로 구성됩니다.
호스팅 불필요 (Zero Hosting Required)
구독료를 지불하거나 서버를 관리할 필요가 없습니다. OpenRabbit은 사용자의 자체 GitHub Actions 환경에서 완전히 실행됩니다. 코드는 러너(runner)에 남아 있으며, 중앙 기관에 의해 프록시되거나 저장되지 않습니다.
2분 만에 시작하기 (Quickstart in 2 minutes)
단순히 .github/workflows/reviewer.yml 파일에 생성하고 다음 내용을 붙여넣으세요:
name: OpenRabbit Reviewer
on:
...
[IMPORTANT]
API 키를 안전하게 설정하는 방법
절대로 API 키를 워크플로우 파일에 직접 하드코딩하거나 GitHub에 커밋하지 마세요.
대신, GitHub Actions Secrets를 사용하여 안전하게 저장하세요:
- GitHub 리포지토리를 엽니다.
- **Settings(설정)**으로 이동합니다.
- **Secrets and variables → Actions(시크릿 및 변수 → 액션)**을 탐색합니다.
- **New repository secret(새 리포지토리 시크릿)**를 클릭합니다.
LLM_API_KEY라는 이름의 시크릿을 생성합니다.
- API 키를 값으로 붙여넣습니다.
- **Add secret(시크릿 추가)**을 클릭합니다.
OpenRabbit은 이 시크릿을 GitHub Actions 워크플로우 내부에서 자동으로 안전하게 사용합니다.
이 과정을 통해 API 키는 암호화되어 유지되며, 커밋, 로그 또는 풀 리퀘스트에서 실수로 유출되는 것을 방지할 수 있습니다.
오픈 소스 정신 (The Open Source Fight)
OpenRabbit은 오픈 소스 윤리(Open Source Ethics)를 지지합니다.
OpenRabbit은 개발자에게 권한을 되돌려줌으로써 위험 요소를 제거합니다. 자체 CI/CD 환경에서 클라이언트 측으로 실행함으로써, 사용자는 **완전한 데이터 주권(total data sovereignty)**을 유지할 수 있습니다. 우리는 프로젝트의 보안을 AI 생산성 때문에 포기해야 할 필요가 없다고 믿습니다.
주요 기능 (Features)
-
"컨텍스트 사각지대 문제(Context Blindness Problem)" 해결
대부분의 AI 리뷰어는 마치 코드가 고립되어 존재하는 것처럼 작동하는데, 이는 매우 비효율적입니다. OpenRabbit은 실제로 전체 프로젝트를 이해하려고 노력합니다:
- 2단계 파일 가져오기 (Two-Stage File Fetch): 컨텍스트가 부족하다고 판단되면, 단순히 diff만 보고 판단하는 대신 추가 파일을 끌어와 분석할 수 있습니다.
- 연결된 이슈 인식 (Linked Issue Awareness): 연결된 GitHub 이슈를 읽어 코드가 무엇을 해야 하는지 알기 때문에, 단지 컴파일되는지만 확인하지 않습니다.
-
"소크라테스식 스캐폴딩(Socratic Scaffold)" (본질적으로 멘토 모드)
단순히 정답을 제시하는 대신, 마치 멘토처럼 질문을 던져 사용자가 스스로 문제를 파악하도록 돕습니다. 무엇이 잘못되었는지뿐만 아니라 왜 잘못되었거나 위험한지 설명합니다. 간단하거나 명백한 경우에만 직접적인 수정 사항을 제공합니다.
– "성능 및 확장성 전문가(Performance & Scalability Expert)"
이 기능은 심각한 코드에 적합합니다. 레이스 컨디션(race conditions), 메모리 누수(memory leaks), 느린 로직(예: O(n²)) 등을 확인합니다. 또한 캐싱을 무시하거나 이미 존재하는 부분을 재작성하는 경우도 방지합니다. 기본적으로 "트래픽이 10배가 되어도 이 코드가 작동할까?"라는 질문을 던집니다.
– "보안 감사자(Security Auditor)" (실제 문제를 포착하고, 가짜 문제는 무시)
PR 설명은 처음에 무시하여 편향되지 않도록 하고 오직 코드만 검토합니다. 그런 다음 SQL injection, XSS 또는 인증 오류(broken auth)와 같은 실제 문제들을 확인합니다. 또한 누군가 검사 기능을 제거하면서도 안전해졌다고 주장하는 가짜 "보안 개선" 사례도 지적합니다.
– 더 이상 "AI 쓰레기(AI Slop)"는 없다
세련되었지만 쓸모없는 AI 피드백을 아시죠? 이 기능은 그것을 방지합니다:
- 제안 검증(Suggestion Validation): 제안된 내용이 실제로 코드와 일치하는지 확인한 후에 보여줍니다.
- 선임 엔지니어의 목소리(Senior Engineer Voice): 사소한 명명 규칙 등을 지적하기보다는 실제 테크 리드처럼 이야기합니다.
– "느낌으로 코딩(Vibe Coding)" 중단 (드리프트 감지, DRIFT Detection)
PR과 관련 없는 부분을 변경했을 때 플래그를 지정합니다. 예를 들어 무작위 리팩토링이나 정리 작업 같은 경우입니다. 이러한 내용은 깔끔하고 검토하기 쉽도록 별도의 PR로 분리할 것을 알려줍니다.
무료 API 키 받기
기본적으로 이 프로젝트는 **OpenRouter 무료 모델 풀(free model pool)**을 사용합니다. 완벽하지는 않으며, 주된 문제는 속도 제한(rate limits)입니다. 이를 해결하기 위해 OpenRouter의 여러 무료 모델 사이를 자동으로 순환하며 작동하므로, 같은 한계에 계속 부딪히지 않도록 합니다. 작동은 하지만, 매우 신뢰성이 높거나 일관적이지는 않습니다.
더 나은 성능과 중단 없는 사용을 원한다면, 사용자 본인의 API 키를 사용하는 것이 좋습니다.
검토 모드(Review Modes)
- summary: 단일 요약 검토 코멘트 (인라인 코멘트 없음)
- inline: 인라인 코멘트와 제안만 게시
- both: 요약 및 인라인 코멘트를 모두 게시 (기본값)
기여(Contributing)
- 이슈 또는 PR을 열어주세요.
- 새로운 프로바이더 어댑터 추가는
src/llm을 참고하세요.
라이선스
MIT 라이선스 하에 사용 가능합니다.
version
<a href="https://www.producthunt.com/products/openrabbit?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-openrabbit" target="_blank" rel="noopener noreferrer"><img alt="OpenRabbit - GitHub Actions에서 완전히 실행되는 무료 AI PR 리뷰어 | Product Hunt" width="250" height="54" src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1165149&theme=dark&t=1781176965489"></a>
[Open Rabbit - GitHub Marketplace]
[Featured on Awesome AI Tools]