返回 FEED
AGENT2026-06-03

TinyFish 开源 BigSet:用一句话让 Agent 给你建一个能定时刷新的结构化数据集

TinyFish 最近把自家 web agent 能力打包成了 BigSet 并开源(AGPL-3.0)。它的卖点用一句话讲清楚:你用一句自然语言描述想要的数据,AI 推断 schema,agent 团队去网上研究、验证、deduplicate,最后给你一个会按 cadence 自动刷新的结构化表格——你不需要选 scraper、不需要写 selector、不需要指 URL。

这个项目真正解决的是数据从 web 到结构化表格的最后一公里——以及这个过程能被 agent 端到端完成这件事。

它解决的问题

web 上的数据是有的,但都在几百万个页面的深处——价格、公司、岗位、研究论文、菜单、保险报价。

现有的工具都是单点解决

  • 爬虫框架:只能从你指定的 URL 抽内容
  • 搜索 API:返回排序好的搜索结果
  • 现成的 actor:只能爬特定网站
  • lead gen 平台:只能给"已验证的人/公司列表"

但凡你的需求横跨这些类别、或者这些工具压根没覆盖,你就得自己手搓:search、extraction、schema 设计、deduplicate、verification、cron 刷新。每个数据集都得来一遍。

BigSet 把这一整套工作打包——一句自然语言进来,结构化数据出来,按 cadence 自动保鲜

6 步工作流

  1. 你用自然语言描述数据集——可以很模糊,也可以很具体
  2. AI 推断 schema:列名、类型、主键、要去网上哪些地方找
  3. Orchestrator agent 通过 web search 发现候选实体
  4. Sub-agents 并行 fan-out:每个 sub-agent 调查一个实体、抓真实数据、插一条验证过的记录
  5. 你拿到一张结构化表格——UI 里浏览,导出 CSV 或 XLSX
  6. 设置 refresh cadence——agents 按 schedule 自动重跑,数据集永远保鲜

三个值得记住的设计判断

第一件:Schema 是推断的,不是配置的。 你不写"列名 / 类型 / 主键"——AI 看完你的自然语言描述自己猜。这套对简单需求("YC 公司 + 招聘状态 + 地点 + 岗位数")极其顺滑,但当需求变复杂("列出某细分赛道的竞争格局,按融资轮次 + 营收区间分组")schema 推断可能跑偏——README 自己也承认 "schema inference isn't always perfect"。

第二件:Orchestrator + fan-out sub-agents 是核心编排模型。 Orchestrator 负责发现实体(用 web search 找候选),然后 sub-agents 并行去研究每一个实体(fetch 真实页面、验证数据、写入记录)。主 agent 调度 + 子 agent 隔离 context 并行执行——这跟今天 agent 工程里的 "fan-out" 编排套路是同一个思路:把一个大任务拆成多个独立 context 的子任务,让它们同时跑,拿到结果再聚合。

第三件:Scheduled refresh 是真正的差异化。 多数 agent 项目只解决"一锤子爬"。BigSet 让 agent 按 cadence 重新跑——30 分钟、6 小时、12 小时、daily、weekly 都行。数据保鲜这件事从一个用户必须自己写 cron 来维系的工作,变成了产品内置能力

技术栈一览

BigSet 不是一个轻量项目,技术栈一拿出来就是企业级:

  • 前端:Next.js 16 + React 19 + Tailwind 4
  • 后端:Fastify + TypeScript(agent runner)
  • 数据库:Convex(自托管)—— 实时同步、Convex Functions 写权限
  • 数据采集:TinyFish APIs(Search、Fetch、Browser)—— 这是 TinyFish 自家的 web agent 能力
  • AI 编排:Mastra workflows + Vercel AI SDK + OpenRouter → Claude Sonnet(schema 推断 + populate agent)
  • 表格视图:TanStack Table + react-window 虚拟化
  • 导出:CSV(内置)+ XLSX(SheetJS 动态导入)
  • 认证:Clerk
  • 分析:PostHog(事件、session 回放、错误追踪,可选)

几个值得停一停看的小细节

  • Convex 是自托管的——这跟 Vercel 托管版不一样,说明项目是为自部署/数据主权设计的
  • Mastra Studio 在 4111 端口——workflow inspector 是开发期 debug 工具,意味着它把 agent 编排当第一公民来支持,不是只跑生产黑盒
  • 三个 API key 缺一不可:TinyFish + OpenRouter + Clerk——README 把"去哪儿取 key"写得一清二楚,降低上手门槛的细节做得到位

启动流程(按 README 走)

make dev 是一键启动入口,它会自己处理首次启动、后续启动、以及从 broken state 恢复

  1. 校验 .env,缺 API key 立刻报错
  2. npm install(前后端)
  3. 起 Postgres + Convex(self-hosted)
  4. 轮询 Convex health 端点(最长 120s)
  5. 缺失 admin key 时自动生成(写到 .env
  6. 把 Clerk JWT issuer URL 推到 Convex
  7. 部署 Convex schema 和 functions
  8. 起 frontend + backend + Mastra
  9. 流式输出所有 container 日志

只有三条命令你需要记住

  • make dev——启动 / 修复
  • make down——停止(数据保留)
  • make clean——停止 + 删数据 + 清 admin key

五件用前必看

1. 实验性质——schema 推断不是每次都对,有些话题跑得比别的顺。这是项目方自己说的,不是我加的——这种坦诚是质量的指标。

2. 一个数据集要 2-5 分钟——agents 在做真实的 web 研究:search、fetch、verify。不是瞬时,但出来的是真数据

3. 只能爬公开数据——付费墙 / 登录墙 / 私域内容都拿不到。这是合规边界,不是技术 bug

4. Scheduled refresh 才会自动保鲜——一次性生成的数据集会过期,你需要主动设置 cadence

5. 只能导出、不能 SQL 查询——SQL 查询在 roadmap 里,但现在没有。意味着 BigSet 是数据采集工具,不是数据仓库

RoadMap 透露的方向

TinyFish Browser + Agent 集成——支持 JS-heavy 网站、SPAs、需要交互才能露出来的数据。这条说明 TinyFish 知道只靠纯 HTTP fetch 不够,browser 化是必经之路

Agent-native API——让你的 agent 能程序化创建、查询、消费 BigSet 数据集这条最值得关注——BigSet 自己就是 agent,又对外开放"被 agent 调用"的能力,这等于把自己变成了 agent-to-agent data layer

SQL 查询层——能 SQL 查询 dataset,而不是只能导出。

每个 cell 的来源出处——点开 cell 能直接看到数据从哪儿来。这条解决"AI 数据可不可信"的核心问题

Healer agents——自动检测 + 修复坏掉或过期的行。这条把"数据治理"做成了 agent

增量更新——只刷新变了的部分,而不是重建整个数据集。这条是性能优化方向

三件值得偷的设计

  1. Convex 用自托管、Clerk 用 SaaS——这个组合是"数据主权 + 鉴权省心"的最佳折中。数据不出本地,认证 / 用户管理用 SaaS 减少维护负担。值得学。

  2. make dev 自愈——不是简单的启动脚本,是"首次 / 后续 / 坏状态恢复"三种情况一个入口。国内做 devops 的人很少把"开发态自愈"写出来——这是个可以套到任何 docker-compose 项目的 pattern。

  3. Mastra Studio 在 4111 端口——开发期可视化 workflow,让 agent 编排不再是黑盒。生产环境可以关掉,但开发期留个 inspector 是值得长期投入的事。