2026年9月25日 1 分钟阅读

AI Agent 也需要一张不会胡说的数据库:AgeDB 实战指南

tinyash 0 条评论

AI Agent 在执行研究、销售线索整理或工单分流时,会不断产生结构化数据。把这些内容全部塞进上下文窗口,既昂贵又难以复查;直接让模型生成 SQL,又容易出现列名写错、越权读取或“看起来合理”的错误答案。

AgeDB 试图把这类问题下沉到数据库层:它是一个用 Rust 编写的本地数据库,面向 Agent 提供自然语言查询和 MCP 接口。项目目前处于 v0.1,单节点运行,Apache-2.0 许可。它最有意思的地方不是“让模型会查库”,而是让系统明确告诉你:自己究竟如何理解了问题,以及哪些问题根本不应该执行。

先看它解决什么问题

AgeDB 的 README 给出了一个很典型的交互:Agent 创建 leads 表、写入数据,然后询问“哪些公司最可能转化”。返回结果不仅有排名,还会带上类似“按公司分组、计算 score 平均值、取前 10 条”的解释。

如果 Agent 接着询问“这些线索中哪些变成了客户”,而当前版本只支持单表查询,AgeDB 不会偷偷给出一个猜测数字,而是返回“不支持:该请求跨越 customers 和 leads 两张表,需要 join”。这种拒答是数据 Agent 的重要能力:宁可暴露边界,也不要把不完整的结果包装成确定答案。

它把查询限制在已知表和列上,并检查列的语义类型。例如,把 customer_id 当作可求和的度量会被拒绝;每个响应还会附带实际执行的计划,方便人或上层 Agent 复核。

40 秒跑通本地演示

AgeDB 要求 Rust 1.90 或更新版本,不需要额外数据库服务,也不需要 Docker。源码构建和演示命令来自项目 README:

git clone https://github.com/sivsivsree/agedb
cd agedb
cargo build --release
examples/demo.sh

演示脚本会启动服务,创建表并加载 4,000 条 leads 数据,然后执行六个自然语言问题,同时展示错误、拒答以及 MCP 重放流程。对于想评估 Agent 数据访问层的人来说,这比只看一条“查询成功”的 happy path 更有价值。

接入 MCP:stdio 或 HTTP

如果 Agent 与 AgeDB 在同一台机器上,可以直接使用 stdio。下面的配置使用绝对路径,并把租户明确写入启动参数:

{
  "mcpServers": {
    "agedb": {
      "command": "/absolute/path/to/agedb",
      "args": [
        "--data-dir", "/absolute/path/to/data",
        "serve", "--transport", "stdio", "--tenant", "acme"
      ]
    }
  }
}

需要通过 HTTP 暴露时,README 展示的启动方式如下:

./target/release/agedb --data-dir ./data \
  serve --transport http --port 8080 \
  --api-key "$AGEDB_API_KEY" --tenant acme

客户端连接 http://localhost:8080/mcp,并使用 Bearer 令牌。生产环境不要把真实密钥直接写进 shell 历史或配置文件,应通过环境变量或密钥管理系统注入。

不是“自然语言 SQL 翻译器”

AgeDB 当前提供十四个 Agent 工具,覆盖数据库、表、数据写入、查询和 schema 管理,但刻意没有 execute_arbitrary_query。data_query 可以接收自然语言,也可以接收结构化计划,例如按国家汇总最近 30 天的收入。

这带来一个清晰的安全边界:调用方提交的是受约束的数据意图,而不是任意可执行 SQL。计划会先对照实时 schema 校验;未知列、无意义聚合和超出权限的数据请求,都应该在执行前变成可解释的拒绝。对于多租户 B2B Agent,这种“统一执行点”比单纯增加一个 MCP server 更值得关注。

当然,AgeDB 还不是成熟数仓的替代品。v0.1 是单节点版本,查询能力和生态都有限;PostgreSQL、DuckDB 加上只读角色、schema 检查和查询预算,也能实现不少类似约束。AgeDB 的价值在于把这些约束、解释信息和 MCP 接口放进一个专门的本地二进制中,降低 Agent 应用的拼装成本。

适合从哪里开始

如果你正在做本地研究 Agent、销售线索 Agent 或实验记录 Agent,可以先用 demo 验证三件事:数据模型是否足够表达业务记录;拒答是否比模型自由发挥更符合预期;以及附带的执行计划能否进入你的审计日志。

不要一开始就把所有业务数据迁移进去。先挑一个可回放的小数据集,给每个查询设置租户、时间和字段边界,再观察 Agent 是否会反复提出超出当前版本能力的请求。数据库真正成为 Agent 的“记忆”之前,先让它成为一个可解释、可拒绝、可复核的工具,往往更稳妥。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。