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绕过