上周在 Hacker News 看到 ARC-AGI-3 发布的消息时,我正在用 Claude 写一个 Agent 项目。点进去一看,直接愣了——这东西已经不是让 AI "看图填空"了,它要求 AI 像玩游戏一样去探索、试错、适应。
作为一个折腾了两年 AI 应用的独立开发者,我对各种 benchmark 一直有关注但不深入。MMLU、HumanEval、GPQA 这些评测我都有大概了解,但 ARC-AGI 系列一直让我觉得特别——它不测知识量,不测代码能力,而是测一个更根本的东西:你到底会不会"想"?
今天就来深度拆解一下 ARC-AGI-3 到底改了什么,为什么说它标志着 AI 评测进入了一个全新阶段,以及这对我们开发者有什么实际意义。
先回顾:ARC-AGI-1 和 ARC-AGI-2 在测什么
要理解 ARC-AGI-3 的突破,得先知道前两代是怎么回事。
ARC-AGI 的全称是 Abstraction and Reasoning Corpus,由 Keras 之父 François Chollet 在 2019 年提出。他写了一篇很有影响力的论文《On the Measure of Intelligence》,核心观点是:现有的 AI 评测全都跑偏了。
为什么跑偏?因为它们测的要么是记忆力(你背了多少知识),要么是模式匹配(你见过多少类似的题目)。但真正的智能应该是用最少的经验去解决全新问题的能力——Chollet 把这个叫做"流体智力"(fluid intelligence)。
ARC-AGI-1 的设计非常简洁:
- 每道题由几个示例对(input grid → output grid)组成
- 测试者需要根据示例推断出变换规则
- 然后对新的 input grid 生成正确的 output grid
- grid 是 1×1 到 30×30 的彩色格子,值是 0-9 的整数
举个例子:示例里展示了"把所有蓝色方块向右移动两格",你需要看懂这个规则,然后对测试输入做同样的操作。
对人类来说,这种题平均做对率在 85% 左右。但对 AI 来说,即使是 GPT-4、Claude 3.5 这种级别的模型,在 ARC-AGI-1 上的得分也只有 30-40% 左右。
ARC-AGI-2 在 2024 年底推出,进一步加大了难度:
- 更复杂的变换规则(多步组合、条件分支)
- 更大的 grid 尺寸
- 更多干扰信息
- 强调更深层的抽象推理能力
当时最好的 AI 系统在 ARC-AGI-2 上的得分不到 30%。
共同点是:这两代都是"静态推理"——你看到所有信息,做出判断,一锤子买卖。
ARC-AGI-3:从做题到"玩游戏"
ARC-AGI-3 的官方描述是:The first interactive reasoning benchmark that measures agentic intelligence.
注意两个关键词:interactive(交互式)和 agentic(智能体)。
这意味着什么?让我用大白话解释:
以前:出题 → AI 看题 → AI 答题 → 对答案。就像高考做选择题。
现在:AI 进入一个"游戏环境" → 自己探索规则 → 制定策略 → 执行操作 → 根据反馈调整 → 最终完成目标。就像你第一次玩一个没有教程的解谜游戏。
具体来说,ARC-AGI-3 的任务不再是"看几个示例然后填答案",而是要求 AI 系统在一个未知的交互式环境中:
- 探索(Explore):主动尝试不同操作,观察环境反应
- 建模(Model):从交互中推断出环境的运行规则
- 规划(Plan):基于理解制定达成目标的策略
- 适应(Adapt):当策略不奏效时,能调整方向
这直接把评测对象从"推理能力"升级到了"经验驱动的适应性"——也就是说,不光要会想,还得会学。
为什么这个转变意义重大
你可能会想:这不就是给 AI 加了个交互环节吗?有什么大不了的?
实际上,这个转变触及了当前 AI 的核心短板。
1. 暴露了 "System 2 思考" 的真实水平
Daniel Kahneman 的理论把人类思维分为 System 1(快速直觉)和 System 2(慢速推理)。
当前的 LLM 擅长的是 System 1——给你一个 prompt,快速生成一个"看起来合理"的答案。即使加上 Chain-of-Thought 或者 reasoning tokens,本质上还是在做"一次性推理"。
但 ARC-AGI-3 要求的是真正的 System 2:你得反复尝试、犯错、修正、再尝试。这对现有的 LLM 架构是一个根本性的挑战。
2. "记忆+检索"策略彻底失效
在很多评测中,大模型可以通过庞大的训练数据来"碰运气"——如果训练集里有类似的题目,模型就能答对。这就是为什么每次有新的 benchmark 出来,很快就被"刷榜"。
ARC-AGI-3 的交互式环境意味着每次运行可能生成不同的环境状态。你没法背答案,没法查题库。你必须在这个具体的环境里,从零开始理解规则。
3. 直接衡量 Agent 能力
2025-2026 年是 AI Agent 的爆发期。从 AutoGPT 到 Claude 的 Computer Use,从 Devin 到各种 Coding Agent,"让 AI 自主完成任务"已经是行业最热的方向。
但问题是:我们怎么衡量一个 Agent 到底有多"聪明"?
之前的办法是看它能不能完成特定任务(写代码、操作网页),但这些任务太具体了,很难推广。ARC-AGI-3 提供了一个通用的 Agent 智能评测框架——不管你的 Agent 是干什么的,它的核心能力(探索、推理、适应)可以用同一把尺子来衡量。
当前主流模型的表现差距
官方把 ARC-AGI-3 定位为"世界上唯一未被攻克的基准测试"(The world's only unbeaten benchmark)。
截至 2026 年 3 月,没有任何 AI 系统在 ARC-AGI-3 上达到人类水平。ARC Prize 2026 竞赛已经开放,奖金池超过 200 万美元。
我自己也尝试用 API 做了一些实验,来感受一下现有模型在 ARC 类型推理任务上的表现。以下是一个用 Python 调用 LLM 来尝试解决 ARC-AGI 格式推理题的简单示例:
import openai
import json
client = openai.OpenAI(
base_url="https://api.ofox.ai/v1", # 国内直连,多模型切换方便
api_key="sk-xxx"
)
def solve_arc_task(task_data: dict, model: str = "claude-sonnet-4-20250514") -> str:
"""
尝试用 LLM 解决 ARC 格式的推理任务
task_data 包含 train(示例对)和 test(待解决的输入)
"""
# 构建 prompt:展示示例对,要求推断规则并解题
examples = ""
for i, pair in enumerate(task_data["train"]):
examples += f"\n示例 {i+1}:\n"
examples += f"输入:\n{format_grid(pair['input'])}\n"
examples += f"输出:\n{format_grid(pair['output'])}\n"
test_input = task_data["test"][0]["input"]
prompt = f"""你是一个视觉推理专家。以下是一组输入输出示例,每个示例展示了一种特定的变换规则。
请仔细观察这些示例,推断出变换规则,然后对测试输入生成正确的输出。
{examples}
测试输入:
{format_grid(test_input)}
请按以下格式返回:
1. 你发现的变换规则(简要描述)
2. 输出 grid(用 JSON 二维数组表示)
"""
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0,
max_tokens=2000
)
return response.choices[0].message.content
def format_grid(grid: list) -> str:
"""将 grid 格式化为可读的字符串"""
color_map = {
0: "⬛", 1: "🟦", 2: "🟥", 3: "🟩",
4: "🟨", 5: "🟪", 6: "🟫", 7: "🟧",
8: "⬜", 9: "🔵"
}
rows = []
for row in grid:
rows.append(" ".join(color_map.get(c, str(c)) for c in row))
return "\n".join(rows)
def compare_models_on_arc(task_data: dict):
"""
对比不同模型在同一道 ARC 任务上的表现
"""
models = [
"claude-sonnet-4-20250514",
"gpt-4o",
"deepseek-r1",
]
results = {}
for model in models:
try:
answer = solve_arc_task(task_data, model=model)
results[model] = answer
print(f"\n{'='*50}")
print(f"模型: {model}")
print(f"{'='*50}")
print(answer[:500]) # 截取前 500 字符展示
except Exception as e:
results[model] = f"Error: {e}"
print(f"{model}: 调用失败 - {e}")
return results
# 构造一个简单的 ARC 风格任务来测试
sample_task = {
"train": [
{
"input": [[0,0,1],[0,1,0],[1,0,0]],
"output": [[1,0,0],[0,1,0],[0,0,1]]
},
{
"input": [[0,2,0],[0,0,2],[2,0,0]],
"output": [[0,0,2],[2,0,0],[0,2,0]]
},
{
"input": [[3,0,0,0],[0,0,3,0],[0,0,0,3],[0,3,0,0]],
"output": [[0,3,0,0],[0,0,0,3],[0,0,3,0],[3,0,0,0]]
}
],
"test": [
{
"input": [[0,0,4,0],[4,0,0,0],[0,0,0,4],[0,4,0,0]]
}
]
}
# 运行对比
results = compare_models_on_arc(sample_task)
这个例子只是 ARC-AGI-1 级别的静态推理。在实际测试中,不同模型的表现差异很大:
- 推理型模型(如 DeepSeek-R1、o3)在需要多步推理的任务上明显优于纯对话模型
- 但即使是最好的推理模型,在复杂的抽象变换上仍然经常犯错
- 多次尝试(给 3 次机会)能显著提高通过率,说明模型有一定的"方向感"但不够精确
而到了 ARC-AGI-3 的交互式环境,挑战直接上了一个量级——模型不仅要推理,还要自己设计"实验"来验证假设。
如果你想自己试试
ARC Prize 2026 竞赛已经在 Kaggle 上线,ARC-AGI-1 的训练集(400 道题)是公开的,可以直接在 GitHub 上拿到。
如果你想体验一下人类做 ARC 题是什么感觉,可以试试这个:
import json
import random
from pathlib import Path
def load_and_display_task(task_path: str):
"""加载并展示一道 ARC 任务"""
with open(task_path) as f:
task = json.load(f)
print("=" * 60)
print("ARC-AGI 推理挑战")
print("=" * 60)
for i, pair in enumerate(task["train"]):
print(f"\n📌 示例 {i+1}:")
print("输入:")
print_colored_grid(pair["input"])
print("输出:")
print_colored_grid(pair["output"])
print(f"\n❓ 测试输入:")
print_colored_grid(task["test"][0]["input"])
print("\n你能看出变换规则吗?想想看...")
return task
def print_colored_grid(grid: list):
"""终端彩色打印 grid"""
# ANSI 颜色映射
colors = {
0: "\033[40m \033[0m", # 黑
1: "\033[44m \033[0m", # 蓝
2: "\033[41m \033[0m", # 红
3: "\033[42m \033[0m", # 绿
4: "\033[43m \033[0m", # 黄
5: "\033[45m \033[0m", # 紫
6: "\033[46m \033[0m", # 青
7: "\033[47m \033[0m", # 白/橙
8: "\033[100m \033[0m", # 灰
9: "\033[104m \033[0m", # 亮蓝
}
for row in grid:
print("".join(colors.get(c, f" {c}") for c in row))
def batch_evaluate(task_dir: str, model: str, num_tasks: int = 20):
"""
批量评测模型在 ARC 任务上的通过率
"""
tasks = list(Path(task_dir).glob("*.json"))
sample = random.sample(tasks, min(num_tasks, len(tasks)))
correct = 0
total = 0
for task_path in sample:
with open(task_path) as f:
task = json.load(f)
expected = task["test"][0]["output"]
predicted = solve_arc_task(task, model=model)
# 简化的评判:检查输出中是否包含正确的 grid
if json.dumps(expected) in predicted:
correct += 1
total += 1
print(f" [{total}/{num_tasks}] {'✅' if correct == total else '❌'} {task_path.name}")
accuracy = correct / total * 100
print(f"\n📊 {model} 在 {total} 道 ARC 任务上的通过率: {accuracy:.1f}%")
return accuracy
这对开发者意味着什么
作为每天写代码调 API 的开发者,ARC-AGI-3 的出现给我几个启发:
1. Agent 开发要重视"探索能力"
很多人做 Agent 的思路是"编排固定的工具链"——先搜索、再总结、最后生成。但 ARC-AGI-3 告诉我们,真正聪明的 Agent 应该能在未知环境里自己找到解决办法。
这意味着 Agent 框架需要更好的"试错-反馈"循环,而不只是线性的 pipeline。
2. 评测方式需要升级
如果你在做 AI 产品,别只看 MMLU、HumanEval 这些分数了。这些评测和实际使用场景的关联性越来越弱。关注 ARC-AGI 这类评测,能更好地预判模型在"真实世界未知任务"上的表现。
3. "推理 + 交互"是下一个前沿
从 OpenAI 的 o1/o3 到 DeepSeek-R1,2025 年的主题是"推理能力"。但 ARC-AGI-3 暗示下一步是"推理 + 交互"——模型不能只在脑子里想,还得能动手试。
这和我们在 Agent 开发中遇到的问题完全吻合:让 AI 不只是生成文本,而是真正地与环境交互、完成任务。
写在最后
Chollet 在 2019 年就说过:"真正的智能不是你知道多少,而是你能用多少经验去解决多新的问题。"
ARC-AGI 系列从 1 到 3,其实是在逐步逼近这个定义的核心:
- ARC-AGI-1:你能看懂规则吗?(静态推理)
- ARC-AGI-2:你能看懂复杂规则吗?(深层抽象)
- ARC-AGI-3:你能自己发现规则吗?(交互探索)
从"做题"到"玩游戏",这不只是形式上的变化。它在说:如果一个 AI 系统不能在未知环境里主动探索和学习,那它离真正的通用智能还很远。
200 万美元的奖金摆在那里,全世界最聪明的人都在想办法。如果你对 AI 推理和 Agent 开发有兴趣,ARC-AGI-3 是一个值得深入了解的方向。
说不定下一个突破性的方法,就来自某个在 Kaggle 上熬夜的独立开发者呢?
参考资料:
- François Chollet - On the Measure of Intelligence (arXiv:1911.01547)
- ARC Prize 官网 - arcprize.org
- ARC-AGI GitHub - github.com/fchollet/ARC-AGI