Claude Opus 4.6与GPT-5.3 Codex Swift对决测试

两家顶级AI模型同日发布,Reddit用户使用Swift并发代码审查对决,Claude以深度推理胜出,Codex凭速度优势立足,双模型互补策略成为开发者最优选择。

 顶级AI模型Swift代码审查对决实录

Anthropic和OpenAI在同一天前后脚发布了新模型,Claude Opus 4.6和Codex 5.3相隔几分钟就上线了。一位开发者刚好两个模型都接入了同一个代码库,于是灵机一动:干脆让它们打一架!这场对决选在了Swift并发编程这个硬骨头上,因为Swift的并发模型出了名的难搞,两个模型在这个领域都吃过瘪。测试虽然只跑了一个代码库,样本量小得可怜,但过程相当精彩,结果也颇具启发性。

测试舞台搭建

战场选在一个macOS应用上,四千多行Swift代码,核心功能是用摄像头做实时计算机视觉处理。最棘手的地方在于并发架构设计:要把GCD(Grand Central Dispatch,苹果的老派并发工具)、Swift的actor(新派的并发安全机制)和MainActor(专门伺候UI更新的)这三股力量拧成一股绳,搭建一条实时数据处理流水线。代码库里还塞了点CoreML模型,据说是Claude Code一次就搞定的,不过这次对决没考这部分。

测试任务分成两大块:第一部分叫"架构冷读",要求模型梳理数据流向、识别并发模型、找出最危险的边界、分析状态机的边缘情况。第二部分是"代码审查",要审三个文件:五百行的摄像头管理器、二百二十八行的检测服务、二百一十三行的会话管理器,目标是揪出bug、竞态条件和潜在风险。

对决规则设定

Claude Opus 4.6通过Claude Code命令行工具跑在特性分支上,开了高努力模式。GPT-5.3 Codex通过全新的Codex Mac应用跑在另一个分支,同样开高模式。Codex当时还没开放命令行接口,所以只能用图形界面。两个模型拿到完全一样的需求文档、同样的初始提示、同样的代码库,完全独立运行,互不干扰。两个模型都能访问项目文档,包括CLAUDE.md和规则文件,模拟的是"新人第一天入职"的场景,不是完全冷启动。

数据对比一目了然

Claude Opus 4.6花了十分钟完成任务,GPT-5.3 Codex只用了四分十四秒。第二部分发现的问题数量上,Claude找到十九个,Codex找到十二个。两个模型都没有幻觉出假问题,这点相当难得。速度上Codex快了一倍多,但深度上Claude明显更胜一筹。

架构理解双双满分

第一部分考的是架构理解,两个模型都交出了满分答卷。它们准确梳理了从硬件摄像头采集到最终操作系统响应的十步数据管道:GCD负责AVFoundation的底层操作,数据流入AsyncStream,经过detached Task中转,进入actor处理,再跳到MainActor做UI协调,最后回到actor执行系统动作。

两个模型都识别出了三种并发策略:GCD串行队列伺候AVFoundation、Swift actor保护可变服务状态、MainActor打理UI观察相关的协调工作。最危险的边界也被双双锁定:一个CVPixelBuffer被包装成unchecked Sendable,从GCD世界跨入async/await世界,这里最容易出线程安全问题。

但Claude在深度上拉开了差距。它额外输出了一份线程模型汇总表,注意到了Vision处理路径上的autoreleasepool细节,还揪出一个"荣誉提名"级别的次要风险:某个属性被多个并发上下文访问却没有任何同步机制。Codex的答案准确但压缩,像是一份精简版报告。

状态机分析见真章

第一部分第四小节考状态机分析,要求模型追踪三种场景在一个四状态会话生命周期里的表现,特别关注回调在异步挂起点触发时会发生什么。

两个模型三种场景全对。Codex还贡献了一个真正犀利的洞察:SessionManager和DetectionService都挂在MainActor下,所以从await acquire返回到guard表达式求值之间,不存在独立的交错执行窗口。这是正确的MainActor重入推理,相当漂亮。

