大数跨境

Qwen3.8 要开源了,我先把它扔进 GitHub 修了个真 Bug

Qwen3.8 要开源了,我先把它扔进 GitHub 修了个真 Bug AINLP
2026-07-24
2
导读:首版测试全绿,Reviewer 一个也没放过。

就在前几天,阿里千问官宣:Qwen3.8 即将发布并开放权重。正式版 Qwen3.8-Max 会做到 2.4T 参数,现在先上线的是 qwen3.8-max-preview

千问给自家新模型的评价也很猛,称它“仅次于 Fable 5”。目前预览版已经在阿里的 Token Plan、Qoder 和 QoderWork 上可用,不用等正式版,现在就能跑。

我没有先去看榜单,也没让它做一个看起来很热闹的网页。只是顺手订了一个 139 元的标准套餐,然后把它扔进 GitHub,去修一条真正没人接的 Bug。


结果比“模型一次写对”有意思得多:第一道题,Qwen3.8 很快修完,我却把成绩作废了;第二道题,它通过了所有现成测试,又被 Reviewer 一条反例打了回来。

我又把同一道题递给手边 Codex 里的 GPT-5.6 Sol。

没想到,它也翻车了。

139 元,先把它跑起来

我订的是 Token Plan Standard,当前活动价 139 元/月,页面标出的原价是 180 元。

为什么不选 39 元的 Lite?我担心 Coding Agent 在大型仓库里来回读代码、跑测试,几轮就把额度吃紧。499 元的 Pro 对这次实验又有点用力过猛。139 元夹在中间,正好适合拿来认真折腾一轮。

活动期内,Qwen3.8-Max-Preview 的 Credits 白天按 1 折消耗,个人版夜间在此基础上还有额外 2 折,还挺香的。

先看看成绩

网上还泄露出一张千问的内部评测图:测试集来自 400 个真实 Coding 和 Cowork 任务,Preview 版本已经被放进多款国内外模型的同题对照里。

这张图很抢眼,但它毕竟是千问私有测试集,外部没法逐题复核。我更想知道的是:离开题库,Qwen3.8 能不能钻进一个陌生项目,自己读代码、找入口、改实现、补测试,再扛住一个故意挑刺的 Reviewer。

GitHub Issue 正好适合干这件事。

它不是“写一个贪吃蛇”那种演示题。需求是别人提的,代码是多年长出来的,现有测试不会迁就模型,最后还能拿 diff 和反例说话。

当然,这里有一个大坑:Issue 还开着,不等于网上没有答案。

第一题修 Click,结果我先翻车了

第一道题来自 Click #3571


Click 是 Python 里很常用的命令行工具库。这个 Bug 也不复杂:进度总数明明是 20,搭配 show_pos=True 和 update_min_steps=7 时,程序跑完却停在 14/20,没有显示最终的 20/20

Qwen3.8 用了大约 2 分 29 秒,自己复现问题,找到 ProgressBar.finish() 没有刷新最后一小段累计进度,补上实现和回归测试,最后跑出:

1940 passed, 25 skipped, 1 xfailed

开局漂亮得有点省心。

然后我补做了一次公开资料检查,发现事情不对了。

早在 6 月,已经有人在 fork 里做过同方向修复;实验当天,Click 上游也出现了相关 PR。它们的核心思路同样是在 finish() 中刷新剩余的 _completed_intervals

也就是说,Qwen3.8 的补丁本身没有因此变错,但这道题已经不能证明它独立找到了一个没人解决的方案。

模型没翻车,我的评测题先翻车了。

这次结果只保留一件事:Qwen3.8 能在陌生仓库里完成复现、定位、修改和全量测试。至于“有没有复述公开答案”,这道题已经说不清,必须换题。

第二题换成 mypy,先查有没有答案

第二次,我把顺序倒了过来:先查评论、关联 PR、仓库搜索和公开网页,再把题交给模型。

最后选中的是 mypy #21744。

mypy 是 Python 类型检查领域最老牌、规模最大的开源项目之一。它从 2012 年开始开发,GitHub 上有超过 2 万颗 Star、1.3 万多次提交,Issue 编号已经排到 2.1 万以后。我们这次实际跑到的一个主测试文件,就有八千多条用例。

如果把 Python 程序比作一篇交稿前的文章,mypy 就是那个专门挑错的编辑:这里明明应该传字符串,你怎么塞进来一个整数?它不运行程序,而是在代码真正开跑前把类型问题找出来。

这次的 Bug 藏在插件系统里。

mypy 允许插件临时改写一个方法的类型签名。普通调用时,插件正常工作:

self.method(1)

换成 super(),插件突然没来上班:

super().method(1)

像同一栋楼开了两扇门。self.method() 走正门,门口有人核验;super().method() 走侧门,mypy 知道这条路通向哪个方法,却忘了把来人送回插件的检查台。

实验前后,这条 Issue 都没有评论、没有关联 PR,也没有搜到公开的同题补丁。任务材料里只有 Issue、最小复现、目标行为和验收要求,没有源码位置,也没有别人写好的答案。

这次可以正式开考了。

Qwen3.8 找对了门,又认错了人

Qwen3.8 很快追到 mypy/checkexpr.py

普通方法调用使用 MemberExprsuper().method() 则走另一条 SuperExpr 路径。旧代码只从前者提取方法名和对象类型,所以插件到了侧门以后,根本收不到查询信息。

