你把一份几十万行的行程表交给 AI,只问一句:“超过 10 英里的有多少条?”常见做法是让 AI 临时写一段 Python,运行后再读结果。它可能先猜字段名,也可能没检查文件结构。DuckDB 团队现在给出另一条路:让 Claude Code——Anthropic 面向编程任务的 AI 代理——直接调用 DuckDB 查询数据。
DuckDB 是一种运行在本机程序或命令行里的分析型数据库。它不要求用户先搭一台数据库服务器,能直接查询 CSV、Parquet 等文件。新发布的 duckdb-skills 插件,则把这些能力整理成代理技能:一组告诉 AI 何时调用工具、怎样组织命令和处理结果的说明。
值得先划清边界:这是 DuckDB 团队为 Claude Code 制作的插件,不是 DuckDB 已经成为 Claude 的内置功能,也不是 Anthropic 宣布的官方集成。本文所述功能和演示均来自 DuckDB 官方博客,目前没有独立媒体、Anthropic 材料或复现实验交叉验证。
表面聊人话,底下跑 SQL
官方演示里,用户询问一个 Parquet 文件中有多少段出租车行程超过 10 英里。Parquet 是面向分析的列式文件格式,会把同类字段放在一起,筛选或汇总少数几列时通常更省工。
Claude 第一次写出的 SQL 使用了并不存在的 distance 列。DuckDB 返回错误,并提示候选字段是 trip_distance。Claude 随后修改查询,得到 184,362 条。
这个例子展示的重点不是数字本身。184,362 只属于博客所用、但没有提供的数据文件,不能当作公开数据集结论。真正值得看的是分工:用户用自然语言提问,Claude 把问题翻译成 SQL;DuckDB 执行查询并返回结果或错误;Claude再据此修正命令,并把答案翻译回人话。
这相当于给 AI 配了一位只负责查表的助手。语言模型负责理解意图和组织步骤,数据库负责执行明确的计算。不过,官方所谓“精确答案”需要附带条件:只有数据、查询逻辑和类型处理都正确,结果才谈得上准确。一次成功纠错也不代表 Claude 每次都能选对字段或修好 SQL。
不只查本地表格
据 DuckDB 官方博客,插件覆盖了几类常见工作。read-file 用来读取并检查数据文件;query 可针对文件或已经挂载的数据库运行 SQL,也能接收自然语言问题;convert-file 负责格式转换,例如把 CSV 转成 Parquet。attach-db 则会挂载 DuckDB 数据库,并把它记录进当前项目的会话状态,供其他技能继续使用。
它还把能力伸向远程和空间数据。s3-explore 面向 S3、GCS、MinIO 等对象存储——企业集中存放大量文件的低成本底座;spatial 可处理距离、最近邻、空间连接和地理查询。官方还称,它可以访问需要登录的 Apache Iceberg 表。Iceberg 是建立在对象存储之上的表格管理层,为数据补上结构、版本和事务管理。
换句话说,这个插件想把“电脑上的一个文件”“互联网上的文件”和“企业湖仓里的表”尽量收拢成相似的查询体验。但官方所说的广泛文件支持仍取决于格式、扩展、认证方式和运行环境,不能理解为任何文件都能直接读取。
插件还提供文档搜索、查找过去 Claude Code 会话记录,以及安装或更新 DuckDB 扩展等技能。各技能都有适用场景描述,因此用户既可以输入 /duckdb-skills:skill-name,也可以直接说“把这个 CSV 转成 Parquet”,由 Claude Code尝试自动选择。后者是官方描述的行为,不是每次运行都可靠的保证。
数据库又被藏起来了一层
DuckDB 的来路与这次插件很呼应。据荷兰国家数学与计算机科学研究中心 CWI 介绍,联合创始人 Hannes Mühleisen 曾注意到,一些最需要数据库的数据工作者反而会避开数据库,因为传统系统安装和配置麻烦。他与 Mark Raasveldt 因而尝试把“嵌入应用即可使用”的便利带到大规模分析中。
duckdb-skills 又把数据库藏深了一层。过去,用户可以不搭服务器,直接运行 DuckDB;现在,用户甚至可以不先写 SQL,只描述自己想知道什么。对 DuckDB 来说,这也是角色变化的信号:它不再只是供程序嵌入的分析引擎,也开始被包装成 AI 代理的数据执行层。
插件安装后可在后续 Claude Code 会话中使用,但本机仍需安装 DuckDB CLI——也就是命令行版本;若没有检测到,技能会提出安装。插件还用每个项目共享的 state.sql 保存 ATTACH、USE、LOAD 等恢复会话所需的语句,以及 secrets 和 macros。它让后续会话能够接着工作,也意味着这份状态文件需要被妥善管理。
局限与未知
- 现有功能说明和示例全部来自 DuckDB 官方博客,尚缺少独立测试,无法判断自动选技能、纠错和远程访问在复杂环境中的稳定性。
- 文件、对象存储和 Iceberg 的实际可用范围受格式、扩展、认证与运行环境影响;官方概括不能视为无条件兼容承诺。
- 当前材料没有提供性能对比,也没有证明它一定比 Python 工作流更快。更稳妥的判断是:它减少了临时脚本和工具切换,并把常见数据操作整理成了代理可重复调用的流程。