但Claude走得更远。它把其中一个场景拆成子情况分析,还主动发现了第四个边缘情况:如果在startSession执行await期间调用stopSession,两条路径都会调用release(for: .session),导致重复释放。现在代码是安全的,因为Set.remove天生幂等,但Claude旗帜鲜明地指出这是代码异味,解释了为什么重构时可能炸雷。这个发现在第二部分又被独立揪出来一次,证明这是跨代码库的架构推理,不是文件级别的模式匹配。

代码审查数量与质量

第二部分Claude找到十九个问题:三个高危、九个中等、七个低危。
Codex找到十二个:两个高危、五个中等、五个低危。

数量差异不是重点,重点是各自抓到了什么对方漏掉的东西。

Codex的独家高光时刻:handleFailure方法在检测服务里会把状态切到.failed并触发回调,但没确保摄像头资源被 teardown。如果数据流意外中断而摄像头不处于失败状态,资源就会被一直占着。Claude完全漏掉了这个点,这是个 legitimate 的高危问题。

Claude的独家高光时刻:前面提到的重复释放问题,加上framesContinuation(一个AsyncStream continuation)被MainActor写入却被GCD队列读取和deinit,完全没有同步保护。Claude还抓到一个deinit线程安全问题、一个启动失败时的孤儿continuation、一个失败回调的访问控制缺失。

两个模型对重复释放的严重程度评级打架了。Claude标高危,Codex标低危。开发者站Claude这边:现在安全只是因为一个没文档化的不变式在撑着,这种玩意儿 refactoring 时最容易背刺。

Claude还表演了一波自我修正:最初把某个发现标成高危,然后在输出里自己推演了一遍交错执行情况,主动降级成中等,写道"代码是正确的但交错情况不直观,值得加个注释"。大多数AI模型要么自信地胡说八道,要么对外部压力秒怂改口。一个模型自己跟自己辩论并修正立场,这操作相当罕见。

Codex评审Claude的彩蛋环节

开发者让Codex评审两个模型的输出。Codex的评价相当老辣:如果追求评委式的深度,选Claude。如果追求精准、合规、简洁可执行的审查,选Codex。终极理想形态是Claude的深度配Codex的严格 severity 纪律和 timing 格式。Codex还吐槽Claude的自我修正读起来像"内部一致性"问题,而非智力诚实。开发者不同意:展示思考过程是feature不是bug。

最终裁决与使用建议

Claude赢在深度,Codex赢在速度,两个都没有幻觉。

需要快速PR前检查时用Codex,百分之八十的价值只要百分之四十的时间。实际差距也就六分钟,大概一趟厕所的功夫。大代码库上的表现留给读者自行测试。

真正的 headline 是:两个模型在发布当天就能正确推理Swift actor隔离、MainActor重入、GCD到async的桥接、unchecked Sendable的安全契约。

一年前这会让人惊讶,今天成了入场门槛 table stakes。开发者依然坚信双管齐下的价值最大。原始模型能力似乎每周都在变,谁也没把谁甩开。但它们提供不同的视角,新鲜眼睛的价值胜过单模型六天里的威力。

开发者打算继续用Max级别的Claude计划配二十美元的Codex计划。Claude的低价计划对工作流限制太多,Codex即使二十美元档位也感觉相当慷慨,很少碰到上限。坦白说选Claude当主力几乎完全是个人偏好,喜欢它的速度、工具链、插件灵活性,甚至个性。你的 mileage 可能不同, 无论哪个工具让你最爽。

关于这位开发者

这位开发者是个实战派,日常用Claude Code当主力开发工具,Codex通过MCP接入做审查 pass,有时也用命令行版本,取决于分析深度需求、心情和月相。不隶属任何一家公司,测试设计尽力客观,但承认可能存在无意识偏见,毕竟自己写的 spec、自己维护的代码库。两个模型的完整输出都公开了:

链接

核心观点提炼

顶级AI模型在Swift并发领域的对决揭示了一个趋势:深度推理与快速执行正在形成互补生态。

Claude Opus 4.6展现了跨文件架构推理的能力,能发现设计层面的隐患。
GPT-5.3 Codex则在速度上碾压,四分钟完成十分钟的任务,且没有牺牲准确性。

两个模型都证明了它们理解Swift最棘手的并发概念,这标志着AI辅助编程进入了一个新阶段——不再是简单的代码补全,而是能够进行系统级分析和风险评估。