qwen3.6 27B评测数据分析

qwen3.6 27B评测数据分析

数据路径:/storage/openpsi/users/miumiu.zwh/swe-traj-analysis/eval-records/qwen3.6-27b-verified-full/
生成时间:2026-04-24
图表脚本:report/make_figures.py(读取 /tmp/per_task.jsonl,由 analysis.report 产出)

本报告只汇报客观测量结果,不做推论。


0. 数据规模与 plan.md 图示覆盖情况

任务总数

489

判定为 resolved(测试全过)

334(68.3%,95% CI [64.4%, 72.4%])

产出非空 patch

446(91.2%)

源格式

taco-swe-v0.2(单一格式,全部 loader 命中)

附加视角:

  • 图7 repo 维度 resolve 率(django/sympy/sphinx-doc 等);

  • 编辑规模特征(underedit / overedit / refinement_depth)与 resolve 的关系 — 在图5 的相关性总览中体现;

  • 末 3 步 phase 序列成功 / 失败对比 — 在图2b 体现。

缺失且不能画的(因与 async RL 训练接入相关,训练侧未接入):

  • stale risk / policy_version gap;

  • queue_wait_s / trainer idle ratio;

  • 训练 loss 权重、advantage、importance_weight 等 learning-level 字段。


1. 基础规模与成败分布

结果:

  • 489 个任务,resolved 334(68.3%,95% CI [64.4%, 72.4%])。

  • patch_nonempty 446/489 = 91.2%(其余 8.8% 未产出任何代码改动)。

  • 在 334 条 resolved 中,semantic_equivalent_patch(和 gold 的行级 Jaccard < 0.1 但测试全过)占 86 / 334 = 25.7%


2. 时间开销分解

字段含义:

  • wallclock_s:agent 主循环的总墙钟时间;

  • llm_total_s:所有步 LLM 推理延迟之和;

  • tool_total_s:所有工具调用(读文件、跑测试、search_replace 等)延迟之和;

  • reward_eval_s:SWE-bench 判定阶段的沙箱测试执行时间(与 agent 主循环解耦)。

分位数表(秒):

组件

n

P50

P90

P95

Max

wallclock_s

489

234.9

560.7

1258.1

llm_total_s

487

121.4

368.8

545.1

tool_total_s

487

106.3

223.3

1139.1

reward_eval_s

446

32.0

91.4

276.0

异常计数:

  • 7 / 446 个任务 reward_eval_s > wallclock_s(沙箱评测时间超过 agent 主循环)— 源数据标记为 infra 事件。


3. 阶段占比与末 3 步序列

字段含义(阶段由规则判定器产出):

  • localization:搜索 / 读文件 / 定位;

  • verification:跑测试或复现脚本;

  • patch:search_replace 改代码;

  • inspect:查看一段代码但不涉及前三者;

  • edit_bash / env_setup / submit / truly_other / early_surrender:其他。

2a 全体平均阶段占比:

phase

占比

localization

45.9%

verification

37.4%

inspect

5.3%

patch

4.9%

submit

2.6%

edit_bash

2.4%

truly_other

0.6%

early_surrender

0.4%

env_setup

0.2%

2b 末 3 步 phase 序列 top-6(resolved vs failed 计数):

motif(末3步)

resolved

failed

verification → verification → inspect

37

15

verification → verification → verification

24

19

inspect → verification → verification

27

15

verification → edit_bash → inspect

28

7

verification → inspect → verification

15

8

inspect → verification → inspect

14

6

其他观测:

  • verify_in_last5_steps = 1 的比例在 resolved 组更高(相关 r = +0.102)。

  • unique_phase_bigrams(阶段转移的种类数)在全体 P50 = 11,P95 = 17,Max = 22。

  • localization_self_loop_ratio(连续两步都是 localization 的转移占所有转移的比例)P50 = 0.316。


4. 图3 — cost vs value 散点

字段含义:

  • cost 轴用两种代理:num_stepstotal_tokens(prompt + completion);

  • value 轴用 hunk_recall:gold patch 改过的行里,有多少被 agent 的 patch 也碰到了(0–1);

  • 颜色:绿色 = resolved,红色 = failed。

关键分位数:

指标

n

P50

P95

Max

num_steps

489

43

100

100(上限)

total_tokens

489

639 623

2 996 876

4 420 343

hunk_recall

489

0.40

1.00

1.00

hunk_line_jaccard

489

0.22

1.00

1.00

cost 与 value 的 Pearson 相关表:

cost \ value

resolved

hunk_line_jaccard

hunk_recall

wallclock_s

-0.364

-0.365

-0.312

total_tokens

-0.423

-0.365

-0.342

num_steps

-0.425

-0.375

-0.350

reasoning_chars_total

-0.379

-0.333

