DAB · Scout · OceanBase

国产数据库 OceanBase 的 Scout 方案登顶 DAB,到底牛在什么地方?

通稿只说"数据理解—规划执行—验证修复",等于没说。把它的执行轨迹拆开,才看到那个真正拉开差距的东西

2026-09-22榜单解读 · 技术拆解约 16 分钟

01先认识 DAB:一份从企业烂数据里长出来的考卷

不是拍脑袋编的题,是从客户的真实烂数据里反向提炼的题。

先说这个榜的出身。DAB 全称 Data Agent Benchmark,由 UC Berkeley 的 EPIC Data Lab 和 Hasura PromptQL 合作推出,论文《Can AI Agents Answer Your Data Questions?》在 2026 年 3 月挂上 arXiv。它自称是"第一个面向真实、复杂数据任务的 AI Agent 端到端基准"。

规模不大,密度极高:12 个数据集、54 条自然语言查询、9 个领域,底下横跨 PostgreSQL、MongoDB、SQLite、DuckDB 四种数据库。

关键在于题是怎么出的。出题人没有坐在办公室里编。他们先对 PromptQL 的六个行业客户——技术、金融、餐饮、电商、SaaS、医疗——做了一轮形成性研究,把"企业数据为什么难用"归纳成四类硬伤,然后拿开源数据集做系统性改造,把这四类硬伤一条条复刻进去。标准答案全部由原始数据确定性推导,不靠人工拍脑袋,也不让大模型判卷。

四类硬伤本尊长这样:

难点论文里的定义落到考题上
多库集成一个问题的数据可能分散在多个库,查询语言还不一样crmarenapro 一个数据集就有 6 个库、3 种数据库类型、27 张表
连接键格式烂同一实体的标识符在不同库里不一致:前缀不同、尾部空格、名字缩写关联之前,先得认出"这两个字段其实是同一个东西"
答案埋在文本里答案藏在文本字段中,必须先解析成结构化值才能筛选和聚合要算的字段根本没有列,得从一段自然语言里抠出来
领域知识光看数据推不出来,得懂行业口径不告诉你"复权"是什么,但题里就问复权收盘价

举个具体的。bookreview 这个数据集是怎么造的?出题人干了两件事。

第一件,把表里的 publishedDate 和 publisher 两列直接删掉,再用大模型生成句子,把这两个值揉进一个新的 details 列。于是"出版年份"不再是一个可以拿来 group by 的字段,而变成了半句话。想用,先解析。

第二件,把两张表分开放——一张进 PostgreSQL,一张进 SQLite,然后给 join key 各加一个前缀:id 改叫 bid,book_id 改叫 bref。你想把两张表接起来,第一关是"认出这俩是同一个东西"。

领域知识那类题更冷。stockmarket 里有一道要求"复权收盘价高于 200 美元的 ETF"——你得知道拆股和分红为什么要复权。patents 里那道要求识别"EMA 平滑系数 0.2 下专利数最高、且最佳年份是 2022 年的 level-5 CPC 代码"——这些概念不在数据字典里,在行业里。

再看怎么打分。核心指标是 Pass@1:第一次尝试就答对的比例。每条查询至少跑 5 次,先对单条查询的多次结果求均值,再按数据集分层平均——不是拿 54 道题的分数简单一除,而是保证 12 个数据集权重相当。提交时要交结果 JSON 加上完整的执行轨迹,提 Pull Request 上榜,缺轨迹直接拒。

为什么它和 Text-to-SQL 不是一回事。Spider、BIRD 那类基准测的是"把一句话翻成一条正确的 SQL,作用于单个关系库",不要求多步推理,也不要求跨库。Table-QA 更省事,表格直接塞进 prompt 里让模型推理。可生产环境里的表,根本塞不进上下文,必须去库里查。DAB 要的是完整链路的通过率:理解数据、选数据、规划路径、查询计算、验证结果。

榜单上的成绩是这样的:OceanBase 团队提交的方案以 90.62% 的 Pass@1 位列第一,是该榜单首个突破 90% 的参评方案,成绩提交于 2026 年 9 月 8 日,超过了多项基于 GPT、Claude Opus、Claude Fable 搭出来的方案。

但比"第一"更值得问的是下一个问题:它是怎么答出来的?

02Scout 是什么:把它的工具清单摊开看

通稿那句话等于没说,得看轨迹。

