valv icon

valv

valv 为 AI agents 提供安全、受限的数据库访问,支持结构化查询校验、调用方策略控制并执行 SQL,适合开发者为 agents 开放数据库而不暴露原始 SQL 或无限制数据。

valv

为 AI agents 提供安全的数据库访问

valv 是一款开发者工具,用于为 AI agents 提供安全、受限的数据库访问。模型不会直接编写原始 SQL;相反,它会输出结构化查询,valv 会根据实时模式进行校验,按当前调用方范围限制,编译为 SQL,并执行。

该产品面向需要真实数据库访问、但又不想让 agent 看到数据库全部内容的场景。策略以代码形式定义,访问默认拒绝,同一查询会因调用方的租户或角色不同而返回不同结果。

为什么选择 valv

服务端校验

模型发送的是结构化查询,而不是原始 SQL。valv 会在服务器端基于实时模式重建并重新校验后,再执行任何 SQL。

调用方特定策略

策略使用 TypeScript 编写,可按调用方限定行和列。文档建议将默认策略设为全部拒绝,并显式添加访问权限。

适合分析型查询

查询层支持过滤、聚合、时间序列和 Top-N 查询,因此 agent 不仅能做简单查找。

感知 token 的输出限制

响应有上限,因此即使是较宽泛的查询,也不会返回超出模型可处理的数据量。首页将其描述为“感知 token 的输出控制”。

数据库适配器

valv 可与 Postgres、MySQL、SQLite 和 ClickHouse 配合使用,文档还描述了面向 Prisma 和 ClickHouse 的适配器。

Agent 与 MCP 集成

你可以将工具交给 Vercel AI SDK,或通过 MCP 暴露它们,从而让同一套数据库策略适用于不同的 agent 配置。

valv 适用场景

  • 按租户范围划分的应用助手

    在应用 agent 中添加基于数据库的回答,同时将行和列访问限制在当前租户或用户上下文内。

  • 分析型查询

    让分析人员请求聚合、过滤、时间序列或 Top-N 输出,而无需向模型暴露无限制 SQL。

  • 基于 MCP 的 agent 访问

    当你希望像 Claude Code 这样的工具获得无代码访问时,可通过 MCP 将数据库暴露给编码 agent。

  • 按调用方执行策略

    将数据库访问规则集中用代码管理,让不同调用方可以从同一个问题得到不同结果。

Pros and Cons

Pros

  • 阻止模型直接发出原始 SQL,降低注入类故障的暴露面。
  • 允许团队使用 TypeScript 定义行和列访问权限,并按请求应用策略。
  • 支持聚合和时间序列等分析型查询模式,而不只是简单键查询。
  • 可与多种数据库配合使用,也能在应用内或通过 MCP 使用。
  • 采用默认拒绝访问,因此在明确允许之前数据会保持隐藏。

Cons

  • 源材料未包含定价信息,因此从现有页面无法判断其商业模式。
  • 首页和文档列出了支持的数据库,但源材料只给出了 Prisma 和 ClickHouse 的适配器细节;这里未完整说明更深层的设置差异。
  • 文档提到了 MCP 和 AI SDK 集成,但可用来源未展示完整实现步骤或边界情况限制。

FAQ

valv 是如何工作的?

valv 位于模型与数据库之间。模型输出结构化查询,valv 先根据模式进行校验,再应用调用方特定策略,将其编译为 SQL 并执行。

常见用例有哪些?

源材料提到的场景包括面向 agent 的数据库访问、行和列范围控制、过滤和聚合等分析查询,以及与 Vercel AI SDK 或 MCP 配合使用。资料未提供更长的细分垂直场景列表。

它安全吗?

valv 的设计目标是让模型永远不编写原始 SQL,也无法访问你定义的策略之外的数据。它会在 SQL 生成之前于服务器端重建并重新检查查询,并建议以默认拒绝访问作为起点。

它与原始 SQL 相比如何?

与原始 SQL 工具相比,valv 在保留 agent 驱动查询灵活性的同时,增加了服务器端校验和策略范围控制。文档将其与无限制 SQL 以及较为固定的手写端点作了对比。

Quick Facts

类别
开发者工具
主要用途
为 AI agents 提供安全的数据库访问
支持的数据库
Postgres、MySQL、SQLite、ClickHouse
集成方式
Vercel AI SDK、MCP
策略模型
基于 TypeScript 的策略,默认拒绝访问
来源网址
valv.sh