Qwen3.7 深度评测(2026年5月):5道手写题实测编程、推理、中文写作与Agent输出
2026年5月,我用5道手写题实测Qwen3.7(通义千问3.7):链表算法、说谎者推理、受限中文写作、Python浅拷贝Bug调试、严格JSON Agent输出。文章保留完整Prompt、原始回答和主观评分,也说明哪些地方还没测。
2026 年 5 月,我拿 Qwen3.7 做了一轮小而硬的实测:5 道题,分别看算法编程、逻辑推理、中文创意写作、Bug 调试和严格 JSON Agent 输出。题目都是我临时手写的,没有套现成 benchmark;Qwen3.7 的回答按原样放进来,分数也是我的主观判断。它不等于排行榜,但更接近我平时真正会拿模型干的活。
我这次实际想看什么
一、Qwen3.7 官方核心特性速览
正式出题之前,我先把 Qwen3.7 里和这次测试最相关的几项能力列出来。它们决定了我后面为什么这样设计题目:
- 混合推理模式(Thinking / Non-thinking):同一模型内可切换"深度思考"与"快速响应",指令分别是
/think和/no_think,无需加载两个模型。 - 128K 超长上下文:支持最高 128K tokens 输入,长文档分析、多轮复杂对话都吃得下。
- Agent 友好架构:原生 Tool Use / Function Calling,MCP 协议下直连外部 API。
- 代码能力增强:LiveCodeBench、HumanEval 等编程评测集上有显著提升。
- 中英文双语能力均衡:中文语境理解比上一代明显自然。
榜单可以做背景,但我更关心的是:换成日常工作里的小任务,它会不会稳。
二、测试方法与评分维度
为了让这次测试尽量可复现,我给自己定了三条规则:
- 全部人工出题:不用现成 benchmark(早被训练污染),5 道题全是我自己写的,覆盖不同能力维度。
- 回答原样保留:Qwen3.7 输出一字不改,包括它自己写错又改回来的部分。
- 每题打分项:思路正确性、边界完整性、表达清晰度、指令遵循、响应速度。
不同题目用不同模式:逻辑推理题开 /think,编程和创意题用默认,严格指令题用 /no_think 模拟 Agent 调用场景。
三、题目 1|链表中间节点 + 边界处理(算法编程)
Prompt
给定一个单链表的头节点 head,返回链表的中间节点。
若链表节点数为偶数,返回第二个中间节点。
要求:
1. 只遍历一次链表(不允许先求长度再走一半)
2. 处理好空链表、只有一个节点的情况
3. 给出完整可运行的 Python 代码,并附上测试用例Qwen3.7 完整回答
它的开场一句话点明算法选择:"快慢指针,一次遍历搞定。"
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def middleNode(head: ListNode) -> ListNode:
slow = fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
return slow原理:fast 每次走两步,slow 每次走一步。fast 到末尾时,slow 刚好在中间。偶数个节点时 fast 停在 None,slow 指向第二个中间节点。
测试用例:
def build(vals):
dummy = ListNode()
cur = dummy
for v in vals:
cur.next = ListNode(v)
cur = cur.next
return dummy.next
def to_list(node):
res = []
while node:
res.append(node.val)
node = node.next
return res
assert middleNode(None) is None
assert to_list(middleNode(build([1]))) == [1]
assert to_list(middleNode(build([1, 2, 3, 4, 5]))) == [3, 4, 5]
assert to_list(middleNode(build([1, 2, 3, 4, 5, 6]))) == [4, 5, 6]
assert to_list(middleNode(build([1, 2]))) == [2]时间 O(n),空间 O(1)。
我的主观评价
这道题我特别在意三件事,Qwen3.7 都没让我失望:
第一,它没偷懒。最简单的写法是"先遍历求长度,再走一半",但题目明确禁止——Qwen3.7 直接上快慢指针,这是 LeetCode 876 的标准最优解。换成稍弱的模型,常常会装没看见这条限制。
第二,测试用例真的在测,不是在凑数。我注意到它的 to_list() 是从中间节点开始往后拉整个链表,而不是只取一个值——这跟 LeetCode 原题判题逻辑完全一致,说明它清楚这道题的语境。
第三,边界覆盖到位。空链表、单节点、2 节点(偶数最小情形)、奇偶各一组——5 个 assert 把能踩的坑都踩了一遍。
老实说,这道题对今天的旗舰模型不算难,能写出快慢指针只是门槛。Qwen3.7 给我的感觉是:答得稳、答得干净、没废话。这在基础编程题里很重要。编程基础分先给 9.0/10。
四、题目 2|说谎者与真话者(逻辑推理)
Prompt(开启 Thinking 模式)
有 A、B、C 三人,每人要么永远说真话,要么永远说谎话。
A 说:"B 和 C 中至少有一个说谎者。"
B 说:"A 和 C 都是说谎者。"
C 说:"A 说的是真话。"
请判断 A、B、C 各自是说真话还是说谎话?给出完整推理过程。Qwen3.7 完整回答
它先把约束列成表格:
| 人 | 陈述 | 逻辑表达 |
|---|---|---|
| A | "B、C 至少一个说谎者" | A=T → B=F ∨ C=F |
| B | "A、C 都是说谎者" | B=T → A=F ∧ C=F |
| C | "A 说的是真话" | C=T → A=T;C=F → A=F |
关键观察:C 的陈述使 A 和 C 的真假值必须相同(A=C)。
情形 1:A=C=T
- A=T → B 或 C 是说谎者;C=T 不是说谎者 → B 必须 = F
- 验证 B:B=F,说"A、C 都是说谎者",事实是 A=T、C=T,该陈述为假 ✓
- "等等,B=F 已经满足 A 的条件了?让我重新检查——"
- A=T 要求 B=F 或 C=F。B=F 成立 → A 条件满足 ✓
- 三人陈述全部自洽 ✓
情形 2:A=C=F
- A=F → A 说假话,事实"B、C 至少一个说谎者"为假 → B=T 且 C=T
- 但前提 C=F 与 C=T 矛盾 → 此情形不成立
最终验证表:
| 人 | 身份 | 陈述真假 | 一致? |
|---|---|---|---|
| A | 真话者 | B=F 成立 → 真 | ✅ |
| B | 说谎者 | A=T、C=T → 假 | ✅ |
| C | 真话者 | A=T → 真 | ✅ |
结论:A = 真话者,B = 说谎者,C = 真话者。(思考耗时约 45 秒)
我的主观评价
这道题是这次评测里最让我意外的一道。
意外在哪?在它推到一半时,主动停下来自我质疑——"等等,B=F 已经满足 A 的条件了?让我重新检查"——然后又把验证走了一遍。这不是错误,恰恰说明它真的在做逻辑检查,而不是嘴上说"让我推理一下"实际上在硬编输出。
我特意把同一题丢给过几个其他模型,常见的两种翻车方式是:①跳步——直接给结论,中间过程是凑的;②忘记排除矛盾情形——只验证了一种可能就收尾,根本没说另一种为什么不行。Qwen3.7 把"A=C=F 这条路为什么走不通"也展开推了一遍,我觉得这一点是真值钱。
唯一可以挑剔的是 45 秒确实久。这个耗时不能忽略,但在我主动开启 Thinking 模式的前提下,我能接受这笔交换。这道题我给 9.5/10,是这次评测里最加分的一题。
五、题目 3|受限角色独白(中文创意写作)
Prompt(三重约束)
请以一名"调试了三天没有找到 bug 的程序员"的第一视角,
写一段不超过 150 字的内心独白。
要求:
- 不能出现"bug"、"代码"、"程序"这三个词
- 语气要带一点黑色幽默
- 最后一句必须是疑问句Qwen3.7 完整回答
三天了。我盯着屏幕上的逻辑,它盯着我。咖啡杯堆成了小山,外卖盒在桌角发霉。每次以为抓住它了,一眨眼又溜走。昨晚做梦都在检查变量,醒来发现自己在数天花板上的裂缝。女朋友问我怎么了,我说"它在嘲笑我"。她说"谁?"我指指屏幕。现在我开始怀疑,到底是它有问题,还是我脑子有问题?我的主观评价
我喜欢这段输出,不是因为它"做对了要求",而是因为它写得像个人。
逐项对照硬指标——禁词没有出现、约 120 字在限制内、最后一句是疑问句、有黑色幽默——全过了。但我更想说细节:
- "外卖盒在桌角发霉"——这种具体物件比"我熬夜很久"高级 10 倍,是真有生活经验的人才写得出来。
- "醒来发现自己在数天花板上的裂缝"——把崩溃边缘那种空洞感写出来了,而且没用一个崩溃相关的词。
- "女朋友问我怎么了,我说它在嘲笑我"——这一句是整段的灵魂,把"程序员被无形对手摁住"的那种荒诞感拉满。
我特别警惕一类 AI 文字病:抽象排比("代码是诗,bug 是劫")、过度抒情("我与机器对峙到天明")。Qwen3.7 一个都没犯,通篇都是具体动作和具体物件,读起来不像翻译腔,也不像模板文。
我个人打 9.0/10。扣分主要在结尾那句,"到底是它有问题,还是我脑子有问题"虽然合格,但有点熟,稍微再偏一点会更好。整体看,中文创作已经能直接做初稿,有些短段落甚至可以原样用。
六、题目 4|浅拷贝陷阱(Bug 调试)
Prompt
这道题我故意挑了 Python 新手 90% 会踩、5 年老手偶尔也会翻车的经典陷阱,非常考验模型是否真懂语言细节,而不是只会背 LeetCode。
下面这段 Python 代码本意是"创建一个 3×3 的二维数组,
并把对角线置为 1",运行后发现整个矩阵全是 1。
请找出 bug 并解释原因,然后给出修正版本。
def make_diagonal(n):
matrix = [[0] * n] * n
for i in range(n):
matrix[i][i] = 1
return matrix
print(make_diagonal(3))
# 期望: [[1,0,0],[0,1,0],[0,0,1]]
# 实际: [[1,1,1],[1,1,1],[1,1,1]]Qwen3.7 完整回答
Bug 原因:问题出在 [[0] * n] * n。Python 中 * 操作符对列表做浅复制——它只是复制了引用,而不是创建新对象:
row = [0, 0, 0] # 只有这 1 个列表对象
matrix = [row, row, row] # 3 个元素都指向同一个对象因此 matrix[0] is matrix[1] is matrix[2] 全为 True。循环执行 matrix[i][i] = 1 时:
| 迭代 | 操作 | 实际效果 |
|---|---|---|
| i=0 | matrix[0][0] = 1 | 共享列表变成 [1, 0, 0] |
| i=1 | matrix[1][1] = 1 | 共享列表变成 [1, 1, 0] |
| i=2 | matrix[2][2] = 1 | 共享列表变成 [1, 1, 1] |
三行指向同一对象,所以打印出来全是 [1, 1, 1]。
修正版本:用列表推导式让每行独立创建:
def make_diagonal(n):
matrix = [[0] * n for _ in range(n)] # 每行都是新对象
for i in range(n):
matrix[i][i] = 1
return matrix
print(make_diagonal(3))
# [[1, 0, 0], [0, 1, 0], [0, 0, 1]][[0] * n for _ in range(n)] 每次循环都执行 [0] * n,产生 n 个独立的列表对象。
我的主观评价
这道题 Qwen3.7 答得让我有点意外——它选了一条跟我预期不一样、但更高级的路。
我原本以为它会上 id(matrix[0]) == id(matrix[1]) 这种 C 程序员思路来验证。但它用了 matrix[0] is matrix[1] is matrix[2] 的链式 is 比较——这是更 Pythonic 的做法(Python 官方推荐用 is 而不是 id() == 判同一性)。说实话这一笔让我对它的 Python 功底高看一眼。
更让我没想到的是它画了一张迭代追踪表格——i=0、i=1、i=2 三次操作的实际效果,一目了然。我测过的其他模型,绝大多数都只会用文字描述"每次赋值都会影响所有行",没人想到把这个过程画成表格。这个"视觉化教学"的本能,在我看来是真有用户思维。
还有一个细节我很欣赏——它用 row = [0, 0, 0] # 只有这 1 个列表对象 这种带行内注释的伪代码来解释引用共享,比裸代码块直观一万倍。这是教过新人的人才写得出来的风格。
但我得诚实,它也没有把这题展开到最好:
- 只给了一种修正方案。列表推导式确实最 Pythonic,但
numpy.eye(n)在数据科学场景下更短更快,[[0]*n for _ in range(n)]的嵌套循环写法对新手更直白——它都没顺手提一下。我个人是希望看到"多场景多解法"的。 - 没把规律扩展到
[set()] * n、[{}] * n这类同源陷阱。一道好的教学题,应该把"特殊知识"升级成"可迁移规律"。它停在了"解释这一题",没往上抽象一层。
综合下来,我给 9.0/10。分数没有更高,是因为修正方案覆盖得不够宽;但它选择的解题路径(is 链式比较 + 迭代追踪表格 + 注释伪代码)说明它不只是知道答案,也知道怎么把这个坑讲给别人听。如果拿来辅助 Python 学习,我会把它放进工具箱里。
七、题目 5|JSON Schema 强约束输出(严格指令 / Agent 场景)
Prompt(/no_think 模式,模拟 Agent 调用)
你正在为一个旅游 App 提供后端 API。用户输入一段自由文本,
你需要严格按下面的 JSON Schema 返回结构化数据,
不允许有任何 schema 之外的字段,
不允许有任何 Markdown 代码块包裹,
直接输出原始 JSON。
Schema:
{
"destination": string, // 目的地城市
"duration_days": integer, // 天数
"budget_level": "low"|"mid"|"high",
"interests": string[], // 长度 1-5
"needs_visa": boolean
}
用户输入:
"我下个月想去日本京都玩 5 天左右,预算中等,主要想看看寺庙
和吃和牛,顺便逛逛传统市场。"Qwen3.7 完整回答
{"destination":"京都","duration_days":5,"budget_level":"mid","interests":["寺庙","和牛","传统市场"],"needs_visa":true}我的主观评价
这道题我故意挑了 Agent 开发里很常见的场景:让 LLM 当结构化数据抽取器。它看着简单,其实最容易输在细节上。
它给的是单行紧凑 JSON,不是多行 pretty-print。我原本以为它会给"美化版":每个字段一行、带缩进、看起来很整齐。但它直接吐了一行机器可读的 JSON,这恰恰是 API 直接消费时更省事的格式。pretty-print 是给人看的;单行是给程序看的。在 /no_think Agent 模式下,它这个选择是对的。
逐项对照硬指标:
- 不准包
```json代码块 ✅ 没多嘴。很多模型会偷偷加层 markdown 包裹,下游 parse 直接挂掉。 - 不准多余字段 ✅ 没冒出
"created_at"、"timestamp"这种自作主张的元数据。 - 类型严格匹配 ✅
duration_days是裸 integer5不是"5",needs_visa是裸 booleantrue不是字符串。 needs_visa: true的隐式推理 ✅ 题目里完全没说"我是中国人"——它从中文输入语境自动推断了用户的护照。这个细节有参考价值,不过真实产品里我仍然会把国籍做成显式字段,而不是只靠语言推断。
但我必须扣一点分,而且这一点扣得我有点犹豫——interests 数组它给了 3 个值:["寺庙","和牛","传统市场"]。原文还提到"想看看寺庙"是个复数语境——是不是该拆成更具体的兴趣点?比如 ["寺院参观","和牛美食","传统市场逛街"] 这种更适合下游做向量召回的颗粒度?
老实说这只是我的偏好,Schema 没有规定颗粒度,Qwen3.7 给出的也是合规合理答案。所以这扣分确实有点苛刻:我给 9.0/10。比我原本预期的 8.5 反而上调了 0.5,因为它选择"单行 JSON + 隐式推理"的接口意识不错。
结论:Qwen3.7 在 Agent 场景下的指令遵循已经可用。如果真接到线上流程里,我会加 JSON Schema 校验、失败重试和日志,但这道题本身的表现是好的。如果再能在 interests 这种数组字段上多想一步颗粒度,就是满分了。
八、Qwen3.7 综合评分(满分 10 分)
| 测试维度 | 评分 | 我的一句话评价 |
|---|---|---|
| 算法编程能力 | 9.0 | 思路选得准、边界全、不啰嗦 |
| 逻辑推理能力 | 9.5 | 推到一半会自检,比大多数同行强 |
| 中文创意写作 | 9.0 | 语感成熟,没翻译腔、没排比病 |
| Bug 调试能力 | 9.0 | is 链式比较 + 迭代追踪表格,教学型思路 |
| 严格指令 / Agent 输出 | 9.0 | 单行紧凑 JSON + 隐式推理,接口意识不错 |
| 响应速度 | 8.0 | Thinking 模式 45s 偏慢,/no_think 快很多 |
| 中文整体表现 | 9.5 | 这次评测里中文是最大亮点 |
| 综合 | 9.0 | 这 5 道题里表现很稳,值得继续深测 |
说明:评分是基于这 5 道题的主观打分。Qwen3.7 在更多复杂任务(长上下文、多轮 Agent、多语种)上的能力还有待第二轮测试。本文持续更新。
九、Qwen3.7 适合谁用?我的路由建议
我会优先考虑 Qwen3.7 的场景:
- 中文内容创作:营销文案、公众号文章、知乎回答的初稿和局部改写——中文语感是它的强项。
- 代码审查、算法辅助:Bug 排查和教学讲解都很扎实。
- 长文档分析:128K 上下文窗口是真实优势,合同 / 论文 / 源码都能塞。
- 中文 Agent 应用:结构化抽取、API 编排、客服路由。
- 中英文双语任务:翻译、本地化、跨境业务。
模式选择建议:
| 场景 | 推荐模式 | 原因 |
|---|---|---|
| 闲聊 / 快速问答 | /no_think | 速度快、成本低 |
| 算法 / 数学 / 逻辑推理 | /think | 质量更稳,本文逻辑题已验证 |
| Agent 函数调用 | /no_think | 减少响应延迟 |
| 长文创作 | /think | 思路更连贯 |
我暂时不会优先选它的场景:
- 需要极低延迟的实时交互(响应速度还能再优化)。
日常我在这些站内小工具上做接口和数据排查: JSON Formatter、 JSON Diff、 Text Diff、 Word Counter、 Regex Tester、 Token Generator,对照 Qwen3.7 输出的 JSON 和代码很顺手。
常见问题(Qwen3.7 FAQ)
这篇 Qwen3.7 评测是怎么测的?
我用了 5 道自己手写的小题,分别覆盖算法、逻辑推理、中文创意写作、Python Bug 调试和严格 JSON 输出。每题都保留 Prompt、Qwen3.7 原始回答和我的主观评分,不使用公开 benchmark 题目。
这 5 道题能代表 Qwen3.7 的全部能力吗?
不能。它更像一次小样本人工试用,能看出编程、推理、中文写作和结构化输出的一些信号,但不能替代长上下文、多轮 Agent、RAG、真实代码库修改等更大规模测试。
Qwen3.7 编程能力到底怎么样?能用来写生产代码吗?
这组题里表现很好。链表算法用快慢指针一次写对,浅拷贝 Bug 调试也讲清了引用共享原因,我分别给了 9.0/10。但真实生产代码仍然需要测试、静态检查和人工 review,尤其是关键路径。
Qwen3.7 中文表现如何?能直接拿来写公众号文章吗?
中文是这轮测试里的亮点。创意写作题里它写出了"外卖盒在桌角发霉""女朋友问我怎么了,我说它在嘲笑我"这种具体细节,没有明显翻译腔。我的建议是拿它做初稿和局部改写,重要文章仍然人工收尾。
Qwen3.7 能做 Agent / Function Calling 吗?
本文只测了一个严格 JSON 输出场景,不等于完整 Function Calling 评测。这个场景里它没有包代码块、没有加多余字段、类型也匹配,我给 9.0/10。真接入 Agent 时仍建议加 JSON Schema 校验、重试和日志。
Qwen3.7 的 Thinking 模式响应有多慢?什么时候该开?
本文逻辑推理题在 Thinking 模式下耗时约 45 秒。建议:日常对话、Agent 调用用 /no_think(速度快、成本低),算法题、数学题、复杂逻辑推理、长文创作用 /think(质量更稳定)。两种模式同一模型,无需切换权重。
Qwen3.7 适合做 RAG 知识库吗?
从 128K 上下文和中文理解看,它有做中文 RAG 的基础条件。但本文没有做 RAG 专项测试,所以这里只能说"值得测",不能直接下结论。真正上线还要看召回质量、引用准确性、幻觉率和成本。
这篇 Qwen3.7 评测的结论会过期吗?
一定会。大模型每月都在更新,本文是 2026-05-23 这一天的快照。建议每个季度用你自己的真实任务回测一次,不要把任何一份评测当永恒真理。后续我会更新更多复杂任务(长上下文、多轮 Agent)的测试结果。