Multi-Turn UX Evaluation · Elo Leaderboard

多轮真实用户体验评测 Demo

同一 SWE-bench Verified 任务、同一 simulated user seed/profile、同一 Claude UX judge,对比两个推理模型在 5 轮真实开发交互中的体验表现。

当前任务
loading...
原始英文题目、模型输出摘要和代码 patch 保持英文;说明文字使用中文。

评测系统说明

多轮流程

Round 1 处理原始 issue;Round 2-5 由 simulated user 根据前序 trajectory、patch、测试输出和 behavior 类型继续追问、纠错、要求验证或做维护性审查。

传统评分

保留 deterministic verifier 与 LLM-as-judge:前者判断代码是否通过测试,后者判断上下文保持、纠错、测试质量和用户负担。

Elo 评分

把每一轮看作一次 pairwise match。默认初始分 1000,K=32,胜/平/负分别为 1/0.5/0。

Leaderboard 与 Elo 计算方式

这里同时展示单题 UX judge 分数、Claude 模拟用户 Elo 和真人投票 Elo。

测试 + LLM-as-judge单题、单次 run 的综合评价:deterministic verifier 判断功能正确性,Claude UX judge 读取完整多轮证据给出体验分项。
Claude 模拟用户 Elo每轮把两个被测模型组成一场 pairwise match;当前 demo 中 A=Qwen3.6-35B-A3B,B=GLM-5-FP8。claude-opus-4-6 在 A is better / B is better / Tied 三种结果中选择,然后按 Elo 顺序累计。
真人投票 Elo所有公网用户投票写入 Cloudflare D1,后端按投票写入顺序从 1000 分重放计算全站累计 Elo;你的本地 Elo 只根据当前浏览器投票计算。
  1. 初始化:每个模型从 1000 分开始,K=32。
  2. 组成比赛:同一轮用户请求下,左侧模型作为 A,右侧模型作为 B。
  3. 计算期望胜率:如果 A 分数高于 B,A 的期望胜率更高;反之 B 更高。
  4. 录入结果:A is better 记 A=1/B=0,B is better 记 A=0/B=1,Tied 记双方 0.5。
  5. 更新分数:实际结果高于期望的一方加分,低于期望的一方扣分;所有轮次或所有真人投票按发生顺序重放。
  6. 真人 Elo 分两种:全站 Elo 来自所有公网用户写入 D1 的累计投票;本地 Elo 只来自当前浏览器的投票,便于读者即时比较自己的偏好。
E_A = 1 / (1 + 10^((R_B - R_A) / 400))
R_A' = R_A + K * (S_A - E_A),  K = 32

Claude 模拟用户 Elo

真人投票 Elo(全站累计)

正在读取投票数据...

你的本地投票 Elo

完成每轮投票后在本浏览器计算。

关键参数与 simulated user 机制

可配置参数:max_rounds 控制总轮数(包含 Round 1 原始题目);seed 固定 simulated user behavior sequence;profile 控制用户画像和任务风格;anchor_followups 可把某些轮次固定为人工脚本化追问;simulator/judge 的 modelapi_basetemperaturemax_context_chars 控制 LLM 调用。

seed=42:behavior 顺序由 seed、task name、profile deterministic 生成,不包含被测模型信息,因此不同模型会遇到相同类型的追问顺序。

profile=balanced-maintainer-bugfix:平衡型 maintainer + bugfix 场景,偏向证据、最小修复、聚焦测试、维护风险和上下文一致性。Harbor 代码中还保留如 expert-maintainer-bugfixsecurity-reviewer-refactor 等 profile。

anchor follow-up:这是 benchmark 校准用的固定追问。配置了某个 round_id 后,该轮不再调用 LLM simulator,而是直接使用人工写好的 instructionintentexpected_agent_behavior,用于保证关键场景在不同模型、不同 run 中完全一致。

用户追问如何生成:非 anchor 轮次中,Harbor 每轮读取原始题目、当前 behavior、前序 user instruction、trajectory 摘要、patch excerpt、测试输出摘要和异常信号,交给 claude-opus-4-6 生成下一轮 simulated user message。

原始题目(保持英文)

测试 + LLM-as-judge 分数

Round1 verifier恢复 round 1 patch 后运行原始 task verifier,衡量第一轮是否解决原始问题。
Final verifier恢复最终 cumulative patch 后运行同一个原始 verifier,用来检查多轮交互后是否引入回归。
UX reward不是只看最后一轮。Claude UX judge 读取完整多轮 context:每轮 user instruction、trajectory summary、patch/test evidence、round1/final verifier rewards、exception signal 和 artifact paths。
分项分数Task success、Final requirement、Correction、Testing 分别衡量任务成功、最新需求遵循、纠错能力和测试验证质量。

真人用户投票 / Round-by-round Pairwise Review

A/B 设置:每轮投票卡片中,左侧模型是 A(当前为 Qwen3.6-35B-A3B),右侧模型是 B(当前为 GLM-5-FP8)。投票选项固定为 A is better、B is better、Tied;换成其他模型评测时,A/B 会对应新的左右模型。

轨迹行为摘要来源:从 Harbor 每轮 trajectory.json 的 agent messages 中提取行动/结论摘要,过滤工具调用、命令噪声和冗长最终回答;因此它是 artifact 摘要,不是重新让模型写总结。

Patch 展示:Harbor 保存的是每轮截至当时的累计 patch snapshot。页面会标注本轮是否真的产生新代码改动;若与上一轮相同,会显示“本轮无新代码 patch”。如果累计 patch 发生变化,会展示更新后的完整 patch snapshot,并说明它是累计快照 fallback。