先说身份。参评方案内部代号 Scout,由 OceanBase Lab 提交,底座用的是开源模型 GLM-5.2——而且注意一个细节:**它把 thinking 关掉了**。54 道题每条跑 5 轮,一共 270 组答案与轨迹。

媒体通稿给出的解释是"数据理解—规划执行—验证修复"三步闭环。这话没错,但基本上所有队都能这么说,等于没说。

真东西在它自己上传的那份执行轨迹包里——里面存着完整的 system prompt、工具 schema、每一次模型调用和每一次工具返回。拆开之后,Scout 的做法清晰了:它给模型配了一个编译器。

它的工具清单

Scout 的 system prompt 里列了这样一套工具,每一条都带使用约束:

工具干什么
schema_overview先摸清所有库的表结构,"除非已有可信的画像"
describe_table / sample_data看列、看样本行,且明确提示"抽样是有界预览,永远不是答案的完整总体"
query_db直接跑 SQL 或 Mongo 查询
workflow_query编译器本体。system prompt 里的原话是"preferred compiler-backed tool",用于多步、跨库的查询、join、过滤、聚合、排序、ID 子集、时段过滤和加权指标
classify_aggregate闭集文本分类的唯一入口,负责成员语义、完整总体和计数/占比/分组排名
extract_fields模型驱动的开放式文本抽取
text_search文本发现
execute_python本地 Python 3.12、pandas/pyarrow、断网。"只在工具或内核无法表达这份工作时才用"
note_finding记录发现。事实类结论必须带本轮有效证据引用,否则只能算"待验证假设"
return_answer交卷。evidence_ids 只能填直接用于这个答案的变量键

配套的还有一套结果存储机制:每次工具调用的完整结果存进一个变量(key 形如 var_call_xxx),模型在写 Python 时可以直接当变量名用。聊天窗口里显示的是有界预览,但完整数据一直都在。

它到底"编译"了什么

看一道真题。bookreview 那道"哪个十年的平均评分最高",Scout 交给编译器的不是一段 SQL,而是一份声明式计划:

intent: "temporal_filter_aggregate_rank" sources: books (book_id, title, details) grain=one row per book reviews (purchase_id, rating) grain=one row per review derive: regex_extract details -> pub_year compute_expression "(pub_year / 10) * 10" -> pub_decade joins: left_on book_id / right_on purchase_id id_transform: "replace_prefix:purchaseid:bookid" aggregations: mean(rating), count_distinct(book_id), count(rating) filters_after_aggregate: distinct_books >= 10 rank_by: avg_rating include_ties: true contracts: requires_full_population: true

这份计划里有三个细节,说明它确实是编译器而不是提示词模板。

第一,它有类型化的操作原语。regex_extract、compute_expression、replace_prefix、schedule_filter、加权指标,都是编译器认识的操作符,不是让模型自由发挥。看那行 id_transform——它处理的是"两张表一个叫 book_id 一个叫 purchase_id,但其实是同一个实体"这个问题。**这正是 DAB 故意埋的坑,而 Scout 手里有一个内置原语专门治它。**

第二,内核会拒绝语义错误的计划。这是整份轨迹里最有价值的一段。模型提交了一份 join 计划,内核没执行,直接弹回来:

kernel_execution_error
metric join cannot preserve the left population because the right lookup key is non-unique; dedupe or aggregate the lookup to one row per key before enrichment, or declare join_role='relationship' when row expansion is the intended relation grain
stage: execution · owner: workflow_request · exception_type: DataKernelError
requires_semantic_repair: true

翻译一下:这个 join 会让左表的行数变多,你的口径就歪了,先去重或先聚合,再回来。这段话不是报错信息,是一句**可直接执行的修复指令**。这就是 PR 里说的 bounded plan repair——不是让模型自己"反思一下",是内核拒绝执行、把错误翻译成修复要求、模型改计划再交。

很多方案会把答案吐出来就结束。**能拒绝,才叫有校验。**

第三,Python 被降级成了兜底。约束原话是"只在工具或内核无法表达这份工作时才用"。换句话说,随性写脚本是最不优先的路径。

论文那句话,它是例外

DAB 论文里有一句判决书式的观察:所有参评的 agent 都用正则表达式去抠自由文本,没有任何一个靠 NLP 或再叫一次大模型来抽取。所以在日期格式五花八门的数据集上,前排方案齐刷刷翻车。

Scout 的工具清单里有两个工具,专门干这件事:classify_aggregate 管闭集分类,extract_fields 管开放式抽取,而且明确要求用"名称+类型+描述"的结构声明要抽什么。它是那道题上的例外。

