论文
面向代理的查询引擎
A Query Engine for the Agents
摘要
当今生产环境中增长最快的数据是非结构化文本:代理轨迹、聊天日志、推理链、模型输出。人们想分析它,而值得问的问题(“给我看看代理在哪里犯迷糊”)无法仅靠 SQL 回答,因为文本在查询路径中没有模型就无法查询。这类分析自然发生的地方,是新一类在客户端运行并把人类用户与 LLM 代理托管在同一进程中的 AI 应用(Claude Code、Cursor、Claude Desktop、浏览器内代理)。这些应用越来越想处理数据,但 lakehouse 读取路径从 JS 运行时使用起来一直很困难:Spark、Trino 和托管数仓都不适合那里。为了构建这种新型 AI 数据应用,引擎的三个性质成为头等要求:一个 JS 原生发行版,能放进应用已经在运行的运行时;一个足够小的包,能随冷标签页或每轮代理沙箱一起分发;以及一种把分析算子与基于模型的文本解释交错执行的方式。我们提出 Hyperparam,三个开源 JavaScript 库(Hyparquet、Squirreling、Icebird),总计不到 70 KB,直接从对象存储读取 Parquet 和 Apache Iceberg,并通过逐单元、异步原生的 SQL 执行满足第三个性质,使昂贵的单元只在下游算子需要时才触发。在过滤受限查询上,Squirreling 运行 LLM 形态的异步 UDF 比 DuckDB-WASM 快 300 倍(排序受限查询上快 192 倍),并以低三分之二的成本完成十任务代理分析套件。我们认为,数据工程作为一门学科需要为现已投产的 AI 原生客户端应用以及与用户并肩工作的代理而更新。