设想一下,如果您的代码能够自动审查其他代码并从中赚取报酬,这听起来是不是很酷?一位开发者正是这样做的:他创建了一个AI代码审查Agent,能够自主审查GitHub上的Pull Request(PR),并以此赢得了加密货币形式的赏金。
本文将深入探讨这款名为claude-review-agent的CLI工具的构建过程。这款工具能够获取GitHub PR的差异(diff),生成结构化的代码审查意见,并成功为开发者赢得了150美元的赏金。
解决痛点:开源维护者的困境
当前,开源项目的维护者们往往不堪重负。大量的PR堆积如山,代码审查耗时数小时,贡献者们也常常需要等待数天才能得到反馈。那么,如果AI能够承担起第一轮的初步审查工作,岂不是能极大缓解这一压力?
DePIN区块链项目RustChain就曾发布了一项悬赏任务,目标正是为此:
“构建一个CLI工具,能够审查PR并发布结构化评论。”
该任务的奖励是150美元的RTC代币。
解决方案:claude-review-agent
开发者构建了一个基于Node.js的CLI工具,其核心功能包括:
- 通过GitHub API获取PR的差异(diff)。
- 利用Claude AI生成结构化的代码审查意见。
- 直接在PR上发布评论。
- 输出易于阅读的Markdown格式审查报告。
系统架构
整个系统架构清晰明了:
- 首先,
claude-review.js工具通过GitHub API获取指定PR的差异内容。 - 接着,这些差异内容被发送至Claude AI进行分析,生成审查报告。
- 最终,生成的Markdown格式审查报告可以被发布到PR评论区。
实现步骤详解
第一步:解析PR URL
工具首先需要从GitHub PR的URL中提取关键信息,包括仓库所有者(owner)、仓库名称(repo)和PR编号(prNumber)。这通过一个简单的正则表达式匹配函数实现,确保URL格式正确并能准确提取所需参数。
第二步:获取PR差异(Diff)
在获取了PR的关键信息后,工具会利用GitHub API来获取PR的完整差异内容。这通过发送一个带有特定认证头(Authorization: Bearer [token])和接受头(Accept: application/vnd.github.v3.diff)的curl请求来完成。application/vnd.github.v3.diff这个接受头指示GitHub返回PR的统一差异格式,这是进行代码审查的基础。
第三步:生成审查报告
这是Claude AI发挥核心作用的环节。工具将获取到的PR差异内容构建成一个结构化的提示(prompt),发送给Claude AI。这个提示会明确要求Claude AI充当“专家代码审查员”,并输出包含以下几个部分的报告:
- 总结(Summary): 2-3句话概述变更。
- 风险(Risks): 列出潜在问题或担忧(项目符号列表)。
- 建议(Suggestions): 改进建议(项目符号列表)。
- 信心度(Confidence): 对审查结果的信心评级:高/中/低。
Claude AI会根据提供的差异内容,结合其强大的代码理解能力,生成符合上述结构的审查报告。开发者可以进一步将这份报告格式化并发布到GitHub PR中。