多轮流程
Round 1 处理原始 issue;Round 2-5 由 simulated user 根据前序 trajectory、patch、测试输出和 behavior 类型继续追问、纠错、要求验证或做维护性审查。
同一 SWE-bench Verified 任务、同一 simulated user seed/profile、同一 Claude UX judge,对比两个推理模型在 5 轮真实开发交互中的体验表现。
Round 1 处理原始 issue;Round 2-5 由 simulated user 根据前序 trajectory、patch、测试输出和 behavior 类型继续追问、纠错、要求验证或做维护性审查。
保留 deterministic verifier 与 LLM-as-judge:前者判断代码是否通过测试,后者判断上下文保持、纠错、测试质量和用户负担。
把每一轮看作一次 pairwise match。默认初始分 1000,K=32,胜/平/负分别为 1/0.5/0。
这里同时展示单题 UX judge 分数、Claude 模拟用户 Elo 和真人投票 Elo。
E_A = 1 / (1 + 10^((R_B - R_A) / 400)) R_A' = R_A + K * (S_A - E_A), K = 32
可配置参数:max_rounds 控制总轮数(包含 Round 1 原始题目);seed 固定 simulated user behavior sequence;profile 控制用户画像和任务风格;anchor_followups 可把某些轮次固定为人工脚本化追问;simulator/judge 的 model、api_base、temperature 和 max_context_chars 控制 LLM 调用。
seed=42:behavior 顺序由 seed、task name、profile deterministic 生成,不包含被测模型信息,因此不同模型会遇到相同类型的追问顺序。
profile=balanced-maintainer-bugfix:平衡型 maintainer + bugfix 场景,偏向证据、最小修复、聚焦测试、维护风险和上下文一致性。Harbor 代码中还保留如 expert-maintainer-bugfix、security-reviewer-refactor 等 profile。
anchor follow-up:这是 benchmark 校准用的固定追问。配置了某个 round_id 后,该轮不再调用 LLM simulator,而是直接使用人工写好的 instruction、intent 和 expected_agent_behavior,用于保证关键场景在不同模型、不同 run 中完全一致。
用户追问如何生成:非 anchor 轮次中,Harbor 每轮读取原始题目、当前 behavior、前序 user instruction、trajectory 摘要、patch excerpt、测试输出摘要和异常信号,交给 claude-opus-4-6 生成下一轮 simulated user message。
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。