esolnguyen/bedrock-pr-review
GitHub: esolnguyen/bedrock-pr-review
一个基于 AWS Bedrock 与 Claude 的自动化 PR 审查代理,实现安全与质量反馈并联动工作项。
Stars: 1 | Forks: 0
# Bedrock AgentCore PR Review Agent
基于 AWS Bedrock (Claude) 构建的 AI 驱动的代码审查 agent。自动审查 pull request 中的安全漏洞、代码质量和需求覆盖率,然后以 PR 评论的形式发布结构化的反馈。
支持两种 provider 模式:
- **GitHub + Jira** - 关联 Jira ticket 的 GitHub PR
- **Azure DevOps** - 关联 Azure Boards 工作项的 Azure Repos PR(通过 MCP 代理)
## 架构
```
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Webhook Event │────▶│ Lambda Handler │────▶│ CodeReviewAgent │
│ (GitHub / ADO) │ │ (auto-detect) │ │ │
└─────────────────┘ └──────────────────┘ └────────┬────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────┐ ┌─────────────┐ ┌────────────┐
│ SCMProvider │ │ WorkItem │ │ Bedrock │
│ (GitHub or │ │ Provider │ │ (Claude) │
│ ADO) │ │ (Jira/ADO) │ │ │
└────────────┘ └─────────────┘ └────────────┘
```
```
agentcore/
├── agent.py # Core review orchestration
├── config.py # Pydantic config from env vars
├── prompts/
│ ├── system_prompt.py # LLM system prompt (security, quality, requirements)
│ └── review_template.py
└── tools/
├── base.py # Abstract SCMProvider / WorkItemProvider
├── factory.py # Provider factory based on REVIEW_PROVIDER
├── github.py # GitHub SCM provider (PyGithub)
├── jira.py # Jira work item provider
└── azuredevops.py # Azure DevOps SCM + WorkItem via MCP proxy
lambda/
└── handler.py # Lambda entry point (webhook handler)
```
## 审查内容
- **安全** - OWASP Top 10:SQL injection、硬编码的 secret、command injection、XSS、path traversal、弱加密、SSRF 等。
- **代码质量** - 复杂度、错误处理、命名、未使用的 import、重复代码、性能(N+1 查询)
- **需求覆盖率** - 将 PR 的更改映射到关联的工作项/ticket,并报告覆盖率百分比
- **内联评论** - 针对存在 bug、安全问题或缺失错误处理的代码行生成特定于文件的评论
## 设置
### 前置条件
- Python 3.12+
- 启用了 Bedrock 访问权限(已启用 Claude 模型)的 AWS 账户
### 安装
```
pip install -e .
# 或包含 dev dependencies
pip install -e ".[dev]"
```
### 配置
将 `.env.example` 复制到 `.env` 并填入你的值:
```
cp .env.example .env
```
主要变量:
| 变量 | 描述 |
|---|---|
| `REVIEW_PROVIDER` | `github_jira` 或 `azure_devops` |
| `AWS_REGION` | Bedrock 的 AWS 区域 |
| `BEDROCK_MODEL_ID` | Bedrock 模型 ID(默认为 Claude Sonnet) |
| `GITHUB_TOKEN` | GitHub PAT(用于 GitHub provider) |
| `JIRA_URL` / `JIRA_EMAIL` / `JIRA_API_TOKEN` | Jira 凭证(用于 Jira provider) |
| `ADO_MCP_ENDPOINT` / `ADO_MCP_API_KEY` | MCP 代理 endpoint(用于 ADO provider) |
| `ADO_ORG` / `ADO_PROJECT` / `ADO_PAT` | Azure DevOps 组织详情(用于 ADO provider) |
## 用法
### 本地测试
```
# GitHub + Jira
python test_local.py owner/repo 123
# Azure DevOps
REVIEW_PROVIDER=azure_devops python test_local.py 456
```
测试脚本会获取 PR,运行审查,并在发布评论之前进行提示。
### Lambda 部署
`lambda/handler.py` 会自动从传入的 webhook payload 中检测 provider:
- GitHub webhook(通过 `X-GitHub-Event` header)→ GitHub + Jira provider
- Azure DevOps service hook(通过 `eventType` 字段)→ Azure DevOps provider
支持的触发方式:
- PR 打开 / 重新打开 / 同步(自动审查)
- 包含 `agent review` 或 `@agent review` 的评论(手动触发)
### 审查输出
agent 会在 PR 上发布一条结构化的 Markdown 评论:
```
## 🤖 AI Code Review
### 📊 总结
### 🔒 Security
### 📈 Code Quality
### ✅ Requirements Coverage
### 🎯 结论 (APPROVE / COMMENT / REQUEST CHANGES)
```
以及针对特定文件/代码行的可选内联评论。
## 开发
```
# 运行 tests
pytest
# Lint
flake8 agentcore/
mypy agentcore/
# Format
black agentcore/
```
# bedrock_pr_review_agent
标签:AWS, CI/CD, DevOps, DPI, SOC Prime, 人工智能, 代码审查, 开发工具, 用户模式Hook绕过