1. 项目背景与核心发现
最近我在处理一个遗留的C++音视频基础库项目时,尝试了让Claude Opus 4.6和GPT-5.3-Codex两个AI模型同时进行代码审计。这个项目包含26个模块,几万个源文件,是典型的"老同事走了新同事不敢动"的遗产代码。
审计结果令人震惊:两个AI模型仅在10个模块上达成共识,一致率仅为38.5%。更值得注意的是,Claude认为13个模块是"核心基石、质量过关",而Codex只认可其中2个。Codex还独立发现了13个Claude完全漏掉的关键Bug。
2. 审计方法与评级体系
2.1 双Agent审计流程
我使用了repo-scan工具的交叉扫描功能进行审计:
- Agent-1:Claude Opus 4.6执行全量扫描,逐模块分析代码结构、依赖关系和质量问题
- Agent-2:GPT-5.3-Codex执行独立验证,在不看Agent-1结论的前提下对同一批模块做独立审计
2.2 四级判决体系
为了量化评估结果,我建立了四级判决体系:
| 判决等级 | 含义 | 建议行动 |
|---|---|---|
| 🟢 核心基石 | 质量可靠 | 直接保留,作为新架构基础 |
| 🔵 提纯合并 | 有价值但冗余 | 提取核心逻辑,合并同类模块 |
| 🟡 重塑提取 | 部分可用 | 大幅改造,仅保留算法/协议层 |
| 🔴 彻底淘汰 | 不值得修 | 删除重来,用现代方案替代 |
3. 审计结果深度分析
3.1 分歧模块特征
在16个存在分歧的模块中,Codex的判决始终比Claude更严格。具体表现为:
- Claude评为"核心基石"的13个模块中,Codex只认可2个
- Claude评为"提纯合并"的11个模块中,Codex有9个降级为"重塑提取"
- 两个AI都认为需要"彻底淘汰"的模块数量一致
3.2 典型分歧案例
-
mp4_parser模块:
- Claude评价:"MP4封装模块功能完整"
- Codex发现:宽高字段写入错误,指针跳转错误导致低16位被覆盖
-
video_encrypt模块:
- Claude评价:"视频加密模块,功能可用,建议优化"
- Codex发现:加密逻辑仅为4字节XOR,存在空指针解引用风险
-
protocol_gb28181模块:
- Claude评价:"协议支持完善,是核心基石"
- Codex发现:Server和Client代码60%是复制粘贴,存在God Class问题
4. 模型行为差异解析
4.1 Claude的审计特点
Claude的审计风格类似于项目经理:
- 关注功能覆盖度:检查接口声明、实现情况和基本运行能力
- 倾向于给出积极评价
- 生成报告结构清晰,易于理解
- 适合快速建立项目全局认知
4.2 Codex的审计特点
Codex的审计风格类似于严格的Code Review专家:
- 关注实现质量:检查边界条件、资源管理和API兼容性
- 倾向于发现潜在问题
- 报告技术细节丰富
- 适合发现隐藏的代码缺陷
5. 关键发现与经验总结
5.1 重要发现
- Codex独立发现的13个关键问题全部经人工验证属实
- 两个模型在"功能覆盖"和"实现质量"维度存在明显视角差异
- 仅使用单一模型审计会遗漏重要问题
5.2 实践建议
- 对于重要代码审计,建议采用多模型交叉验证
- 模型分歧点往往是代码中最需要人工审查的部分
- 不要过度依赖模型的"无问题"结论
- 根据审计目的选择合适的模型组合
6. 工具选择与使用策略
6.1 模型特性对比
| 维度 | Claude Code | Codex CLI |
|---|---|---|
| 基础订阅 | $20/月 | $20/月 |
| 默认模型 | Opus 4.6 | GPT-5.4 Thinking |
| 上下文窗口 | 200K | 256K |
| 审计风格 | 功能导向 | 质量导向 |
6.2 使用场景推荐
- 快速了解项目全局:优先使用Claude
- 生产环境代码审查:优先使用Codex
- 关键模块审计:同时使用两个模型
- 存在分歧的模块:必须人工复核
7. 实际操作中的注意事项
- 确保审计环境一致:相同的代码版本、相同的上下文提示
- 给模型明确的审计指引:说明审计的重点和标准
- 记录完整的审计过程:便于后续分析和验证
- 对关键分歧点进行人工验证:不要完全依赖AI判断
通过这次实践,我深刻认识到AI代码审计工具的局限性以及多模型交叉验证的重要性。在实际工作中,我现在会同时使用Claude和Codex进行代码审查,并将它们的分歧点作为重点人工审查区域。这种工作方式虽然增加了少量成本,但显著提高了代码审计的可靠性。
