打开网易新闻 查看精彩图片

数据分析师的工位上通常摆着三样东西:一个开满标签页的浏览器、一个随时可能崩溃的Jupyter Notebook、以及一杯凉掉的咖啡。DuckDB(一款嵌入式分析型数据库)火了三年,工具链却卡在原地打转——要么塞进浏览器用WASM(WebAssembly,一种可在浏览器运行代码的技术)跑,性能打折;要么绑在Python里当配角,SQL和代码两头切。

一个叫Ruddy的新产品想打破这个僵局。它不是插件,不是网页,是一个原生Mac应用。开发者直接调用DuckDB的二进制文件,绕过所有中间层。用他们自己的话说:「No WASM. No middleware. The real binary, running locally.」

为什么原生 matters:一个内存管理的细节

为什么原生 matters:一个内存管理的细节

浏览器沙箱和Electron套壳(一种用网页技术做桌面应用的方式)有个共同毛病:内存不是自己的。DuckDB处理大文件时擅长零拷贝读取和向量化执行,但这些优势需要直接操作系统资源。WASM版本为了安全隔离,把文件系统访问、线程调度都包了一层;Electron应用则更重,Chromium内核本身就要吃掉几百兆内存。

Ruddy的选择是反潮流的。团队用Swift写界面,直接spawn DuckDB进程,标准输入输出管道通信。这样做牺牲了一点跨平台能力——Windows和Linux用户暂时被拒之门外——但换来了几样东西:原生库支持(比如DuckDB的spatial地理空间扩展)、真正的本地文件权限、以及苹果生态的快捷键和触控板手势。

一个具体场景:加载10GB的Parquet文件。WASM工具受限于浏览器存储配额,通常要分段流式处理;Python用户得小心pandas的内存爆炸。Ruddy的做法是让DuckDB自己mmap(内存映射)文件,查询延迟直接对标命令行版本。

打开网易新闻 查看精彩图片

SQL+Python笔记本:不是Jupyter的替代品,是另一种工作流

SQL+Python笔记本:不是Jupyter的替代品,是另一种工作流

Ruddy内置的notebook功能看起来眼熟,但设计逻辑不同。单元格可以混写SQL和Python,变量跨语言互通——SQL查询结果直接变成Python的DataFrame,反过来也行。关键是「installable native libraries」:你能装scikit-learn、plotly、任何PyPI包,不像某些云端notebook只能跑预装环境。

分享机制也做了调整。Notebook存成纯文本(.ruddy文件),版本控制友好。团队强调SQL和notebook文件是「first-class citizens in your repo」,这句话瞄准的是数据团队的协作痛点:分析师的SQL脚本和工程师的代码终于能用同一套Git流程管理。

模板功能是个小但实用的设计。FAQ回复、常用查询片段可以存成模板,一键插入。这对频繁回答相似问题的数据支持岗位省了不少重复劳动。

AI agent的架构:MCP协议和「自带模型」策略

AI agent的架构:MCP协议和「自带模型」策略

Ruddy集成的AI agent不走单一模型路线。用户自己接API key:Claude、Gemini、OpenAI、OpenRouter任选。agent能干三件事:跑查询、生成notebook、连接MCP服务器。

打开网易新闻 查看精彩图片

MCP(Model Context Protocol,模型上下文协议)是Anthropic去年推出的开放标准,让AI工具能统一调用外部数据源。Ruddy作为MCP client,可以连上公司内部的指标平台、数据仓库、甚至另一个DuckDB实例。开发者提到架构时用了个有意思的类比:「Bring your own model」——不绑定供应商,也不假装自己的模型比OpenAI强。

ERD(实体关系图)视图是agent的可视化抓手。用户点选表之间的关联线,系统自动生成JOIN语句。这个功能对SQL不熟的产品经理或运营人员降低了探索门槛,但老玩家也能用它快速理清陌生数据库的结构。

地理空间与版本控制:两个被忽视的场景

地理空间与版本控制:两个被忽视的场景

DuckDB的spatial扩展在Ruddy里是开箱即用的。加载GeoJSON或Shapefile,查询结果直接渲染成地图。这不是简单的可视化套壳——空间索引、几何运算都在DuckDB引擎里完成,前端只负责画图层。对比之下,很多工具的做法是把数据拖到Python里用geopandas处理,再转给folium或plotly,中间多两次序列化。

版本控制的设计更细。编辑器内置diff视图,SQL文件的变更历史一目了然。团队特意强调这不是「导出到Git」的伪集成,而是文件系统层面的原生支持。notebook的cell级注释、执行顺序、输出缓存都存成可读的JSON结构,方便code review时追踪逻辑变化。

数据源连接覆盖了本地文件(Parquet、CSV、JSON)、云存储(S3兼容接口)和远程HTTP端点。DuckDB的httpfs扩展被完整暴露,可以直接对URL执行SQL:SELECT * FROM 'https://example.com/data.parquet'。这个功能在WASM工具里常受CORS(跨域资源共享)策略限制,原生应用没有这层枷锁。

定价目前是early-access阶段,7天免费试用,具体月费未公开。团队说这个阶段是为了收集反馈,功能迭代速度会很快。

一个值得玩味的细节:Ruddy的开发者曾在Hacker News回复中提过,他们考虑过Electron方案,最终放弃是因为「不想让用户的笔记本电脑风扇起飞」。这个决策背后是对DuckDB核心卖点的理解——它的快,需要合适的容器来释放。现在的问题是,Mac独占的策略会限制它的用户基数,还是反而在细分市场建立壁垒?