← 返回博客

构建一个 AI 智能体,让它审查拉取请求、遵循你的编码规范,并自动将反馈发布到 GitHub。

代码审查对于交付可靠的软件至关重要,但它也可能拖慢开发进度。每个拉取请求都需要关注,而审查者必须理解改动了什么、找出潜在缺陷、检查安全漏洞,并确保代码遵循既定规范。

AI 编码智能体可以承担其中很大一部分前期工作。

你无需手动审查每一处改动,而是可以配置一个智能体对拉取请求进行初步审查、识别潜在问题,并直接在版本控制系统中发布可操作的反馈或提出代码修改建议。

借助 OpenHands Agent Canvas,你可以在几分钟内搭建好这一工作流。你无需构建自定义的智能体框架、编写 GitHub Actions 工作流,也无需管理一堆脚本。

下面我们来逐步介绍如何开始、自定义你的智能体,并实现审查流程的自动化。

注意: 本教程使用 GitHub。同一个智能体、技能和自动化模式也可以适配其他版本控制系统,不过集成方式和触发配置可能有所不同。

快捷方式:用一条提示词搭建代码审查

如果你已经在运行 Agent Canvas,可以直接跳到这一步。

开始之前: 请确保 Agent Canvas 已安装并正在运行,且你的智能体有权访问你想要审查的 GitHub 仓库。GitHub 连接必须具有读取拉取请求和发布审查评论的权限。你还需要为智能体配置好模型。

打开 Agent Canvas,与你的智能体开始对话,然后输入:

Set up a PR review automation for Organization/Repo.

Use the OpenHands `code-review` skill to review pull requests for:
- Logic errors and potential bugs
- Security vulnerabilities
- Performance regressions
- Missing edge cases and test coverage

Prioritize actionable findings that could affect production behavior. Avoid minor formatting and style suggestions.

Post review findings directly to the GitHub PR, including the issue, its severity, and a recommended fix.

Run when a pull request is opened, reopened, marked ready for review, or gets new commits. Skip draft pull requests.

Before posting feedback, check existing review comments and avoid repeating finding that have already been reported. When a pull request receives new commits, focus on changes introduced since the previous review.

If this Agent Canvas cannot receive GitHub webhooks (for example, it runs on localhost), check for new or updated pull requests every 10 minutes instead.

将 Organiztion/Repo替换为你的 GitHub 组织和仓库。

Agent Canvas 可以帮助你使用 OpenHands 代码审查技能和你已连接的 GitHub 仓库来配置自动化。请检查生成的配置,确认触发条件和仓库权限,然后启用自动化。

一个重要细节:自动化的运行方式取决于你的智能体托管在哪里。

  • 云端托管: 在已配置 GitHub 事件集成的在线环境中运行时,自动化可以响应拉取请求事件。

  • 本地: 如果你在本地运行 Agent Canvas,可以将自动化配置为每十分钟轮询 GitHub 一次,以获取新建或更新的拉取请求。你的机器和智能体环境需要保持运行,定时审查才能执行。

配置并测试完成后,该工作流就可以审查新建或更新的拉取请求,而无需你每次手动提示智能体。

但我们究竟配置了什么,又怎样才能让审查更有用呢?

代码审查智能体的工作原理

AI 代码审查智能体所做的不仅仅是评估一段代码片段。它可以在仓库的上下文中检查改动、查看相关文件、追踪依赖关系,并识别潜在问题。

工作流如下:

PR 打开 → 自动化启动 → 智能体审查代码 → 审查结果发布到 GitHub → 开发者处理问题

OpenHands 通过三个组件来实现这一点:

组件作用
智能体检查代码、对改动进行推理,并识别潜在问题
技能定义智能体应如何审查代码以及应遵循哪些标准
自动化决定智能体何时运行,是由 GitHub 事件触发还是定时轮询

智能体负责执行工作。技能定义审查应如何进行。自动化确保它在正确的时间发生。

将这些组件分离可以使工作流可复用。你可以更新审查标准、切换模型,或更改审查运行时机,而无需重建智能体。

1. 智能体:检查和推理代码

智能体负责分析拉取请求。

传统的静态分析工具通过预定义规则和程序分析来识别问题。AI 代码审查智能体采用不同的方法,使用语言模型在上下文中评估改动、解释潜在问题并建议修复方案。

例如,假设某个拉取请求引入了这个函数:

def get_user(user_id):
    query = f"SELECT * FROM users WHERE id = {user_id}"
    return db.execute(query)

一次有用的审查可能会指出,该查询直接插值了用户可控的输入,从而造成潜在的 SQL 注入漏洞。

智能体可以建议改用参数化查询:

def get_user(user_id):
    query = "SELECT * FROM users WHERE id = ?"
    return db.execute(query, (user_id,))

具体的参数语法取决于数据库驱动。

重要的区别在于,智能体不只是标记一个潜在问题。它可以解释该问题为何重要,并建议具体的修复方案。

2. 技能:定义你的智能体如何审查代码

LLM 在收到提示时可以审查代码,但这并不意味着它会持续产出有用的反馈。

如果没有明确的指令,模型可能会过度关注格式、建议不必要的重构,或者遗漏重要问题。

技能有助于让审查更加一致。

OpenHands 提供了一个可复用的代码审查技能,你可以将其添加到智能体中:

/add-skill https://github.com/OpenHands/extensions/tree/main/skills/code-review

你可以使用以下方式手动调用该技能:

/codereview

例如:

/codereview

Review PR #42 in my-org/my-repo.

Focus on correctness, security, performance,
and reliability issues.

Only report findings supported by the code.
Prioritize actionable feedback over style suggestions.

当你想在自动化之前测试审查流程时,这很有用。

为你的仓库自定义技能

每个工程团队都有不同的标准。