再看调用频次分布,能看出它真实的肌肉长在哪:

工具调用次数工具调用次数
query_db5950schema_overview372
workflow_query3428text_search312
execute_python2607extract_fields232
return_answer1110classify_aggregate198
describe_table918batch_query_tables93
sample_data708entity_resolution33

还有两处值得单独说。

一次 query 的每一次运行,都会单独落盘一份 planner_output.json 和 planner_trace.jsonl——所谓"按需 planner 子智能体"是个独立组件,不是修辞。日志里还留着护栏事件的计数:重复调用被拦截、输出工具校验失败、模型响应不可用、修复无进展。

另一次典型运行的开销也拿到了:bookreview 第一题第 0 轮,20 次模型调用、139.6 秒,迭代上限设的是 100。轨迹里还附了一份隔离证明:进程隔离、独立子进程、禁用持久缓存读写、禁用记忆注入与事后抽取、数据源绑定到指定文件并附哈希。

一句话总结 Scout 的特点。它把多步分析从"让模型自由发挥"改成了"让模型写计划、编译器执行、内核校验、错了就修"。模型负责理解和判断,确定性的事交给内核。

03这份考卷到底有多难?

最强前沿模型 38%,还有一个数据集,全员零分。

论文里的基线成绩是这样的:

指标数值意味着什么
最强前沿模型 Pass@138%(Gemini-3-Pro)裸模型上场,六成以上的题答错
同模型 Pass@50不超过 69%给 50 次机会反复试,仍有三成题目搞不定
完全无解的数据集1 个所有 agent 在全部试验里,一道都没答对
错误来源85% 来自规划或实现很少是"选错了数据源"

最有信息量的是最后一行。85% 的错答案,坏在规划错了或者实现错了,而不是找错了表。这个分布挺残酷:它说明模型不是不懂问题,是执行链条太长,中间某一步歪了,后面算得再漂亮也是错的。

这也正好解释了 Scout 为什么要在第 02 章那样做。既然错都错在规划和实现,那就把规划和实现这两段单独拿出来管——写计划的是模型,执行计划的是内核,校验计划的是内核的类型系统。**它针对的正是论文指出的那 85%。**

论文里还有个反直觉的发现:探索不是越多越好。准确率最高的两个 agent,各自把大约 20% 的工具调用花在"先看看数据长什么样"上。少了摸不清底细,多了纯烧预算。

04前排七家横向比:Scout 的特点是不是独一份?

把榜单前排的 PR 说明全抓出来,一对比就清楚了。

DAB 要求提交时附上 agent 配置说明。所以前排各家的自述是可以直接横向比的。我抓了前七名,结果有点反直觉。

方案分数PR 里自述的架构确定性组件在哪一层
Permute EQ0.9467正文里一句架构都没有,只有一张"哪道题用哪个提示词"的分派表无
Scout(OceanBase)0.9062主 Agent + 按需 planner 子 Agent;确定性 workflow compiler + data kernel 执行计划执行层
Camber0.8790每个数据集一个专用 notebook agent,每次 trial 全新 context无
Sentinel0.8450单 Agent ReAct + deterministic verify_step 断言层(行数、唯一性、非空、值域)校验层
Sarvam Code0.8208单 Agent + 确定性 answer gate + 盲解第二求解器交叉验证校验层
DataTrail v10.8201"一个模型循环 + 一个 execute 工具",明确写"subagents are disabled"无
DataBridge0.6137一个开源 MCP server,主要靠大 system prompt无

按"到底靠什么拿分",这七家能切成三类。

第一类,纯提示词加模型循环。最典型的就是榜一 Permute EQ——它是七家里最不工程化的一家,正文明明白白只有逐题提示词分派,没有任何架构描述。第二名 DataBridge 稍进一步,用一个 MCP server 做跨库 join 发现,但分数最低。

第二类,模型循环加沙箱,但主动关掉复杂结构。DataTrail v1 明写"只有 1 个模型循环 + 1 个 execute 工具,subagents 关闭、challenger 关闭",它的工程投入全在隔离与可审计上。Camber 是每个数据集一个专用 notebook agent,每次全新上下文,工具链只有驱动 Jupyter 内核的两个函数。

第三类,模型循环加明确的确定性层,只有三家。Sentinel 的 verify_step 是"由 agent 自己调用的非 LLM 断言检查";Sarvam 是"答案闸门加盲解交叉验证"。**这两家的确定性都在事后校验这一层。**

