AI代码审查为什么会重复评论?从一个 GitHub Issue 看 Agent 输出去重问题
Issue 背景
你有没有遇到过这种情况:
AI 帮你进行代码审查,一次生成了多条评论。
但是仔细查看后发现:
评论 A:
“这里可能存在空指针风险。”
评论 B:
“这里可能导致 NullPointerException。”
两条评论看起来不同,
实际上表达的是同一个问题。
对于开发者来说,重复提醒不仅增加阅读成本,
还可能让真正重要的问题被忽略。
最近我看到 GitHub 上一个开源项目的 Issue,
讨论的正是 AI Agent 输出近重复评论的问题。
最近我看到一个 GitHub Issue,它讨论的正是 Agent 输出中出现近重复评论的问题。
GitHub 上 alibaba/open-code-review 仓库的 Issue #709 标题为“Near-duplicate comments in json output for agent”,原始地址:https://github.com/alibaba/open-code-review/issues/709
什么是重复评论?
简单理解:
AI Code Review 输出:
评论1:
这里可能存在空指针风险。
评论2:
这个地方可能导致 NullPointerException。
两句话表达的是同一个问题。
如果系统不知道它们相似,
开发者就会看到重复提醒。
已知现象与边界
“近重复”可能指文本相似,也可能指含义接近。输出中可能存在文本或含义接近的评论,但这些评论是否针对同一缺陷,仍需结合复现样例确认。它是否增加阅读成本、造成问题数量误判,也只是可能的影响,不能当作该 Issue 已证实的结果。
可能原因,尚未验证
如果该项目采用常见的模型生成、解析和聚合流程,重复可能出现在多个阶段;现有材料尚不能确认其实际实现。一种可能原因是模型在单次响应中给出相近表述;另一种可能是多轮分析重复覆盖同一区域;也可能是结果聚合时没有合适的幂等约束。以上均为假设,仍需结合源码验证。
为什么 AI Agent 容易产生重复评论?
一种常见情况是:
AI Agent 并不是一次完成全部工作。
它可能经历:
- 分析代码
- 生成问题
- 整理 JSON 输出
- 合并多个分析结果
如果不同阶段没有统一规则,
同一个问题可能被记录多次。
例如:
第一次分析:
发现 user 参数可能为空。
第二次分析:
发现 user 访问时可能出现空指针。
对于系统来说,这是两条结果;
对于开发者来说,可能只是一个问题。
候选解决思路
可以先区分精确重复与近重复。对精确重复,可考虑规范空白、换行和路径表示,再生成稳定键。对近重复,应先缩小比较范围,再评估文本相似度,避免只因措辞相近就误删不同问题。
若项目输出包含文件路径、代码位置、问题类型和评论正文,可用这些假设字段限定候选范围。例如,只比较同一文件、相邻位置且类型相同的评论。阈值不应预设为“最佳值”,而应通过真实样本评估误删和漏删。
在确认项目处理链路后,可评估是否在结构化字段完成解析和校验之后、输出之前执行去重。这只是候选接入点,不代表仓库已有对应阶段,也不代表方案已经适配。
示例代码,仅展示思路。
comments = get_comments()
groups = group_by(
file_path,
line_number
)
for group in groups:
remove_exact_duplicate(group)
check_similarity(group)
验证清单
以下均是待执行的验证设计,不是已完成测试:
- 获取 Issue 正文、评论和最小复现输入。
- 检查实际 JSON 字段、生成入口及聚合逻辑。
- 验证完全相同的评论能否稳定识别。
- 检查不同文件中的相似评论是否被误删。
- 检查同一位置的不同风险是否都能保留。
- 用真实样本评估阈值,并确认输出是否需要稳定排序。
总结
AI Code Review 的目标不是生成更多评论,
而是帮助开发者更快发现真正重要的问题。
当 Agent 输出出现重复结果时,
解决方向通常不是简单删除一条评论,
而是理解整个生成链路:
- 评论在哪里产生?
- 多个结果如何合并?
- 如何判断两个问题是否真的相同?
这个 GitHub Issue 提醒我们:
AI Agent 的效果不仅取决于模型能力,
也取决于后面的工程设计。
好的 Agent,需要的不只是生成能力,
还需要结果整理和质量控制能力。
更多推荐


所有评论(0)