当前位置:首页 > 文章 > 正文内容

Claude 4.7 vs DeepSeek V4:我让它们审了同一个项目的20个PR

廖万里4小时前文章0

Claude 4.7 vs DeepSeek V4:我让它们审了同一个项目的20个PR

我们团队的 PR 一直靠人工审查,效率低的要命——一个超过 500 行改动的 PR,Reviewer 至少花 20 分钟,还经常漏掉边界情况。上个月我决定试试用 AI 做第一轮粗筛,分别部署了 Claude 4.7 和 DeepSeek V4 两个代码审查机器人,让它们同时审查了 20 个历史 PR,然后把两个模型的结果和人工审查做了对比。结果比我预想的有意思得多。

实验怎么做的

我从项目 Git 历史里拉了 20 个已经合并的 PR,覆盖了不同复杂度:

PR 类型数量平均变更行数涉及文件数
新功能开发8 个380 行5-12 个
Bug 修复6 个85 行1-3 个
重构4 个520 行8-20 个
依赖升级2 个45 行1-2 个

每个 PR 的审查 prompt 是完全一样的:

你是一个资深代码审查者。请审查以下 Git diff,从以下几个维度给出反馈:1) 逻辑错误或潜在 Bug;2) 性能问题;3) 安全漏洞;4) 代码风格和可维护性问题;5) 测试覆盖建议。对每个发现标注严重程度(严重/中等/轻微)。

最终对比的维度有三个:Bug 发现率、误报率、审查深度。

Bug 发现率:Claude 更准,但 DeepSeek 也不差

20 个 PR 里,人工审查之前一共发现了 37 个问题(包括逻辑错误、性能问题、安全隐患等)。我把人工审查的结果作为基准线,对比两个模型的输出。

Claude 4.7 的表现:

  • 发现了 32 个问题,其中 28 个与人工审查一致
  • 4 个是人工没发现但确实存在的问题(事后验证确认的)
  • 漏掉了 9 个——其中有 6 个是"代码风格"类的问题(比如变量命名),3 个是弱类型的边界处理

DeepSeek V4 的表现:

  • 发现了 35 个问题,其中 24 个与人工审查一致
  • 5 个是人工没发现的新问题
  • 漏掉了 13 个——主要集中在"安全漏洞"和"并发问题"两个维度

用数字说话:

指标人工审查Claude 4.7DeepSeek V4
发现问题总数373235
召回率(vs 人工基准)75.7%64.9%
新发现问题45
漏报数913

Claude 的召回率比 DeepSeek 高了 10 个百分点——这个差距主要来自安全漏洞和并发问题的识别。Claude 在这两个维度的表现明显更好。但 DeepSeek 在代码风格和可维护性建议上更细致,它会指出"这个函数参数太多建议重构"这类问题。

误报率:差距比我想象的大

误报是我最关心的指标。AI 审查如果误报太多,Reviewer 会对它失去信任,最后干脆不看 AI 的意见。

Claude 4.7 的额外输出(不在人工基准中的发现)有 8 条,其中 4 条被确认为真实问题(即前面说的"新发现"),另外 2 条属于"技术上不算错但没必要改"的建议,真正的误报只有 2 条。误报率约 25%。

DeepSeek V4 的额外输出有 16 条,5 条是真实问题,6 条是过度谨慎的建议,5 条是明显误报——比如把 Python 3.11 的 match-case 语法当成了语法错误、把 SQLAlchemy 的 lazy loading 误判为 N+1 查询。误报率约 45%。

举一个典型的误报例子。代码里有这样一段:

match error.code:
    case 400:
        return BadRequestResponse(error)
    case 401:
        return UnauthorizedResponse(error)
    case _:
        return InternalErrorResponse(error)

DeepSeek 给出的意见是:"使用了未定义的变量 error.code,建议改为 if-elif 结构"。它没识别出 match-case 是 Python 3.10 引入的模式匹配语法,把它当成了语法错误。

这种误报虽然不严重,但如果一个 PR 里出现三四次,Reviewer 很快就会开始跳过 AI 的评论——这正是我们想避免的。

审查深度:各有所长

除了数Bug,我还看了一下两个模型在"深度分析"上的差异。给几个例子:

Claude 擅长的:

  • 跨文件影响分析。有一个 PR 改了一个工具函数的默认参数值,Claude 不仅指出了参数变更本身,还追踪了项目中所有调用这个函数的地方,列出了 3 处会受影响但可能没被测到的调用点。DeepSeek 只指出了参数变更本身。
  • 并发安全的推断。有一个 PR 在多线程环境下操作了一个共享字典,Claude 明确指出"这个 dict 在多线程下不是线程安全的,建议用 Queue 或加锁"。DeepSeek 没有提到这个问题。

DeepSeek 擅长的:

  • 代码风格的一致性。它发现了一个文件中混用了 f-string 和 .format() 的问题,还指出了导入顺序不符合 PEP8 的情况。这些不影响功能但能提升代码质量。
  • 中文注释的审查。项目里有中文注释和文档字符串,DeepSeek 能准确判断注释和代码逻辑是否匹配,甚至发现了 2 处注释过时的情况。Claude 对中文注释的理解相对弱一些。

成本对比

20 个 PR 的审查过程中,两个模型各自的 Token 消耗和花费:

Claude 4.7DeepSeek V4
总调用次数40(每个PR两轮)40
总输入 Token约 210 万约 210 万
总输出 Token约 28 万约 32 万
官方价($)$52.5$1.8
聚合平台价(¥)约 ¥2.6约 ¥0.3

成本数据来自 bblabu 的美元额度兑换模式——大概 5 分钱换 1 美元 API 额度,按各模型的官方标准价格计费。Claude 4.7 因为是高倍率模型(官方输出单价 $75/百万Token),单次审查的成本明显高于 DeepSeek。但即使是最贵的 Claude,审完 20 个 PR 也只要两块六。

结论:不是替代,是分工

做完这个对比,我最大的感受是:这两个模型不是"谁替代谁"的关系,而是适合不同的任务分工。

Claude 4.7 在安全审查和并发分析上的深度让人印象深刻,漏报率更低、误报也更少。如果你的项目对安全性要求高、或者涉及多线程/分布式场景,Claude 值得那多出来的成本。

DeepSeek V4 的优势在于性价比和中文理解。审查 20 个 PR 只要三毛钱,而且对中文注释、中文变量命名的敏感度明显更高。如果你的团队全是中文开发者、代码里中文注释很多,DeepSeek 可能比 Claude 更合适。

我现在的方案是这样的——日常 PR 用 DeepSeek 做快速扫查(成本低、速度快),关键模块的 PR、涉及安全或并发改动的 PR 再用 Claude 做深度审查。两个模型互补,既控制成本又保证质量。

如果你也想试试,在 bblabu 上注册一个账号,创建两个令牌,一个绑 Claude 4.7、一个绑 DeepSeek V4,在 CI 脚本里根据 PR 的标签自动选择用哪个模型。整套方案搭起来不到半小时,以后每个 PR 都多了一层自动审查。


相关资源:

实验数据基于 2026 年 5 月的一次性对比测试。不同项目类型、不同 PR 复杂度下的结果会有差异。

本文链接:https://www.kkkliao.cn/?id=REPLACE_ID 转载需授权!

本文链接:https://www.kkkliao.cn/?id=3999 转载需授权!

分享到:

版权声明:本文由廖万里的博客发布,如需转载请注明出处。


“Claude 4.7 vs DeepSeek V4:我让它们审了同一个项目的20个PR” 的相关文章

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。