而 Scout 那一句是"a deterministic workflow compiler and data kernel execute these plans"——它的确定性在**执行计划本身**。

差别打个比方:Sentinel 和 Sarvam 是写完代码跑测试,Scout 是先把代码编译成目标文件再执行。前者能发现错,后者能让错压根执行不了。

所以"牛在哪"的第一个答案是:在抓取的七家里,只有 Scout 把确定性放在了执行层。榜一靠的是逐题提示词工程,其他人靠的是沙箱和事后校验,而 Scout 多了一层"计划必须先被编译、被执行内核接受"的关卡。

05优势从哪来:为什么"把不确定性关进笼子"是数据库公司的活?

这条路不是 OceanBase 独家发明的,它有个更古老的名字。

先把话说清楚:把 LLM 的不确定性关进确定性执行框架,不是 OceanBase 首创,数据行业已经做了好几年,而且有量化证据。

dbt Labs 在 2026 年做了一组对照基准,拿同一批问题、同一个模型,分别用"纯文本转 SQL"和"经过语义层"两条路跑:

模型纯文本转 SQL加语义层
claude-sonnet-4-690.0%98.2%
gpt-5.3-codex84.1%100.0%

机理说得很直白:语义层让查询生成变成确定性的——模型只要选对了指标和维度,查询就保证正确,不可能生成错的 join 或错的聚合。

更关键的是失败模式变了。dbt 的原话是:纯文本转 SQL 失败的样子是"**一个看似合理但错误的答案**";语义层失败的样子是"**一条报错**"。对企业来说,前者是灾难,后者只是麻烦。

Snowflake 的对照也类似,自测同一底层模型下,带语义模型平均 78%,不带 57%,差 21 个百分点。第三方对企业真实 schema 的汇总更狠:裸文本转 SQL 大约 40%,加上语义层到 85% 到 95%。

而语义层、口径定义、指标卡这些东西,是数据库公司几十年的家底。

OceanBase 手里的家伙

OceanBase 官方披露过同一套方法论在 DataPilot 上的做法——**这里要说清楚,那篇材料讲的是另一个基准 DABstep 的场景,不是 Scout 的实证**,但能看清这套工程的骨架:

CEO 杨冰的说法是:"模型决定 AI 的能力边界,数据决定 AI 的业务价值。"另一句是数据库正在"从存放数据,到承载智能"。落到 DAB 这件事上,这两句话的意思就是:**当所有队的模型都不差时,胜负手移到了数据侧。**

这一段要标清楚边界。Scout 的 PR 只自述了"workflow compiler + data kernel",没有说它用了语义层;那篇三层资产的官方材料讲的是 DABstep 场景的 DataPilot。所以上面这条从"编译器"推到"数据库方法论"的线,是合理推断,不是实证。但 dbt、Snowflake 和企业落地的数据是实的,这个方向跑不了。

06逐题复盘,以及排名真相

6 个数据集满分,一个只有 0.45,而且它现在不是第一。

90.62% 是个平均数,摊开到 12 个数据集上,能看到它强在哪、栽在哪:

数据集Pass@1数据集Pass@1
bookreview1.0000DEPS_DEV_V10.9000
googlelocal1.0000yelp0.8571
music_brainz_20k1.0000GITHUB_REPOS0.8000
PATENTS1.0000agnews0.4500
PANCANCER_ATLAS1.0000stockmarket0.9600
stockindex1.0000crmarenapro0.9077

六个数据集满分,包括那个出题人精心埋了坑的 bookreview,也包括需要领域知识的 patents 和 stockindex。唯一难看的是 agnews,0.45——正好是那个"从文本里分类抽标签"的数据集,也是全场所有方案都头疼的地方。

顺带说明一下为什么 0.45 没把总分拖垮:因为计分是分层的,先算每个数据集的平均,再对 12 个数据集取均值。所有数据集权重相同,一两个短板不会决定全局,但也意味着——**你不能靠刷某一个数据集把分刷上去。**

还有一件事得照实说。Scout 的 PR 里,评委发现提交的轨迹包自述写着"选择性替换与重新编号,并非未筛选的冻结评测",于是追问:是不是把失败的 run 删掉换了?

