1. 项目背景与核心发现
最近我在处理一个遗留的C++音视频基础库时,进行了一次有趣的实验:同时使用Claude Opus 4.6和GPT-5.3-Codex对26个模块进行代码审计。结果令人震惊——两个AI只在10个模块上达成共识,一致率仅为38.5%。
这个项目是一个积累了十几年的C++代码库,包含几万个源文件,是典型的"老同事离职后无人敢动"的遗产代码。我使用repo-scan工具的双Agent扫描功能,让两个AI模型独立审计同一批代码。
Claude倾向于从"功能覆盖度"角度评估代码,认为13个模块是"核心基石";而Codex则更关注"实现质量",只认可2个模块达到核心标准。更关键的是,Codex独立发现了13个Claude完全漏掉的严重Bug。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 审计方法与评估体系
2.1 双Agent审计流程
我设计了一个严格的交叉验证流程:
- Agent-1(Claude Opus 4.6)执行全量扫描,逐模块分析代码结构、依赖关系和质量问题
- Agent-2(GPT-5.3-Codex)在不查看Agent-1结论的前提下,对相同模块进行独立审计
- 使用自动化工具对比两个Agent的输出结果
2.2 四级判决体系
为了量化评估结果,我建立了四级质量评估标准:
| 判决等级 | 含义 | 建议行动 |
|---|---|---|
| 🟢 核心基石 | 质量可靠 | 直接保留,作为新架构基础 |
| 🔵 提纯合并 | 有价值但冗余 | 提取核心逻辑,合并同类模块 |
| 🟡 重塑提取 | 部分可用 | 大幅改造,仅保留算法/协议层 |
| 🔴 彻底淘汰 | 不值得修 | 删除重来,用现代方案替代 |
3. 审计结果深度分析
3.1 分歧模块统计
两个AI的评估结果差异显著:
| 维度 | Claude判定 | Codex判定 |
|---|---|---|
| 评为"核心基石"的模块数 | 13 | 2 |
| 评为"提纯合并"的模块数 | 11 | 16 |
| 评为"重塑提取"的模块数 | 2 | 8 |
最令人惊讶的是,所有分歧中Codex的判决都比Claude更严格,无一例外。
3.2 Codex独立发现的严重问题
Codex发现了13个Claude完全遗漏的关键问题,以下是几个典型案例:
-
mp4_parser模块:
- 问题:宽高字段写入错误,跳过了4个字节
- 后果:生成的MP4文件在严格解析时会显示错误宽高
- Claude评价:"MP4封装模块功能完整"
-
video_encrypt模块:
- 问题:使用简单的4字节XOR"加密",十行Python脚本即可破解
- 后果:安全形同虚设,且存在空指针解引用风险
- Claude评价:"视频加密模块,功能可用,建议优化"
-
protocol_gb28181模块:
- 问题:Server和Client代码60%是复制粘贴,典型的God Class
- 后果:修改一处可能引发多处回归Bug
- Claude评价:"协议支持完善,是核心基石"
4. 模型行为差异解析
4.1 Claude的审计特点
Claude的审计风格类似于项目经理:
- 关注功能覆盖度:接口是否声明?功能是否实现?能否编译运行?
- 优点:快速提供模块全景图,适合快速了解项目全局
- 缺点:容易忽略实现细节中的隐患
4.2 Codex的审计特点
Codex的审计风格类似于严格的Code Review专家:
- 关注实现质量:边界条件、资源管理、API废弃状态等
- 优点:深入挖掘潜在问题,发现隐藏Bug
- 缺点:可能过度关注细节,影响整体评估效率
5. 实用建议与最佳实践
5.1 多模型交叉验证策略
基于这次实验,我总结出以下实践建议:
-
项目初探阶段:
- 使用Claude快速建立项目全景认知
- 重点关注模块功能和依赖关系
-
深度审计阶段:
- 使用Codex进行细节审查
- 特别关注边界条件、资源管理和安全漏洞
-
分歧处理原则:
- 两个AI达成一致的模块:可信度较高
- 存在分歧的模块:必须人工复核
- 分歧点往往就是最需要关注的代码区域
5.2 工具选择建议
| 使用场景 | 推荐工具 | 原因 |
|---|---|---|
| 快速了解新项目 | Claude | 功能覆盖视角,快速产出全景图 |
| 生产代码审查 | Codex | 实现质量视角,深入挖掘隐患 |
| 关键模块审计 | 双模型交叉 | 互补视角,降低漏检风险 |
6. 经验教训与反思
这次实验给我带来了几个重要启示:
- 不要依赖单一AI的审计结论:特别是当它告诉你"一切正常"时
- 跑分不等于实际能力:SWE-bench高分不意味着适合你的具体任务
- 模型特性决定适用场景:Claude适合宏观把握,Codex擅长微观审查
- 人工复核不可替代:AI发现的问题需要验证,AI未发现的问题更需要警惕
在实际操作中,我现在会同时运行两个模型的审计,然后:
- 优先处理两个模型都标记的问题
- 仔细审查存在分歧的模块
- 对关键模块进行人工代码走查
这种组合策略虽然花费更多时间,但显著提高了代码审计的可靠性。对于重要的遗产代码重构,这种投入是非常值得的。
关键提示:AI代码审计工具正在快速发展,但目前的模型仍然会遗漏某些类型的问题。建议将AI审计作为辅助手段,而非完全替代人工代码审查。
