数据探索的尽头是“自驱”:Simon Willison 的 Datasette Agent
当你拥有一个结构极度清晰、边界极其明确的数据查询工具时,给它插上大模型的“脑子”会发生什么?
著名的开源项目 Datasette 作者 Simon Willison 最近给出了他的答案:Datasette Agent。这不仅是一个新功能的发布,更是向我们展示了“垂直工具如何平滑演进到 Agent 时代”的最佳实践。
不做万能助理,做最懂 SQLite 的“专科医生”
现在的技术圈,每个人都在喊着要做全能的 General Agent,仿佛只要模型够强,就能一揽子解决所有的业务需求。但现实是,通用 Agent 往往在遇到具体、硬核的工程问题时显得捉襟见肘。
Datasette Agent 走了一条完全相反的路:它紧紧依附于 Datasette 和 SQLite。
这个 Agent 不需要懂得如何去预订机票或者总结万字长文,它只需要做一件事:理解当前的数据库 Schema,把你的自然语言提问翻译成精准的 SQLite 查询语句,然后把结果拿回来。
这种“专科医生”式的设计带来了极高的成功率。因为它面对的上下文是完全确定的——哪怕是最复杂的连表查询,也有底层的元数据作为它坚实的锚点。
闭环比聪明更重要:工具调用的核心逻辑
在构建 Agent 的过程中,Simon Willison 踩到了一个所有做 AI 自动化的人都会遇到的坑:模型不可避免会写出报错的 SQL 语句。
常规的做法可能是让用户再去提示一遍“你写错了,报错信息是 xxx,请重试”。但在 Datasette Agent 中,他将容错做进了闭环里。
它的底层高度依赖于“可靠的工具调用”(Tool Calling)。如果大模型生成了一条非法的 SQL,系统并不会直接把报错抛给用户,而是将 SQLite 的底层错误信息作为工具输出(Tool Output)再次喂回给大模型。大模型在看到报错后,会迅速意识到诸如字段名拼错、或者是忘记了关联等问题,然后当场“自我纠正”,重新提交一条新的查询。
这种基于错误反馈的自驱闭环,才是让一个“聊天的玩具”变成“生产力工具”的分水岭。
极简的插件生态:扩展 Agent 的执行边界
Datasette 从诞生起就是一个高度模块化、靠插件堆叠起来的生态。Agent 也没有丢掉这个灵魂。
目前的 Datasette Agent 可以通过插件无限外扩它的能力边界:
- 加上 datasette-agent-charts,它就能直接根据查询出的数据,调用 Observable Plot 渲染出统计图表。
- 加上 datasette-agent-openai-imagegen,它就能触发接口来生成图片。
- 甚至是 datasette-agent-sprites,让大模型在一个持久化的沙盒中去执行复杂代码逻辑。
这告诉我们一个非常重要的工程启示:在 AI 时代,与其指望大模型一次性生成一个包含前后端、图表渲染的完整应用,不如把底层的执行单元全部打散成原子化的插件。大模型的角色,只是在中间做一个聪明的“调度器”。
结构化数据的最后一块拼图
很多时候我们做数据分析,最大的阻力不是数据不够,而是“写 SQL 或写 Python 分析脚本”的启动成本太高。
Datasette Agent 的出现,本质上是把数据探索的门槛降到了零。你只需要用自然语言说出你想要什么,Agent 就会在你定义好的边界和工具链里不知疲倦地去试错、去查询、去制图,直到给你想要的结果。
这不仅是 Datasette 的下一步,或许也是所有开源工具的下一步:与其把功能越做越重,不如把接口和 Schema 暴露得足够干净,然后把交互的指挥权,彻底交给基于大模型的 Agent。