作者承认了,并给出了理由:原计划一次跑完 270 组,但部分查询因为大模型 API 并发限制和间歇性不稳定崩了;为了不整体重跑,他们按数据集级别丢弃受影响的 trial、重新编号、补跑完整数据集级别的轮次。替换的判据是"执行崩溃,而不是答案对错",并且提交的轨迹里仍然包含答错的样本。这份披露写在轨迹包的 README 里,是主动的。

评委最终收录了这份成绩。所以 90.62% 这个数字,建立在一次"披露过的、由崩溃驱动"的 trial 替换之上——**它跟那些干干净净跑完 270 组、零替换的方案,严格来说不完全可比。**这一点我认为读者应该知道。

那它现在还是第一吗?

按最新的官方榜单,OceanBase 现在排第二。

媒体报道的"登顶"不是造假,但它描述的是一个时间切片。Scout 提交于 2026 年 9 月 8 日,那一刻它确实排第一,也是第一个站上 90% 的方案。三天之后,2026 年 9 月 11 日,一个叫 Permute EQ 的方案用 Claude-Opus-5 提交了 94.67%,把第一拿走了。

这件事不丢人。前排方案基本都在 0.8 以上打转,第一名和第二名之间那 4 个百分点是几个月的量级,不是代差。而且从提交节奏看,这个榜的头部一直在动。

最后提醒一句,别把两个榜混着用。DABstep 和 DAB 只差一个后缀,完全是两个东西。DABstep 是 Adyen 和 Hugging Face 在 2025 年 2 月做的,450 道真实金融支付业务题,分 Easy/Hard 两级。OceanBase 的 DataPilot 在 2025 年 12 月拿过 Hard 榜第一,2026 年 1 月官方还发博客说"连续一个月大幅领先";现在已经是 NVIDIA 的 KGMON 排第一,DataPilot 第三。

两个榜的变迁说明同一件事:这个领域的榜首是流动的,几个月就换一轮。真正留下来的不是名次,是能力有没有变成产品的一部分。

07落到产品,然后收尾

成绩会过期,能力不会。

OceanBase 官方说得很明确:Scout 只是参评代号,能力后续会沉淀到 DataPilot 产品里——承接数据理解、任务规划、分析执行、结果验证这四项。

它不是孤零零一个产品。数据库这一侧的配套这几年一直在铺:seekdb(2025 年 11 月发布并开源,AI 原生混合搜索数据库,向量、全文、标量、空间统一混合搜,兼容 30 多个 AI 框架)、PowerRAG(智能文档解析加一体化 RAG 工具)、PowerMem(分层记忆架构,LOCOMO 基准 78.70 分 SOTA,token 消耗降 96%)、4.4 版本(第一次把事务处理、分析处理和 AI 能力装进同一个内核)、Lakebase(湖库一体的底层引擎)。

拼起来是一句话:数据库不再只负责把数据存好、算好、取出来,还要帮 AI 理解数据、组织数据、验证结果。

有个佐证:在《IDC MarketScape:中国 Data Agent 2026 年厂商评估》里,OceanBase 进了"领导者"象限。IDC 还预测,到 2028 年 60% 的中国 500 强企业会部署企业级 Data Agent。

这家公司的底子能解释它为什么敢往这个方向压:2010 年立项,蚂蚁集团完全自研,2021 年 6 月开源 300 万行核心代码;商业化客户超过 4000 家;是唯一在事务处理和分析处理两个 TPC 国际基准上都刷新过世界纪录的中国自研数据库。

回到最开始那个问题。Scout 牛在什么地方?

不在模型——它用的 GLM-5.2 是开源的,关掉 thinking,谁都能下载。不在提示词——榜一的提示词工程比它更细。**它牛在给模型配了一个编译器:计划必须被编译、必须被执行内核接受、错了必须按内核给的指令修。**

论文说 85% 的错答案坏在规划和实现。它没有去求一个更聪明的模型,而是把规划和实现这两段单独拿出来,装上了一个会说"不"的内核。

至于名次,下个月再看吧。

数据来源:DAB 官方榜单与论文《Can AI Agents Answer Your Data Questions? A Benchmark for Data Agents》(UC Berkeley EPIC Data Lab × Hasura PromptQL,arXiv:2603.20576);OceanBase Lab 提交的 DAB 榜单 PR #96 及其执行轨迹包(含 system prompt、工具 schema 与逐次调用日志);榜单前排其余六家提交 PR 的架构自述;OceanBase 官方技术博客;dbt Labs 2026 语义层对照基准、Snowflake Cortex Analyst 评估、IDC MarketScape 中国 Data Agent 2026 年厂商评估。