Dinobase 完全指南:用 SQL 统一 AI Agent 的百个数据源,跨应用 JOIN 让准确率从 35% 飙升到 91%
你的 AI Agent 能同时回答「上季度哪些客户流失了、使用量在下降、还开着支持工单?」这个问题吗?
传统的 Agent 架构在每个数据源上挂一个 MCP 工具——Stripe 一个、HubSpot 一个、Zendesk 一个。Agent 一个个调用,把分页的 JSON 塞进上下文窗口,再自己拼凑答案。结果呢?准确率 35%,平均耗时 106 秒,每次正确回答要花 $0.445。这不是模型的问题,这是架构的问题。
Dinobase 用一种极简的思路解决了它:把每个数据源变成 SQL Schema,Agent 用一句 SQL 跨所有源 JOIN。101 个连接器覆盖 SaaS API、数据库、文件、MCP Server,数据统一为 Parquet 格式由 DuckDB 引擎查询。在 11 个 LLM 的基准测试中,Dinobase 方案准确率达 91%(提升 56 个百分点),速度快 3 倍,每次正确回答仅 $0.027(便宜 16–22 倍)。
一分钟上手:连接、同步、查询
安装只需一条命令,支持 uv、pip、pipx 三种方式:
uv tool install dinobase
连接你的第一个数据源:
dinobase add stripe --api-key sk_test_... dinobase add hubspot --api-key pat-... dinobase sync
同步完成后,直接用 SQL 查询跨源数据:
dinobase query "SELECT s.customer_id, s.status, h.last_contact FROM stripe.subscriptions s JOIN hubspot.contacts h ON s.customer_id = h.email WHERE s.status = 'past_due'"
就这样——Agent 不再需要逐个调用工具,一条 SQL 完成全部工作。
核心架构:为什么 SQL 比工具调用更适合 Agent 查数据
Dinobase 的架构非常清晰:
Agent (Claude, GPT, 等)
│
├── MCP Server (工具调用)
└── CLI (bash 命令)
│
Query Engine (DuckDB SQL)
│
┌───────┴───────┐
│ │
crm.* billing.*
(已同步) (已同步)
每个连接器是一个独立的 Schema。API 源同步到 ~/.dinobase/data/ 下的 Parquet 文件;文件型源(CSV、Parquet)通过 DuckDB 视图直接读取,无需复制。跨 Schema 的 JOIN 通过共享字段(如 email、customer_id)完成。
这种架构的优势在于:Agent 的上下文窗口只消耗一次查询的结构化结果,而不是多个工具调用返回的冗余 JSON 数据。基准测试清晰地展示了差距:
| 指标 | Dinobase (SQL) | 逐个 MCP 工具 |
|---|---|---|
| 准确率 | 91% | 35% |
| 平均延迟 | 34 秒 | 106 秒 |
| 每次正确回答成本 | $0.027 | $0.445 |
56 个百分点的准确率差距、3 倍的速度优势、16–22 倍的成本优势——在所有 11 个测试模型上表现一致。
连接器生态:101 个源全覆盖
运行 dinobase sources --available --pretty 查看完整列表。核心类别包括:
- CRM 与销售:Salesforce、HubSpot、Pipedrive、Attio
- 支付与计费:Stripe、Paddle、Chargebee、Lemon Squeezy
- 支持与成功:Zendesk、Intercom、Freshdesk、Gainsight
- 开发者工具:GitHub、GitLab、Jira、Linear、Sentry
- 沟通工具:Slack、Discord、Twilio、SendGrid
- 数据库:Postgres、MySQL、Snowflake、BigQuery、DuckDB、MongoDB 等 16 种
- 流式数据:Kafka、Kinesis
- 基础设施:Datadog、PagerDuty、Cloudflare、Vercel
特别值得一提的是 MCP Server 支持——任何 MCP 协议的服务器都可以自动发现只读工具,同步为 SQL 表:
dinobase connector create posthog_mcp --transport stdio \ --command "npx -y @posthog/mcp-server" dinobase sync posthog_mcp dinobase query "SELECT * FROM posthog_mcp.list_projects LIMIT 10"
MCP 查询与 Python SDK:给 Agent 双重访问路径
除了 CLI 的 SQL 查询,Dinobase 还提供 MCP 工具,让 Agent 可以直接发现和调用连接器中的能力:
dinobase mcp servers --pretty
dinobase mcp search "dashboard"
dinobase mcp call posthog_mcp.dashboard-get '{"id": 1118504}'
Python SDK 提供相同的接口:
from dinobase.mcp import call, search, servers
result = call("posthog_mcp.dashboard-get", id=1118504)
matches = search("feature flag")
Agent 还可以通过 exec_code MCP 工具执行 Python 代码链式调用——合并数据、条件判断、批量更新都可以在一个调用中完成:
from dinobase.mcp import call
flags = call("posthog_mcp.list-feature-flags")
for flag in flags:
if not flag["active"]:
call("posthog_mcp.update-feature-flag", id=flag["id"], active=True)
语义层:让 Agent 理解数据含义
数据同步前,Dinobase 的可选语义层自动用 Claude 分析每张表——生成表描述、字段说明、PII 标记和关系图谱:
export ANTHROPIC_API_KEY=***
同步后,Agent 可以这样查询表的结构和含义:
dinobase describe stripe.subscriptions --pretty
反向 ETL:Agent 不只是读数据
Dinobase 支持 SQL 写回(Mutations),Agent 修改数据时会经过预览/确认流程,防止误操作:
dinobase query "UPDATE stripe.subscriptions SET status = 'canceled' WHERE customer_id = 'cus_xxx' AND status = 'past_due'" dinobase confirm mut_abc123def456 dinobase cancel mut_abc123def456
这种「先预览、再确认」的模式非常适合需要 Agent 执行操作的场景——比如自动取消过期订阅、更新联系人信息。
云存储与框架集成
数据可以存储在 S3、GCS 或 Azure Blob 而非本地磁盘:
dinobase init --storage s3://my-bucket/dinobase/
Dinobase 天然兼容主流 Agent 框架:CrewAI、LangChain / LangGraph、LlamaIndex、Pydantic AI、Vercel AI SDK、Mastra 等,每个框架都有独立的集成文档。
总结
Dinobase 用一种出奇简单的思路解决了 AI Agent 数据查询的结构性难题——用 SQL 的 JOIN 能力替代工具调用的手动拼凑。101 个连接器、内置语义层、MCP 工具支持、反向 ETL,构成了一套完整的 Agent 数据基础设施。如果你正在构建需要跨多个 SaaS 工具查询数据的 Agent 应用,Dinobase 值得一试。
相关链接