← 返回目录
S

SLayer

社区
面向 AI 智能体与人类的可嵌入语义层
GitHub 源仓库 ↗
★ 168 Stars 分类 · 数据库 热门
48FMRS · D

SLayer 是 Motley 团队维护的 MIT 许可开源语义层,专注于为 AI 智能体提供受治理的数据访问与查询能力。它支持 MCP 等多种接口,安装方式清晰,适合希望在数据仓库上构建分析型智能体或 API 的团队;其只读连接与凭据传递方式需要使用者留意安全配置。

可靠性
7/20
安全与权限
9/20
维护活跃度
10/20
文档质量
10/20
安装易用性
12/20
查看 FMRS 评分方法 →

SLayer 是 Motley 团队开发并维护的可嵌入、表达力强的语义层,用于在数据仓库之上实现 AI 驱动的数据分析。它为智能体提供受治理的共享接口,通过该接口访问数据与指标并获得可靠答案。SLayer 负责数据库连接(只读)、SQL 翻译、常用数据转换和行级安全,让 LLM 与人类无需处理这些细节。它既可以作为独立工具使用,也可以作为 Python 库导入并嵌入任意 Python 应用,用于构建分析型 MCP 服务器或 API,或直接以语义方式查询数据库。与传统 BI 语义层不同,SLayer 允许只定义一次 columns(如 revenue),然后通过表达式(如 revenue:sum、revenue:avg、revenue:sum / *:count、time_shift(revenue:sum, -1, 'year'))查询,并支持多阶段查询。SLayer 聚焦于智能体常见的 search → inspect → query 流程,提供 search 工具用于高效发现,以及 memory store 用于关联业务上下文。它支持 MCP、REST API、CLI、Python 客户端、Flight SQL 和基于 Postgres 的 SQL API 等多种接口,并提供 dbt、Cube、Ossie 配置的导入器。

安装接入

推荐使用 uv。首先执行 uv tool install 'motley-slayer[all]';如果之后在 PATH 中找不到 slayer,执行 uv tool update-shell 并重新打开终端。使用演示数据集:claude mcp add slayer_demo -- slayer mcp --demo(内置 Jaffle Shop 演示数据,零配置)。使用自有数据:先创建数据源,例如 slayer datasources create 'postgresql://user:${DB_PASSWORD}@hostname/db_name',密码在初始化时读取,不会保存到磁盘或暴露给 Claude;然后执行 claude mcp add slayer -- slayer mcp --ingest-on-startup。请从已导出 DB_PASSWORD 的 shell 启动 Claude Code,因为 MCP 子进程会继承启动进程的环境变量。

选型与风险

适合谁

  • 希望为 AI 智能体提供受治理数据访问接口的数据团队
  • 需要在仓库之上构建分析型 MCP 服务器或 API 的开发者
  • 使用 dbt、Cube、Ossie 等已有语义配置并希望复用的团队
  • 需要在 Python 应用中嵌入语义层的工程师

不适合谁

  • 需要写入或修改数据库数据的场景(SLayer 的连接为只读)
  • 不需要语义层、直接编写 SQL 即可满足需求的简单场景
  • 非 Python 技术栈且无法运行 CLI 或 MCP 子进程的环境

所需权限

  • 对配置数据源的只读数据库访问权限
  • 读取数据库密码等凭据的环境变量(如 DB_PASSWORD)
  • 运行本地 CLI 命令与 MCP 子进程的权限
  • 修改 Claude Code MCP 配置的权限

风险与副作用

  • 数据库凭据需通过环境变量传给 MCP 子进程,若启动 shell 的环境被泄露可能带来凭据暴露风险
  • 连接以只读方式访问数据仓库,但仍可读取到敏感业务数据,应结合行级安全策略
  • 通过 MCP 接入后,智能体可对数据执行查询,需确认其查询范围符合预期
  • 作为第三方项目使用,其可用性与行为依赖上游维护状况

常见排障

  1. 安装后找不到 slayer 命令:执行 `uv tool update-shell` 并重新打开终端
  2. MCP 无法在 Claude Code 中显示:确认已执行 `claude mcp add` 并重新启动 Claude Code
  3. 数据库连接失败:检查数据源连接串中的数据库类型、用户名、主机名与库名是否正确
  4. 密码读取失败:确认从已导出 DB_PASSWORD 等环境变量的 shell 启动客户端

使用场景

让 AI 智能体在数据仓库上执行受治理的分析查询
为分析型 MCP 服务器或 API 提供语义层能力
以语义方式直接查询数据库,而无需手写 SQL
将语义层嵌入 Python 应用中使用
导入 dbt、Cube 或 Ossie 配置并复用已有指标定义

支持客户端

Claude Code完整支持