根因找对了。首版补丁也很克制:给 SuperExpr 补一条分支,再加回归测试。聚焦测试、插件测试和 super 相关测试全部通过。

Qwen3.8 给出的结论是:

All checks pass.

如果到这里收工,结论会非常省事:Qwen3.8 钻进 mypy,定位真 Bug,测试全绿,一次拿下。

可 Reviewer 把测试里的 self 换成了另一个合法实例:

super(Base, other).method(1)

首版补丁立刻露馅。

Qwen3.8 把“当前代码写在哪个类”当成了“正在调用方法的实例类型”。在原始样例里,两者刚好是同一个类,所以绿灯全亮;Reviewer 故意把它们拆开,插件马上找错人。

看到反例后,Qwen3.8 认得很快:

The review is correct.

这句话比前面的 “All checks pass” 更有信息量。它说明模型能在拿到精确反例后推翻自己的首版假设,继续收敛,而不是守着一片绿灯硬说完成。

我顺手把同一道题丢给 GPT-5.6

为了确认这是不是 Qwen3.8 独有的问题,我把相同 Issue、相同基线和相同验收要求交给了手边 Codex 里的 GPT-5.6 Sol。

它同样找到了 MemberExpr 和 SuperExpr 的分发差异,而且绕开了 Qwen3.8 的“代码所在类”错误。

然后,它换了一种方式答错了。

GPT-5.6 选择的是方法最初定义的类 Root。可 mypy 插件真正需要的是实际实例 GrandChild。一个认成“代码写在哪里”,另一个认成“方法最早属于谁”,正确答案其实是“现在到底是谁在调用”。

Reviewer 把身份一拆开,GPT-5.6 的全绿补丁也被打了回来。

同一个 Bug,用两种方式骗过了两个模型。

反例给到以后,Qwen3.8 和 GPT-5.6 都能理解问题并修正方案。最终,两边在相同主测试环境里通过了完整测试:

8192 passed, 33 skipped, 7 xfailed

这一局,伯仲之间

如果只看这道题,没有冠军。

Qwen3.8 和 GPT-5.6 都能进入陌生的大型代码库,沿着语法树和插件调用链找到真正缺口;两边也都在首版里把一个看似合理的类型当成了正确答案,并被独立 Reviewer 的隐藏反例击穿。

修订以后,两边都完成了任务。

所以这一题最准确的判词只有四个字:伯仲之间。 Qwen3.8-Max-Preview 已经和 GPT-5.6 Sol 打得有来有回。

这只是一条 Issue、一次运行,当然不能排出模型世界排名。但它至少说明,Qwen3.8 的 Preview 已经能接下真正的工程活。

同时,这次实测也再次提醒我们:Coding Agent 会写代码以后,还得配一个专门找反例、不肯轻易签字的 Reviewer。

一个负责实现,一个负责拆台,再让固定测试和仓库规则守住最后一关,这比让模型自己写测试、自己宣布胜利可靠得多。

Preview 已经这样,正式版呢?

别忘了,我们这次用到的还只是 qwen3.8-max-preview

正式版 Qwen3.8-Max 按官方计划将达到 2.4T 参数并开放权重。等它真正上线以后,模型能力、稳定性和开放方式还要重新实测;Preview 的表现不能提前替正式版签收。

但换个角度看,一版还在持续迭代的 Preview,已经能在真实 mypy Issue 上和 GPT-5.6 Sol 互有来回,确实给正式版留下了不小的想象空间。

我现在对正式版最大的期待,是它进仓库以后能少说一次“All checks pass”,多替 Reviewer 提前想到一条反例。漂亮 Demo 已经够多了。

最后需要说明一下,本次实验没有向 Click 或 mypy 提交 AI 生成的 PR。

参考链接

  • Qwen3.8 发布:https://x.com/Alibaba_Qwen/status/2078754377473601787
  • Token Plan 页面:https://platform.qianwenai.com/pricing/token-plan
  • Qwen Code 接入文档:https://platform.qianwenai.com/docs/developer-guides/clients-and-developer-tools/qwen-code
  • Click Issue #3571:https://github.com/pallets/click/issues/3571
  • Click fork PR #1:https://github.com/sijie-Z/click/pull/1
  • Click 上游 PR #3720:https://github.com/pallets/click/pull/3720
  • mypy Issue #21744:https://github.com/python/mypy/issues/21744
  • mypy 项目历史:https://mypy-lang.org/about.html
  • mypy 仓库:https://github.com/python/mypy

进技术交流群请添加AINLP小助手微信(id: ainlp2)

请备注具体方向+所用到的相关技术点

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。

AINLP公众号关注二维码

【声明】内容源于网络
0
0
AINLP
一个有趣有AI的自然语言处理公众号:关注AI、NLP、大模型LLM、机器学习、推荐系统、计算广告等相关技术。公众号可直接对话双语聊天机器人,尝试对对联、作诗机、藏头诗生成器、自动写作等,查询相似词,测试NLP相关工具包。
内容 5993
粉丝 0
AINLP 一个有趣有AI的自然语言处理公众号:关注AI、NLP、大模型LLM、机器学习、推荐系统、计算广告等相关技术。公众号可直接对话双语聊天机器人,尝试对对联、作诗机、藏头诗生成器、自动写作等,查询相似词,测试NLP相关工具包。
总阅读29.5k
粉丝0
内容6.0k