9.8 KiB
CodiumAI PR-Agent
is an open-source tool aiming to help developers review pull requests faster and more efficiently. It automatically analyzes the pull request and can provide several types of feedback:
Auto-Description: Automatically generating PR description - title, type, summary, code walkthrough and PR labels.
PR Review: Adjustable feedback about the PR main theme, type, relevant tests, security issues, focus, score, and various suggestions for the PR content.
Question Answering: Answering free-text questions about the PR.
Code Suggestions: Committable code suggestions for improving the PR.
Update Changelog: Automatically updating the CHANGELOG.md file with the PR changes.
Example results:
/describe:
/review:
/reflect_and_review:
/ask:
/improve:
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 | ✅ | |||
Update CHANGELOG.md | ✅ | |||
USAGE | CLI | ✅ | ✅ | ✅ |
App / webhook | ✅ | ✅ | ||
Tagging bot | ✅ | |||
Actions | ✅ | |||
CORE | PR compression | ✅ | ✅ | ✅ |
Repo language prioritization | ✅ | ✅ | ✅ | |
Adaptive and token-aware file patch fitting |
✅ | ✅ | ✅ | |
Incremental PR Review | ✅ |
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
- Update Changelog: python cli.py --pr-url=<pr_url> update_changelog
"<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.
Try it now
Try GPT-4 powered PR-Agent on your public GitHub repository for free. 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 Installation section
Installation
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:
- 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 six types of interactions ("tools"): "PR Reviewer"
, "PR Q&A"
, "PR Description"
, "PR Code Sueggestions"
, "PR Reflect and Review"
and "PR Update Changlog"
.
- 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 initiates a dialog with the user, asks them to reflect on the PR, and then provides a more focused review.
- The "PR Update Changelog" tool automatically updates the CHANGELOG.md file with the PR changes.
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
Why use PR-Agent?
A reasonable question that can be asked is: "Why use PR-Agent? What make it stand out from existing tools?"
Here are some of the reasons why:
- We emphasize real-life practical usage. Each tool (review, improve, ask, ...) has a single GPT-4 call, no more. We feel that this is critical for realistic team usage - obtaining an answer quickly (~30 seconds) and affordably.
- Our PR Compression strategy is a core ability that enables to effectively tackle both short and long PRs.
- Our JSON prompting strategy enables to have modular, customizable tools. For example, the '/review' tool categories can be controlled via the configuration file. Adding additional categories is easy and accessible.
- We support multiple git providers (GitHub, Gitlab, Bitbucket), and multiple ways to use the tool (CLI, GitHub Action, GitHub App, Docker, ...).
- We are open-source, and welcome contributions from the community.
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 logic 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
- ...