后端服务可能优先考虑 API 兼容性、数据库性能和错误处理。前端应用可能关注可访问性、状态管理和渲染性能。

你可以创建针对特定仓库的指令来引导智能体。

例如:

# Code Review Guidelines

Review pull requests for correctness, security,
reliability, and maintainability.

## Priorities

1. Identify logic errors and unintended behavior.
2. Flag security vulnerabilities.
3. Check error handling and edge cases.
4. Identify potential performance regressions.
5. Evaluate test coverage.

## Rules

- Focus on meaningful issues.
- Do not flag formatting handled by linters.
- Do not suggest refactoring without a clear benefit.
- Explain why each issue matters.
- Reference the relevant file and line.
- Recommend a fix when possible.
- Do not invent issues to fill out the review.

你可以将这些准则作为仓库智能体配置的一部分来维护,或放在自定义的代码审查技能中,具体取决于你的 OpenHands 环境是如何配置的。这样,随着工程标准的演进,你可以更新审查标准。

你也可以让智能体直接在 Agent Canvas 中创建或修改该技能。

例如:

Update my code review skill to prioritize
API compatibility, database performance,
and error handling.

Avoid stylistic feedback unless it affects
correctness or maintainability.

Apply these instructions to future PR reviews.

这样就能更轻松地改进审查流程,而无需重建自动化。

3. 自动化:无需提示即可运行审查

自动化决定智能体何时运行。

对于代码审查而言,这通常意味着响应 GitHub 上的活动。

你可以配置该工作流,在拉取请求被打开、更新或被明确标记为待审查时进行审查。

执行模式取决于你在哪里运行 OpenHands。

如果你的智能体托管在线上,你可以使用 GitHub 事件集成,在事件发生时触发审查。

如果你在本地运行,你可以配置定时轮询,每五分钟检查一次新的拉取请求。

两种方法都使用相同的底层智能体和审查指令。

区别在于自动化如何检测新的工作。

这也意味着你可以先在本地进行试验,然后在希望持续运行时将工作流迁移到持久化环境。

测试你的代码审查智能体

在为你整个仓库启用自动审查之前,先在一个已有的拉取请求上测试智能体。

理想情况下,选择一个已经由开发者审查过的拉取请求。这为你评估其发现提供了基准。

向你的智能体提问:

Review PR #42 in Organization/RepoName using
our code review skill.

Identify correctness, security, and reliability
issues.

Only report findings supported by the code.
Include the severity, potential impact, and
recommended fix for each issue.

然后评估结果。

它是否识别出了真正的问题? 误报会迅速削弱开发者的信任。

它是否遗漏了重要问题? 将发现与原始的人工审查进行对比。

反馈是否具有可操作性? 好的审查应该解释哪里有问题、为什么重要,以及如何解决。

如果智能体产生太多噪音或忽略了重要问题,请更新你的技能并再次测试。

验证自动化

一旦你对审查质量感到满意,就测试自动化本身。

  1. 为一个测试仓库启用自动化。

  2. 打开或更新一个符合你触发条件的拉取请求。

  3. 确认自动化已启动。

  4. 检查智能体能否访问仓库并分析改动。

  5. 验证反馈是否出现在正确的 GitHub 拉取请求上。

  6. 检查自动化的执行历史记录中是否有错误。

如果自动化没有运行,请验证触发配置、GitHub 权限和智能体环境。

超越代码审查:自动化更多 SDLC 环节

代码审查是一个有用的起点,但同样的方法可以支持整个软件开发生命周期中的工作流。一旦你拥有了智能体、可复用的技能以及触发执行的方式,你就可以自动化其他工程任务。

  • 问题分类: 智能体分析传入的问题,对其进行分类,并识别复现问题所需的信息。

  • CI 失败修复: 智能体调查失败的检查,识别可能的原因,并提出修复方案。

  • 依赖维护: 智能体评估依赖更新,检查破坏性变更,并准备拉取请求。

  • 文档更新: 智能体识别需要更新文档的代码改动,并提出更新建议。

这些工作流可以共享技能、工具和集成,同时保持各自独立可配置。例如,一个调查 CI 失败的自动化可以提出修复方案并打开拉取请求,这又会触发一个单独的代码审查工作流。开发者仍需按照团队政策负责审查和批准改动。

目标不是取代开发者或取消人工监督,而是自动化重复性的工程工作,让开发者能够专注于需要其专业判断的决策。

用 OpenHands 构建你的下一个智能体

你无需构建自定义的智能体框架,也无需替换你已经在使用的工具即可开始。

OpenHands 提供了一个开源基础,用于运行 AI 编码智能体、定义可复用的技能以及构建自动化工程工作流。

从本地的 Agent Canvas 开始。试验模型和技能,连接你的仓库,并测试结果。一旦你的工作流产生有用的结果,就将其转变为在云端或你自己的基础设施上持续运行的自动化。

当你准备扩展到单个仓库之外时,OpenHands 为你提供了一条跨团队和环境运行和管理智能体的路径。

准备好开始了吗?探索 OpenHands Agent Canvas 和 自动化文档.

使用 OpenHands 和 Snowflake 为你的自有智能体框架后训练模型

[草稿] 如何用 OpenHands 搭建 AI 代码审查智能体

Recursive Flint 谈 OpenHands:开放模型与真实编码工作流

在我们的博客中获取有用的见解

来自 OpenHands 团队的见解和更新

订阅我们的新闻通讯,获取更新、活动和社区见解。

感谢你的提交!

构建自主软件开发的开源标准。

OpenHands 是安全、透明、模型无关的编码智能体的基础——赋能每个软件团队在完全掌控下更快构建。

加入社区加入社区© 2026 OpenHands - 保留所有权利隐私政策联系我们