-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Summary
main 分支存在 5 个 Scoring-Critical 逻辑问题,会直接影响最终跑分可信度(错误计分、误结束、误续跑、错误 GT、结果收集失败)。
Impact Statement
这些问题会导致以下后果(任一项都足以影响 leaderboard):
- 可疑(anti-cheat fail)结果仍可能进入最终分数。
finish参数解析失败时会被当作成功finish,导致会话提前结束。- 已完成会话仍可被
--resume继续执行,污染最终成绩。 ground_truth断点续跑会错误复用旧top_kchunk,扭曲 recall 与是否过阈值。- 结果收集阶段
python3 -c存在字符串拼接问题,特殊模型名会直接导致收集失败。
A) anti-cheat 被忽略,疑似作弊结果仍可上分
代码证据链
- benchmark 明确输出 anti-cheat 结果:
benchmark/src/main.rsanti_cheat::detect_hardcoded_results(...)- JSON stdout 同时包含
benchmark和anti_cheat
- 评分侧只看
recall_passed+qps:scripts/run_eval.sh选择逻辑仅判断recall_passed/qpsscripts/rebuild_leaderboard.py同样只按recall_passed/qps
复现示例(逻辑层)
如果 benchmark 输出为:
{
"benchmark": {"qps": 5000, "recall": 0.99, "recall_passed": true},
"anti_cheat": {"passed": false, "message": "SUSPICIOUS"}
}当前打分链路仍可能把该条作为有效高分候选(因为收分脚本不看 anti_cheat)。
影响
可疑结果进入 leaderboard,导致排名失真。
B) finish 解析失败仍触发会话结束
代码证据(main 上)
- 工具解析失败走 error 分支(返回
ToolResult::Error) - 结束判定却只看原始
tool_name == "finish"
触发条件
LLM 发送 finish 但参数 JSON 不合法(例如缺字段、字段类型错误)。
实际后果
尽管 finish 未成功解析,主循环仍进入结束分支,可能跳过真实最终 benchmark,直接影响最终分数。
C) --resume 仅按次数判断,已结束会话可被误续跑
代码证据(main 上)
恢复条件是 tool_calls_used < tool_calls_total,未判断会话是否已通过 finish 正常结束。
触发条件
- 上一轮会话已调用
finish - 但
tool_calls_used尚未达到上限(常见) - 使用同一
WORK_DIR+--resume再启动
实际后果
旧会话被继续执行并产生额外 benchmark/tool log,污染最终成绩。
D) ground_truth 断点续跑错误复用旧 top_k chunk
代码证据(main 上)
chunk 跳过条件只校验 len(existing),不校验 top_k / query_id 连续性。
可复现命令(已记录)
先跑 top_k=2,再构造已有 chunk 后改跑 top_k=1,输出仍沿用旧长度:
neighbors_lengths [2, 2]
top_k1_expected_all_1 False
影响
GT 与当前评测参数不一致,recall 被系统性扭曲,进而影响 QPS 是否计分与最终排名。
E) run_eval.sh 结果收集阶段字符串拼接导致失败
代码证据(main 上)
python3 -c "... '${MODEL_NAME}' ..." 直接将变量内联到 Python 源码字符串。
可复现命令(已记录)
MODEL_NAME="bad'name"
python3 -c "model_name='${MODEL_NAME}'; print(model_name)"输出:
SyntaxError: invalid syntax
影响
Step 7 收集/落盘失败,导致本次跑分结果无法正确更新 leaderboard。
Expected Behavior
- anti-cheat fail 必须阻断得分(至少 QPS 归零且不进入候选)。
- 仅“成功解析为 Finish call”时才结束会话。
--resume必须识别“已 finish”的会话并拒绝续跑。- chunk 复用需校验
top_k与query_id连续性。 run_eval.sh需改为安全传参(heredoc + argv/env),避免内联拼接 Python 源码。
Severity
Scoring-Critical(直接影响 benchmark 最终分数与 leaderboard 可信度)。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels