| .github/workflows | ||
| docker | ||
| github_action | ||
| pics | ||
| pr_agent | ||
| tests/unit | ||
| .dockerignore | ||
| .gitignore | ||
| action.yaml | ||
| CONFIGURATION.md | ||
| Dockerfile.github_action | ||
| Dockerfile.github_action_dockerhub | ||
| INSTALL.md | ||
| LICENSE | ||
| PR_COMPRESSION.md | ||
| pyproject.toml | ||
| README.md | ||
| requirements-dev.txt | ||
| requirements.txt | ||
CodiumAI PR-Agent is an open-source tool aiming to help developers review PRs faster and more efficiently. It automatically analyzes the PR and can provide several types of feedback:
Auto-Description: Automatically generating PR description - name, type, summary, and code walkthrough.
PR Review: Feedback about the PR main theme, type, relevant tests, security issues, focused PR, and various suggestions for the PR content.
Question Answering: Answering free-text questions about the PR.
Code Suggestion: Committable code suggestions for improving the PR.
Example results:
/describe:
/review:
/ask:
/improve:
Live demo
Experience GPT-4 powered PR review on your public GitHub repository with our hosted PR-Agent. To try it, just mention @CodiumAI-Agent and add the desired command in any PR comment! The agent will generate a response based on your command.
To set up your own PR-Agent, see the Quickstart section
Overview
PR-Agent offers extensive pull request functionalities across various git providers:
| GitHub | Gitlab | Bitbucket | ||
|---|---|---|---|---|
| TOOLS | Review | ✅ | ✅ | ✅ |
| ⮑ Inline review | ✅ | ✅ | ||
| Ask | ✅ | ✅ | ||
| Auto-Description | ✅ | ✅ | ||
| Improve Code | ✅ | ✅ | ||
| Reflect and Review | ✅ | |||
| USAGE | CLI | ✅ | ✅ | ✅ |
| Tagging bot | ✅ | ✅ | ||
| Actions | ✅ | |||
| CORE | PR compression | ✅ | ✅ | ✅ |
| Repo language prioritization | ✅ | ✅ | ✅ | |
| Adaptive and token-aware file patch fitting |
✅ | ✅ | ✅ |
Examples for invoking the different tools via the CLI:
- Review: python cli.py --pr-url=<pr_url> review
- Describe: python cli.py --pr-url=<pr_url> describe
- Improve: python cli.py --pr-url=<pr_url> improve
- Ask: python cli.py --pr-url=<pr_url> ask "Write me a poem about this PR"
- Reflect: python cli.py --pr-url=<pr_url> reflect
"<pr_url>" is the url of the relevant PR (for example: https://github.com/Codium-ai/pr-agent/pull/50).
In the configuration file you can select your git provider (GitHub, Gitlab, Bitbucket), and further configure the different tools.
Quickstart
To get started with PR-Agent quickly, you first need to acquire two tokens:
- An OpenAI key from here, with access to GPT-4.
- A GitHub personal access token (classic) with the repo scope.
There are several ways to use PR-Agent. Let's start with the simplest one:
Install
Here are several ways to install and run PR-Agent:
- Method 1: Use Docker image (no installation required)
- Method 2: Run as a GitHub Action
- Method 3: Run from source
- Method 4: Run as a polling server
- Request reviews by tagging your GitHub user on a PR
- Method 5: Run as a GitHub App
- Allowing you to automate the review process on your private or public repositories
Usage and Tools
PR-Agent provides five types of interactions ("tools"): "PR Reviewer", "PR Q&A", "PR Description", "PR Code Sueggestions" and "PR Reflect and Review".
- The "PR Reviewer" tool automatically analyzes PRs, and provides various types of feedback.
- The "PR Q&A" tool answers free-text questions about the PR.
- The "PR Description" tool automatically sets the PR Title and body.
- The "PR Code Suggestion" tool provide inline code suggestions for the PR that can be applied and committed.
- The "PR Reflect and Review" tool first initiates a dialog with the user and asks them to reflect on the PR, and then provides a review.
How it works
Check out the PR Compression strategy page for more details on how we convert a code diff to a manageable LLM prompt
Roadmap
- Support open-source models, as a replacement for openai models. (Note - a minimal requirement for each open-source model is to have 8k+ context, and good support for generating json as an output)
- Support other Git providers, such as Gitlab and Bitbucket.
- Develop additional logics for handling large PRs, and compressing git patches
- Add additional context to the prompt. For example, repo (or relevant files) summarization, with tools such a ctags
- Adding more tools. Possible directions:
- PR description
- Inline code suggestions
- Reflect and review
- Enforcing CONTRIBUTING.md guidelines
- Performance (are there any performance issues)
- Documentation (is the PR properly documented)
- Rank the PR importance
- ...

