让 Qwen 当 Claude Code 的副驾驶:三组对照实验

9 阅读6分钟

不是"哪个模型更强",而是"它们漏的东西不一样"。


我想搞清楚一件事

在多模型协作中,副驾驶到底是在帮忙还是在添乱?回答这个问题不能靠直觉。

我设计了三组对照实验:同一段代码,两组审查——Claude 独立一次,Claude+Qwen 协同一次。比较结果,看 Qwen 是否能稳定贡献 Claude 遗漏的东西,同时控制噪音。


实验设计

测试用例:三个不同复杂度级别的 Python 头像上传服务。代码由我自己编写,在写的时候刻意植入了我知道的 bug,涵盖了安全、并发、数据一致性、运维四个维度。

这一点需要坦白:测试用例不是从真实生产环境取样的,而是我构造的。这意味着 bug 的分布可能带有我的个人偏见。不过实验的核心问题——"两个模型的发现是否互补"——并不依赖测试用例的来源,因为实验对比的是两组审查之间的差异,而非代码本身的好坏。

两个审查通道:

通道方式
Claude Solo我独立阅读代码,列出全部发现
Claude + Qwen我先独立分析,然后通过 ask_qwen.py -M review 调用 Qwen(qwen3.6-plus),它的回复并入我的分析,标记哪些是它独自发现的

控制变量:

  • 两次审查使用完全相同的代码
  • Qwen 使用 -M review 模式(压缩输出:按严重度分段,≤200 词)
  • Qwen 的系统提示词定向到特定角色(SRE 视角 / 安全工程师视角)

测试用例

V1:基础版(90 行)

一个最简的 Flask 上传接口——没有中间件、没有数据库、没有异步任务。Flask dev server 兜底。

V2:生产版(220 行)

加入了 SQLAlchemy、auth 中间件、健康检查、连接池配置。模拟了一个称职工程师写的服务。

V3:复杂生产版(223 行)

在 V2 基础上进一步加入 Celery 异步任务队列、Redis 缓存层、Prometheus metrics、存储配额管理。看起来像一个真实的生产服务。

完整代码见 GitHub


结果

V1 (基础)V2 (生产)V3 (复杂生产)
Claude Solo 发现4712
Qwen 额外发现+3+2+2
协作总发现7914
提升幅度+75%+29%+17%
Qwen 噪音(无价值输出)000

Qwen 漏掉了什么 Claude 抓到的:

在 V3 中,Claude 发现了 query_avatar_from_db 是一个返回 None 的桩函数——这意味着 Redis 是唯一的数据存储,一旦重启,所有头像元数据永久丢失。这是整个实验中最致命的 bug,但 Qwen 完全没提。Qwen 的注意力集中在安全漏洞和网络层交互上(路径穿越、CDN 速率限制、polyglot 文件攻击),而 Claude 的注意力涵盖了数据层的设计缺陷。

Claude 漏掉了什么 Qwen 抓到的:

三组实验中,Qwen 持续发现了两类 Claude 容易漏的东西:

  1. 系统交互的边际效应 — CDN purge 同步阻塞请求路径(V2)、每次上传对用户目录做通配符 purge 导致 CDN 速率限制(V3)
  2. 安全纵深防御的细节 — magic bytes 校验缺失(V3)、cache-busting 参数缺失(V2)

Qwen 额外发现详览

测试Qwen 发现Claude 为什么漏了
V1磁盘无清理逻辑会满注意力在代码正确性上
V1compute_hash 二次读文件阻塞 I/O同上
V1缺少 DB 更新导致前端不知道新 URL注意力在 CDN purge 的单点失败上
V2CDN purge 在请求路径中同步阻塞致命漏判——注意力在"purge 有没有执行"而非"purge 在哪里执行"
V2URL 缺少 cache-busting 参数对 CDN 缓存传播机制不够敏感
V3每次上传对整目录通配符 purge = CDN 自 Dos注意力在单个请求的正确性而非全局副作用
V3无 magic bytes 校验 = polyglot 文件可绕过对文件上传安全细节的纵深防御意识不足

噪音控制

多模型协作的真实风险不是"副驾驶不够聪明",而是"副驾驶话太多"。如果每次调用 Qwen 都返回 500 字客套话+免责声明+重复内容,那上下文会被迅速污染。

-M review 压缩模式在三组实验中始终将 Qwen 的输出控制在 150-200 词内,零寒暄、零免责声明、零"希望这对你有帮助"。

这比发现数字更重要——信噪比如果不守住,协作就是负收益。


坦白交代——这个实验的局限

  1. 测试用例是我自己写的:这不可避免地引入了我的个人偏见。我在写代码时知道的 bug,可能在分析时更容易发现。更严谨的实验应该使用第三方代码(如开源项目中的历史 bug 修复 commit)。
  2. 不是盲测:我在调用 Qwen 之前已经完成了自己的分析,这会影响我对 Qwen 输出的评价。更严谨的设计应该是先调 Qwen 再看代码,或者请第三方评审。
  3. 样本量太小:三组测试远不足以得出统计结论。这是一个定性探索,不是定量研究。
  4. Claude 和我不是同一个实体:我的"独立分析"本质上是人类+Claude 的混合,Qwen 的加入是在这个基础上叠加了一层。这里没有纯净的"A/B 测试"。

尽管如此,数据仍然指向一个清晰的方向

三组实验中,Qwen 每次都能额外贡献 2-3 个 Claude 没发现的问题,同时零噪音。

两个模型的注意力分布有明显的互补特征:

  • Claude 的强项:数据一致性、代码逻辑正确性、框架使用方式
  • Qwen 的强项:系统间的边际效应、网络安全细节、外部依赖的行为边界

如果你在做复杂系统的代码审查,让另一个模型看一眼是值得的。  它不一定会比你看得更深,但它几乎一定会看到你看不到的角度。


这套工具怎么用

qwen-proxy 提供了基础设施:

  • 反代服务 (server.py):将 Qwen 内部 API 转译为 OpenAI 兼容协议
  • CLI 工具 (ask_qwen.py):6 种压缩预设,控制副驾驶输出
  • 决策框架 (Skill):何时该调、何时跳过、如何后处理
# 快速协作
./venv/bin/python ask_qwen.py -M review "$(cat your_code.py)"

不只是 Qwen

这套"主模型 + 压缩副驾驶"的模式可以接入任何兼容 OpenAI API 的后端。你也可以用 Ollama 本地模型、DeepSeek、或者 Gemini。

多模型协作的价值不在于"找一个比主模型更强的模型",而在于当两个模型足够不同时,它们漏的东西不一样。


2026 年 5 月 · GitHub · MIT