coral
让 AI Agent 用一条 SQL 查询跨数据源,替代 n 个工具拼装
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 AI Agent 用一条 SQL 查询跨数据源,替代 n 个工具拼装
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Coral 项目封面
你有没有过这种感觉——让 AI 助手查点数据,它要么调一个又一个 API 工具,每个都要单独认证;要么返回一大段嵌套 JSON,根本没法直接分析。费 token、费时间、结果还一团糟。这就是 withcoral/coral 要解决的核心问题。
2024 年之后,AI Coding Agent 大爆发。从 GitHub Copilot 到 Claude Code,从 Cursor 到 VS Code Code,程序员们惊喜地发现:AI 真的能帮我写代码了。但用着用着,问题来了——这些 Agent 想查公司数据,比如「Linear 里哪些 issue 关联着我最新合并的 PR」「Datadog 上周有没有报错」「Stripe 上个月退款率是多少」——它们要么需要配置几十个 MCP 工具,每个工具都要单独认证、单独处理分页;要么需要人类在循环里一步步引导,把一个简单的数据分析拆成 20 个工具调用。
Coral 的创始团队(withcoral)注意到了这个痛点。他们在 2025 年推出了 Coral:一个本地优先的 SQL 运行时,专门给 AI Agent 用。它本质上是一个「数据联邦层」:Agent 只需要写 SQL,Coral 负责把 SQL 翻译成对应的 API 调用,把结果聚合起来返回。
Coral 的工作原理用一句话概括:把任何数据源都暴露成 SQL 表。
当你运行 coral source add github 后,Coral 会把 GitHub 的 API 封装成 github.issues、github.pulls、github.reviews 等 SQL 表。你可以这样查询:
SELECT number, title, state, created_at
FROM github.issues
WHERE owner = 'withcoral' AND repo = 'coral' AND state = 'open'
ORDER BY created_at DESC
LIMIT 10
这比让 Agent 逐个调用 GitHub REST API 优雅得多。更重要的是,跨数据源 JOIN 是 Coral 的杀手锏。比如把 Linear 的附件表和 GitHub 的 PR 表 Join 在一起,一次查询搞定「哪些 Linear Issue 关联着我最新合并的 PR」:
SELECT a.issue_identifier, a.url, p.state
FROM linear.attachments a
JOIN github.pulls p ON p.html_url = a.url
WHERE p.owner = 'withcoral' AND p.repo = 'coral'
Coral 开箱即支持大量主流服务:GitHub、Linear、Datadog、Sentry、Stripe 等。同时支持本地 JSONL 和 Parquet 文件。如果内置源不够,用户还可以编写自定义 Source Spec(YAML 格式)来接入任何 HTTP API。Kubernetes 社区源(K8s connector)也在社区维护中,可查询 pods、deployments、events 等集群状态。
Coral 不只是 CLI 工具。它原生支持 MCP(Model Context Protocol),可以通过 coral-mcp 把同一个 SQL 运行时暴露给任何支持 MCP 的 Agent(如 Claude Code、Cursor、VS Code)。这样,Agent 无需了解任何源系统的 API 细节,直接用 SQL 提问。
官方基准测试(82 个真实 AI 任务,Claude Opus 4.6)显示:使用 Coral 相比直接调用各数据源的 MCP 工具,准确率提升 20%,成本降低 50%,延迟降低 42%。在复杂的 Coding Agent 场景(多跳查询、高后处理需求)中,提升更为显著——准确率提升 31%,成本效率提升 3.4 倍。

图2:Agent 通过 Coral 用 SQL 查询 GitHub 数据的示例
Coral 的架构分为多个 Rust Crate,职责清晰:
这是一个典型的管理平面 + 数据平面分离架构:coral-app 是管理平面(管理数据源注册、凭证存储、工作空间),coral-engine 是数据平面(负责 SQL 执行),两者通过 gRPC 通信。
代码质量方面,Coral 采用了极其严格的 Rust 规范:禁止 unsafe 代码、panic_in_result_fn、unwrap_used;lint 级别设置为 deny/warn 并配合 CI 强制执行。Rust 版本要求 1.95(使用 Rust 2024 edition),测试覆盖率相当完整。
安装非常简便:
brew install withcoral/tap/coralcurl -fsSL https://withcoral.com/install.sh | sh安装后三步完成配置:
coral source discover 发现内置源coral source add --interactive github 交互式添加数据源(凭证本地存储,永不离开本机)coral sql "..." 执行 SQL 查询没有 Web UI,纯命令行交互,适合开发者和技术用户。
Coral 定位明确:只读的 SQL 联邦层。它不写数据、不修改源系统状态,只做查询聚合。这意味着它无法替代真正的 ETL 管道或数据同步工具。另外:
Coral 的出现代表了 AI Agent 数据访问层的一个趋势:从「拼装工具」到「统一查询」。在此之前,每个数据源都需要单独配置一个 Agent 工具,n 个数据源 = n 个工具配置 = n 种认证方式。Coral 把这个复杂度降到了 1——一个 SQL 接口 + n 个 Source Spec。
从 GitHub 趋势看(5150+ Stars,2025 年上线),它在开发者社区的认可度在持续上升。随着 Claude Code、Cursor 等 AI Coding 工具的普及,对「让 Agent 高效查询多数据源」的需求会只增不减。Coral 作为这一领域的先行者,具备相当的参考价值。

图3:Coral SQL Join 操作演示