inblog logo
|
code-with-me
    Article

    [OSSCA] PR-Agent 기본 설정 및 직접 실행해보기

    오픈소스 컨트리뷰션 아카데미(OSCCA) 프로젝트로 선택한 PR-Agent를 로컬에서 직접 실행해본 경험을 정리했습니다. 실행을 위해 어떤 설정이 필요한지, 어떤 에러가 발생했고 어떻게 해결했는지 등을 포함합니다.
    May 07, 2025
    [OSSCA] PR-Agent 기본 설정 및 직접 실행해보기
    Contents
    📂 프로젝트 구조 이해🧱 사전 준비🔧 설정 파일 구성🚀 실행 방법⚠️ 겪었던 에러와 해결 과정📈 실행 결과 예시 (스크린샷 or 로그 일부)💡 좀 더 구체적으로 설명하면…🧩 기타 참고 사항✍️ 마무리 및 소감

    📂 프로젝트 구조 이해

    • PR-Agent란?
      → GitHub PR에 AI 기반 리뷰 및 개선 제안을 자동으로 남겨주는 오픈소스 도구
      → 다양한 LLM(OpenAI, Gemini 등) 연동 가능
      → CLI 또는 GitHub Action 방식으로 실행 가능

    • 나의 실행 환경

      macOS M3
      Python 3.10.17 (pyenv 사용)
      PR-Agent (Fork from OSSCA → 내 계정에 개인 Fork)

    🧱 사전 준비

    ✅ Python 버전

    PR-Agent는 최신 Python 버전에서 예상치 못한 오류가 발생할 수 있어, Python 3.10 사용을 권장합니다.

    • pyenv로 설치

      pyenv install 3.10.17 
      pyenv local 3.10.17

    ✅ 가상환경 생성

    # 가상환경 만들기
    python3 -m venv venv 
    
    # 가상환경 활성화
    source venv/bin/activate

    ✅ 의존성 설치

    # 필요한 의존성 설치
    pip install -r requirements.txt 
    pip install -r requirements-dev.txt

    🔧 설정 파일 구성

    📄 configuration.toml 수정

    사용하고 싶은 LLM 모델명을 적어줍니다. 저는 Gemini를 적어줬습니다.

    configuration.toml

    📄 secrets.toml 생성

    • secrets_template.toml을 복사해서 secrets.toml을 생성해줍니다.

    • 발급한 키 삽입 (절대 공개 X)

    [github] user_token = "ghp_xxx..." # classic 토큰, 권한: repo, user 
    [gemini] api_key = "AIza..."

    📌 환경변수 설정 (선택사항)

    터미널에 환경 변수를 설정해줍니다.

    export GEMINI_API_KEY=xxx 
    export GITHUB_TOKEN=xxx

    🚀 실행 방법

    예시 PR URL : https://github.com/vmkmym/pr-agent/pull/1

    # review
    python3 -m pr_agent.cli --pr_url https://github.com/vmkmym/pr-agent/pull/1 review 
    
    # improve
    python3 -m pr_agent.cli --pr_url https://github.com/vmkmym/pr-agent/pull/1 improve

    ⚠️ 겪었던 에러와 해결 과정

    ❌ BoxKeyError: 'user_token'

    • secrets.toml이 없거나 경로가 잘못되었을 때 발생
      ✔️ secrets_template.toml을 복사했는지, 내부에 토큰이 정확히 들어있는지 확인

    ❌ ValueError: GitHub token is required

    • 환경변수로 토큰이 제대로 주입되지 않았거나 권한 부족일 수 있음
      ✔️ 토큰 종류는 반드시 Classic Token을 사용하고, repo, user 권한이 모두 있어야 함
      ✔️ .env나 .toml로 넣었다면 경로와 구문 확인


    📈 실행 결과 예시 (스크린샷 or 로그 일부)

    improve 명령어 입력했을 때, 변경사항을 더 나은 방향으로 제안해준다.

    decribe 명령어 입력했을 때는 PR의 핵심 변경사항을 요약해준다.

    reveiw 명령어 입력했을 때 다음과 같이 PR 변경사항을 리뷰어처럼 평가해준다.

    💡 좀 더 구체적으로 설명하면…

    🔍 review

    • 마치 사람이 코드 리뷰하는 것처럼 문제점, 보완점, 코드 스타일 등을 지적

    • 예: 네이밍, 불필요한 로직, 주석 부족, 테스트 누락 등

    • 사용 시기: PR 올리고 코드 퀄리티 점검 받고 싶을 때

    🛠️ improve

    • 코드 자체를 어떻게 더 개선할 수 있을지를 제안

    • 예: 구조 변경, 리팩토링, 성능 최적화

    • 사용 시기: PR을 올리기 전에 한 번 더 다듬고 싶을 때

    🧾 describe

    • PR의 주요 변경 사항을 자연어로 설명

    • 예: 파일 이름, 수정 라인, 주요 기능 변경 요약

    • 사용 시기: 팀원에게 변경 내역을 공유할 때 / PR 설명 자동화

    개인적으로 사이드 프로젝트를 하거나, 토이 프로젝트를 진행할 때 엄청 유용할 것 같다는 생각을 했다. 이번에 새로 하게 될 프로젝트가 있는데 PR Agent의 도움을 받아보려고 한다. GitHub Action 방식으로 하면 너무 편하고 좋을 것 같다.


    🧩 기타 참고 사항

    • Gemini, OpenAI, Azure 등 다양한 모델 사용 가능 → configuration.toml에서 조정

    • pr-agent는 GitHub Action 방식도 지원하므로, 이후 자동 리뷰로 확장 가능

    • 사용 중인 모델에 따라 응답 품질 및 속도가 크게 다를 수 있음


    ✍️ 마무리 및 소감

    이번 PR-Agent 직접 실행 경험을 통해 오픈소스 도구가 어떤 식으로 동작하는지 구조를 파악할 수 있었고, 모델/인증 관련 설정에서 실질적인 트러블슈팅 경험을 쌓을 수 있었다.


    Share article
    Contents
    📂 프로젝트 구조 이해🧱 사전 준비🔧 설정 파일 구성🚀 실행 방법⚠️ 겪었던 에러와 해결 과정📈 실행 결과 예시 (스크린샷 or 로그 일부)💡 좀 더 구체적으로 설명하면…🧩 기타 참고 사항✍️ 마무리 및 소감

    code-with-me

    RSS·Powered by Inblog