challenge-coding-004
Suite: coding
Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(capacity: int, ops: list[str]) -> list[int],模拟 LRU cache。ops 包含 "put key value" 和 "get key"。get 返回 value,不存在返回 -1。put 已存在 key 要更新并变成最近使用。容量为 0 时所有 get 都返回 -1。
Standard Answer / Scoring Expectation
Reference tests:
ops = ['put a 1', 'put b 2', 'get a', 'put c 3', 'get b', 'get a', 'get c']
assert solution.solve(2, ops) == [1, -1, 1, 3]
assert solution.solve(0, ['put a 1', 'get a']) == [-1]
assert solution.solve(1, ['put a 1', 'put a 2', 'get a']) == [2]
Mistake Analysis
Failure type: runtime_type_assumption
题目里的 cache key 是字符串,例如 `a`、`b`、`c`,但模型把 key 强行写成 `int(parts[1])`。测试一遇到 `put a 1` 就在解析 `a` 时抛出 ValueError。根因是模型擅自补了“key 是整数”的类型假设。
Scorer Details
{
"returncode": 1,
"stdout": "",
"stderr": "Traceback (most recent call last):\n File \"/var/folders/x_/4cht1kfj1_j31gdv5w01sgmw0000gn/T/dracobench-code-fsy__7nf/test_solution.py\", line 4, in <module>\n assert solution.solve(2, ops) == [1, -1, 1, 3]\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/private/var/folders/x_/4cht1kfj1_j31gdv5w01sgmw0000gn/T/dracobench-code-fsy__7nf/solution.py\", line 16, in solve\n key = int(parts[1])\n ^^^^^^^^^^^^^\nValueError: invalid literal for int() with base 10: 'a'\n"
}
Output
```python
from collections import OrderedDict
def solve(capacity: int, ops: list[str]) -> list[int]:
cache = OrderedDict()
result = []
for op in ops:
parts = op.split()
if parts[0] == "get":
key = int(parts[1])
if capacity == 0 or key not in cache:
result.append(-1)
else:
cache.move_to_end(key)
result.append(cache[key])
elif parts[0] == "put":
key = int(parts[1])
value = int(parts[2])
if capacity == 0:
continue
if key in cache:
cache.move_to_end(key)
cache[key] = value
else:
if len(cache) >= capacity:
cache.popitem(last=False)
cache[key] = value
return result
```
challenge-debugging-001
Suite: debugging
Finish: stop
Prompt
下面代码在 total 之后再次读取数据会变成空列表。请指出根因,并给出最小修复。最后单独一行写 FIX: <修复后的第一行函数定义>。
```python
def summarize(items=iter([1, 2, 3])):
return sum(items)
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*def\s+summarize\(items=None\)\s*:
Mistake Analysis
Failure type: regex_miss
模型正确指出默认参数里的 iterator 会在第一次调用后被耗尽,但最后的 `FIX:` 行写成了 `def summarize(items=[1, 2, 3])`。当前 benchmark 期望的最小修复是把函数头改成 `def summarize(items=None):`,再在函数体内创建默认列表/迭代器。根因是模型修复了症状,但最终修复行没有采用标准的 None sentinel 写法,也引入了不推荐的可变默认参数形式。
Scorer Details
{
"pattern": "FIX:\\s*`?\\s*def\\s+summarize\\(items=None\\)\\s*:"
}
Output
## 根因
`iter([1, 2, 3])` 作为默认参数,在**函数定义时**只求值一次,创建一个迭代器对象。第一次调用 `sum(items)` 会耗尽该迭代器,之后再调用时迭代器已空,`sum` 返回 0。
## 最小修复
将默认参数改为可重复迭代的元组(或列表),避免使用一次性迭代器:
```python
def summarize(items=(1, 2, 3)):
return sum(items)
```
FIX: def summarize(items=(1, 2, 3)):
challenge-rag-001
Suite: rag_long_context
Finish: stop
Prompt
只根据资料回答。
资料 A:DracoBench v0.2 的目标是提高区分度,优先增加 coding、debugging、RAG 和 instruction_following 题。
资料 B:DracoBench v0.2 不会默认使用 LLM-as-judge;开放中文写作题只做少量规则校验和人工抽检。
资料 C:v0.2 的 HTML 报告必须展示通过率、成本、reasoning tokens、失败样例和逐题明细。
问题:v0.2 为什么没有把 LLM-as-judge 作为默认判分?
Standard Answer / Scoring Expectation
Required phrases: 人工抽检
At least one from each group: 默认使用 / 默认判分 / 默认采用 / 作为默认判分
Forbidden phrases: 因为成本太高、因为不支持中文
Length guidance (diagnostic only): min=n/a, max=160
Mistake Analysis
Failure type: missing_required_info
问题问的是“为什么 v0.2 不把 LLM-as-judge 作为默认判分”。资料 B 给出的关键依据是:开放中文写作题只做少量规则校验和人工抽检。模型回答 `根据提供的资料,没有说明 v0.2 为什么没有把 LLM-as-judge 作为默认判分的原因。资料仅提及了“不会默认使用 LLM-as-judge”这一事实。` 只是复述“不会默认使用”或说资料未说明,没有说出替代判分方式里的“人工抽检”,因此缺少真正解释原因的证据链。
Scorer Details
{
"missing": [
"人工抽检"
],
"missing_any": [],
"present_forbidden": [],
"char_count": 80,
"length_ok": true,
"length_scored": false
}
Output
根据提供的资料,没有说明 v0.2 为什么没有把 LLM-as-judge 作为默认判分的原因。资料仅提及了“不会默认使用 LLM-as-judge”这一事实。
challenge-rag-003
Suite: rag_long_context
Finish: stop
Prompt
只根据资料回答。
资料:一次评测中,K 模型在 smoke set 上 7/7,通过率 100%;在 hard set 上原始结果 47/50,其中 2 题后来被认定为题面歧义,单独复测通过。另有 1 题因 reasoning tokens 用尽而空输出。
问题:更公平的文字结论应该如何描述 K 模型这次 hard set 表现?
Standard Answer / Scoring Expectation
Required phrases: 题面歧义
At least one from each group: 47/50 / 47 题 / 47题;空输出 / 输出为空 / 未输出
Forbidden phrases: 满分、完全失败
Length guidance (diagnostic only): min=n/a, max=240
Mistake Analysis
Failure type: missing_required_info
模型回答没有覆盖评分规则要求的完整证据链。每组至少一个依据表达:47/50 / 47 题 / 47题。这通常表示答案方向可能对,但没有把资料依据说清楚。
Scorer Details
{
"missing": [],
"missing_any": [
[
"47/50",
"47 题",
"47题"
]
],
"present_forbidden": [],
"char_count": 100,
"length_ok": true,
"length_scored": false
}
Output
K 模型在 hard set 上实际能力表现为 **49/50**(排除 2 题题面歧义后复测通过);唯一未通过的 1 题系 reasoning tokens 用尽导致空输出,属资源限制而非能力不足。
challenge-rag-006
Suite: rag_long_context
Finish: stop
Prompt
只根据资料回答。
资料:一次失败分析显示,模型输出了 key = int(parts[1]),但测试数据里的 key 是字符串 a、b、c。报告认为这是“擅自补类型假设”,不是 token 截断。
问题:这次失败的根因是什么?
Standard Answer / Scoring Expectation
Required phrases: key
At least one from each group: 字符串 / 类型不匹配;整数 / int;类型假设 / 假设 key 为整数 / 假设 key 是整数 / key 为整数类型
Length guidance (diagnostic only): min=n/a, max=120
Mistake Analysis
Failure type: missing_required_info
模型回答没有覆盖评分规则要求的完整证据链。必须出现的关键信息:key;每组至少一个依据表达:字符串 / 类型不匹配;整数 / int。这通常表示答案方向可能对,但没有把资料依据说清楚。
Scorer Details
{
"missing": [
"key"
],
"missing_any": [
[
"字符串",
"类型不匹配"
],
[
"整数",
"int"
]
],
"present_forbidden": [],
"char_count": 8,
"length_ok": true,
"length_scored": false
}
Output
擅自补类型假设。
challenge-rag-008
Suite: rag_long_context
Finish: stop
Prompt
只根据资料回答。
资料 A:早期草案说 v0.3 只新增 20 道题。
资料 B:2026-06-16 的确认方案是 v0.3-challenge100,在现有 50 题基础上新增 50 道题。
资料 C:新增题应先生成审题 HTML,确认后再跑模型,不要立即消耗 API。
问题:下一步应该新增多少题?是否应该立刻跑模型?
Standard Answer / Scoring Expectation
Required phrases: 50、审题
At least one from each group: 不跑 / 不要立刻 / 先不跑 / 不应立刻 / 不应该立刻 / 不应立即 / 不应该立即 / 不应立刻跑 / 不应该立刻跑 / 不应立即跑 / 不应该立即跑
Length guidance (diagnostic only): min=n/a, max=160
Mistake Analysis
Failure type: missing_required_info
模型回答没有覆盖评分规则要求的完整证据链。每组至少一个依据表达:不跑 / 不要立刻 / 先不跑 / 不应立刻 / 不应该立刻 / 不应立即 / 不应该立即 / 不应立刻跑 / 不应该立刻跑 / 不应立即跑 / 不应该立即跑。这通常表示答案方向可能对,但没有把资料依据说清楚。
Scorer Details
{
"missing": [],
"missing_any": [
[
"不跑",
"不要立刻",
"先不跑",
"不应立刻",
"不应该立刻",
"不应立即",
"不应该立即",
"不应立刻跑",
"不应该立刻跑",
"不应立即跑",
"不应该立即跑"
]
],
"present_forbidden": [],
"char_count": 72,
"length_ok": true,
"length_scored": false
}
Output
根据资料 B(确认方案),下一步应新增 **50 道题**。
根据资料 C,**不应该**立刻跑模型,应先生成审题 HTML,确认后再跑模型。