Signed-off-by: hsliu <liuhongsheng4@huawei.com> Signed-off-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
9.2 KiB
VLLM-Omni PR Reviewer
Overview
The VLLM-Omni PR Reviewer is an automated code review bot powered by GLM-4.7 AI model. It helps maintain code quality by providing intelligent feedback on pull requests.
Features
- Intelligent Code Analysis: Leverages GLM-4.7 for understanding code context and providing meaningful feedback
- Comprehensive Reviews: Covers code quality, architecture, security, testing, and documentation
- Structured Output: Provides well-formatted reviews with clear sections and actionable suggestions
- Rate Limiting: Built-in cooldown mechanism to prevent excessive API usage
- Retry Logic: Automatic retries with exponential backoff for transient API failures
- Defensive Parsing: Robust validation of API responses to handle malformed data
- Cost Control: Only repository members/collaborators/owners can trigger reviews
How to Use
Triggering a Review
To trigger an automated PR review, mention the bot in a PR comment:
@vllm-omni-reviewer please review
Or include in your PR description:
@vllm-omni-reviewer
The bot will automatically review your changes and post a detailed comment.
What Gets Reviewed
- vLLM Architecture Compatibility: Ensures changes align with vLLM's design patterns
- Multi-modal Integration: Reviews audio, vision, and text processing implementations
- Performance Implications: Analyzes impact on inference latency and throughput
- Code Quality: Checks Python best practices, type hints, and documentation
- Security Considerations: Identifies potential security vulnerabilities
- Testing Coverage: Recommends additional test cases when needed
Review Output
The bot posts a structured review comment with:
- Overview: Brief summary of the PR's purpose
- Critical Issues (Must Fix): Blocking issues that need to be addressed
- Important Issues (Should Fix): Significant concerns that should be resolved
- Minor Issues & Suggestions: Small improvements and optional suggestions
- Positive Aspects: Highlights well-implemented features
- Performance Considerations: Analysis of performance impact
- Testing Recommendations: Suggestions for additional tests
- Overall Assessment: Final recommendation (Approve/Request Changes/Needs Major Work)
Rate Limiting and Cooldown
The bot includes a cooldown mechanism to prevent excessive API usage:
- Default cooldown: 5 minutes between reviews per PR
- Configurable: Can be adjusted via
PR_REVIEWER_COOLDOWN_MINUTESenvironment variable - Smart detection: Checks for previous bot comments before starting a review
If you trigger a review within the cooldown period, the bot will log a message and skip the review.
Architecture
┌─────────────────┐
│ PR Comment │
│ @vllm-omni- │
│ reviewer │
└────────┬────────┘
│
▼
┌─────────────────────────────────┐
│ GitHub Actions Workflow │
│ (.github/workflows/ │
│ pr-reviewer.yml) │
│ │
│ - Python 3.11 │
│ - requests==2.31.0 │
│ - pyyaml==6.0.1 │
└────────┬────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ PR Reviewer Script │
│ (.github/scripts/ │
│ pr_reviewer.py) │
│ │
│ 1. Check cooldown │
│ 2. Fetch PR details & diff │
│ 3. Build review prompt │
│ 4. Call GLM-4.7 API │
│ (with retry logic) │
│ 5. Validate response │
│ 6. Post review comment │
└────────┬────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ GLM-4.7 API │
│ (open.bigmodel.cn) │
└─────────────────────────────────┘
- GitHub Actions Workflow (
.github/workflows/pr-reviewer.yml): Triggers on @mention - Python Script (
.github/scripts/pr_reviewer.py): Fetches PR data and calls GLM-4.7 API - GLM-4.7 API: Provides intelligent code analysis
Testing
Testing the PR Reviewer Bot
To test the PR reviewer bot before deploying to production:
- Create a test PR - Make a small, safe change (e.g., documentation update)
- Open the PR - Create a pull request with a descriptive title
- Trigger the review - Comment
@vllm-omni-revieweron the PR - Monitor results - Check the Actions tab for workflow execution logs
Running Unit Tests
The bot includes comprehensive unit tests that can be run locally:
# Run all tests
pytest .github/tests/test_pr_reviewer.py -v
# Run specific test
pytest .github/tests/test_pr_reviewer.py::TestCheckTrigger -v
# Run with coverage
pytest .github/tests/test_pr_reviewer.py --cov=.github/scripts/pr_reviewer.py --cov-report=term-missing
What to Look For
When testing, verify that:
- The workflow triggers on the
@vllm-omni-reviewercomment - The cooldown mechanism works correctly
- The GLM API call completes without errors (with retry if needed)
- A review comment is posted to the PR
- The review content is meaningful and well-structured
- The cost is within the expected range (0.50-5 CNY)
Safe Test Changes
For testing, consider making these types of safe changes:
- Documentation updates (like adding this Testing section)
- Comment improvements
- README enhancements
- Non-functional file additions
Example Test PR
A good test PR might:
- Update a documentation file
- Add explanatory comments
- Improve code formatting
- Fix a minor typo
These changes are safe to merge if the test is successful and won't affect functionality.
Troubleshooting
Bot Doesn't Respond
- Check permissions - Verify you have Owner/Member/Collaborator access
- Check Actions tab - Look for workflow execution and view logs
- Check cooldown - If another review was posted recently, wait for the cooldown period
- Check API key - Ensure
GLM_API_KEYis configured in repository secrets
API Errors
If the GLM API call fails:
- Check the Actions tab for detailed error logs
- Verify the
GLM_API_KEYsecret is correctly configured - Ensure sufficient API quota is available
- The bot will automatically retry up to 3 times with exponential backoff
Review Seems Truncated
If the review appears incomplete:
- Large diffs may be truncated at 100,000 characters
- Check the logs for truncation warnings
- Consider breaking large PRs into smaller chunks
Configuration
Required Secrets
The following secret must be configured in the repository settings:
GLM_API_KEY- Your GLM (BigModel) API key for accessing the GLM-4.7 API
To add the secret:
- Go to repository Settings → Secrets and variables → Actions
- Click "New repository secret"
- Name:
GLM_API_KEY - Value: Your GLM API key
Optional Configuration
The following optional environment variables can be set in the workflow file:
| Variable | Default | Description |
|---|---|---|
GLM_API_URL |
https://open.bigmodel.cn/api/paas/v4/chat/completions |
GLM API endpoint |
GLM_MODEL |
glm-4.7 |
Model to use for reviews |
PR_REVIEWER_COOLDOWN_MINUTES |
5 |
Cooldown period between reviews |
PR_REVIEWER_MAX_RETRIES |
3 |
Maximum API retry attempts |
PR_REVIEWER_RETRY_DELAY |
1.0 |
Base delay for retry backoff (seconds) |
PR_REVIEWER_MAX_DIFF_SIZE |
100000 |
Maximum diff size before truncation |
Workflow Customization
The workflow can be customized in .github/workflows/pr-reviewer.yml:
- Change Python version (default: 3.11)
- Adjust timeout value (default: 10 minutes)
- Modify trigger conditions
- Add additional dependencies
Code Quality
The PR reviewer script follows vllm-omni coding standards:
- Type hints: All functions have complete type hints following mypy strict mode
- Logging: Uses Python's logging module for structured logging
- Testing: Comprehensive unit tests with pytest
- Pre-commit: Script is checked by pre-commit hooks (flake8)
Cost Estimate
| Component | Cost |
|---|---|
| GitHub Actions (public repo) | Free |
| GLM API (glm-4.7) | ~0.50-5 CNY per PR (varies by size) |
| Total (20 PRs/month) |
Contributing
To improve the PR reviewer bot:
- Edit
.github/scripts/pr_reviewer.pyfor logic changes - Edit
.github/workflows/pr-reviewer.ymlfor workflow changes - Add tests to
.github/tests/test_pr_reviewer.py - Run
pre-commit run --files .github/scripts/pr_reviewer.pyto check code quality - Test thoroughly with a test PR before deploying to production
License
This bot is part of the VLLM-Omni project and follows the same license terms.