-0.293

尾部观测:

  • wallclock P95 尾部(≥ 552 s)26 个任务,resolved 8 / 26 = 31%。

  • num_steps = 100(预算上限)出现在 P95 和 Max — 说明 P95 以上的任务已触顶。


5. salvage 分类与 failure onset

字段含义:

  • salvage_label:对每条轨迹打的可回收性标签,由规则判定器依据 resolved / hunk_recall / hunk_precision / loop 等派生;

  • failure_onset_step:对失败轨迹推测的"失败起点步",由首次 loop / 首次无验证的 patch / 最后一次 patch 等规则给出。

4a salvage 分类计数(N = 489):

label

含义

计数

mean_hunk_recall

recall ≥ 0.5

recall = 0

full_success

测试全过的成功轨迹

334

0.573

205

59

useful_patch_attempt

失败,但 patch 摸到了部分相关文件

90

0.118

5

51

near_miss

失败但 recall 较高,接近命中

33

0.607

20

1

useful_localization

失败,patch 差,但有定位信号

22

0.000

0

22

useless

无任何可用信号

7

0.000

0

7

harmful_loop

陷入重复无效循环

3

0.000

0

3

失败原因 motif 分布(failure_motif,n=155 失败):

failure_motif

计数

task_done_unresolved(正常结束但测试未过)

114

stuck_in_loop

26

其他(早期放弃、截断等)

15

4b failure_onset_step 分布(失败任务 n=155):

  • P50 = 16,P95 = 56,Max = 94;

  • 与 resolved 的相关 r = -0.302(注:仅对失败任务有定义,相关量在全体样本上计算时语义应参照原始 metric 定义)。


6. 单特征与 resolved 的相关性总览

说明:本图把所有已派生特征与 resolved(0/1)做 Pearson 相关,按四组分类,负值 = 该值升高伴随更低 resolve,正值 = 反之。相关系数 ≠ 因果,仅做观测。

绝对值最高 10 项(正负混合):

特征

r vs resolved

类别

underedit (agent hunk < gold × 0.5)

-0.481

二元标签

num_steps

-0.425

长度

total_tokens

-0.423

长度

localization_saturation_step

-0.400

结构

reasoning_chars_total

-0.379

thinking

llm_total_s

-0.368

长度

wallclock_s

-0.364

长度

first_edit_step

-0.336

结构

reasoning_ngram_max_pair

-0.320

thinking

semantic_equivalent_patch

+0.315

二元标签

关键特征取值分布:

特征

n

P50

P95

Max

说明

underedit

489

0

1

1

agent 的 patch 触及文件数 < gold 的一半;出现 55 / 489

overedit

489

0

1

1

agent > gold × 1.5;出现 33 / 489

refinement_depth

489

1

6

16

同一文件被反复 search_replace 的最大次数

edit_verify_edit_cycles

489

1

5

11

edit → verify → edit 的循环次数

unique_files_read

489

11

25

49

整条轨迹读过的独特 .py 文件数

hallucinated_files_mentioned

489

2

7

17

reasoning 中提到但从未实际读过的文件计数

reasoning_ngram_max_pair

487

0.238

0.800

1.000

两步 reasoning 的 3-gram Jaccard 最大值;=1.0 即两步几乎相同

has_plan_in_step1

489

0

0

1

第 1 步是否写出显式 plan;全量占比约 3%

underedit / overedit 成败细分(关键二元标签):

标签

命中任务数

其中 resolved

resolve 率

underedit

55

3

5.5%

overedit

33

18

54.5%

两者皆非

401

313

78.1%


7. 按任务难度分桶(混淆因素控制)

字段含义:difficulty 是 SWE-bench Verified 官方给的人工标注难度分桶。

6a 按难度的 resolve 率:

difficulty

n

resolved

resolve 率

<15 min fix

188

绿柱标注

15 min - 1 hour

256

绿柱标注

1-4 hours

42

绿柱标注

>4 hours

3

绿柱标注(n 极小,方差大)

(具体百分比以图上标签为准。)

6b 按难度的平均步数 × 成败:
见图右子图;同难度下,resolved 组与 failed 组的 mean num_steps 柱状对比。


8. 按 repo 的 resolve 率

repo 分布(仅显示 n ≥ 10):

repo

n

resolved

django/django

230

图上标注

sympy/sympy

75

图上标注

sphinx-doc/sphinx

40

图上标注

scikit-learn/scikit-learn

32

图上标注

matplotlib/matplotlib

30

图上标注

pydata/xarray

22

图上标注

astropy/astropy

19

图上标注

pytest-dev/pytest

19

图上标注

pylint-dev/pylint

10

图上标注

其他

12

虚线为全体 resolve 率 68.3%。

LICENSED UNDER CC BY-NC-SA 4.0