db9 深度研究:TiDB 创始人做的 "Agent 版 Postgres"——文件即表,SQL 即胶水

> 来源: db9 Filesystem + SQL Patterns

> 官网: db9.ai

> 作者: Ed Huang(黄东旭),PingCAP/TiDB CTO 兼联合创始人

> 研究时间: 2026-03-21

🎯 一句话版本

TiDB 创始人黄东旭做的 Agent 专用数据库——PostgreSQL 兼容,但内置文件系统(SQL 里直接读写文件)、内置 embedding 生成、内置向量搜索、一条命令克隆整个环境。核心理念:Agent 的两种状态(文件+表)不应该拆到 5 个服务里,用一个 Postgres 统一。

🧠 核心理念

Agent 系统积累两种状态:

类型形态例子
**Artifacts**文件形prompts, plans, logs, traces, reports
**Queryable State**表形metadata, dedup keys, chunk indexes, run status

传统做法:S3 存文件 + PostgreSQL 存元数据 + Pinecone 存向量 + Redis 做队列 → 应用层写一堆胶水代码。

db9 做法:文件 + Postgres,SQL 是胶水。

🔧 关键特性

1. fs9:文件参与 SQL


-- 写文件
SELECT extensions.fs9_write('/reports/hello.txt', 'hello from db9');

-- 读文件
SELECT extensions.fs9_read('/reports/hello.txt');

-- 把 CSV/JSONL 文件直接当表查询!
SELECT * FROM extensions.fs9('/data/users.csv') LIMIT 5;

-- 过滤 JSONL 日志中的错误
SELECT _line_number, line
FROM extensions.fs9('/logs/run.jsonl')
WHERE line->>'level' = 'error';

文件不是 blob,是可查询的 relation。 "调试"不再需要专门的 UI,直接 SQL。

2. 内置 Embedding + 向量搜索


-- 服务端生成 embedding,无需外部服务
UPDATE docs SET vec = embedding(content)::vector(1024) WHERE vec IS NULL;

-- 语义搜索
SELECT title, content FROM docs
ORDER BY vec <-> embedding('how do agents use filesystem?')
LIMIT 5;

不需要单独的 embedding API、不需要 Pinecone/Weaviate、不需要应用层 pipeline。一条 SQL 搞定。

3. 内置 Markdown-aware Chunking


-- CHUNK_TEXT 自动按 markdown 结构断句
INSERT INTO doc_chunks (path, chunk_idx, content)
SELECT '/docs/intro.md', c.chunk_index, c.chunk_text
FROM CHUNK_TEXT(
  content => extensions.fs9_read('/docs/intro.md'),
  max_chars => 3600,
  overlap_chars => 540,
  title => 'intro'
) AS c;

4. Branch:一条命令克隆整个环境


$ db9 branch create myapp --name staging
# 克隆:表+行+文件+Cron+权限

Agent 可以在分支上做实验,不影响生产。这对 Agent 安全性极其重要——试错成本为零。

5. FUSE 挂载


$ db9 fs mount myapp ~/local
# 把 db9 文件系统挂载到本地目录

Agent 可以用标准文件操作(catlsgrep)访问 db9 中的文件。

6. 内置 HTTP + Cron


-- SQL 里直接调 API
SELECT body::json->>'status' FROM http_get('https://api.example.com/health');

-- SQL 里设定时任务
-- db9 db cron myapp create '*/5 * * * *' 'SELECT sync_embeddings()'

📐 完整 RAG Pipeline(一个数据库搞定)

传统 RAG 需要 4-5 个服务,db9 只需一个:


传统:S3(文件) + PostgreSQL(元数据) + Pinecone(向量) + Redis(队列) + 应用代码(胶水)
db9:一个 db9 = 文件存储 + 元数据 + 向量搜索 + 定时任务 + 全文搜索

文章给出的完整 pipeline:

1. Step A: 源文档存为文件 → fs9_write('/docs/intro.md', ...)

2. Step B: Chunk + 索引 → CHUNK_TEXT() + doc_chunks

3. Step C: 检索 → FTS(tsvector)或向量(embedding()

4. Step D: 输出存为文件 + 元数据行 → fs9_write() + artifacts

👤 作者背景:为什么值得重视

Ed Huang(黄东旭) 不是普通开发者:

> "Agent 不需要新接口,需要它们已经理解的接口——文件系统、SQL、Bash。这些 mental model 在训练数据中重复了无数遍,已经成为 LLM 的强先验。"

这个判断和 Hermes 的设计哲学(Markdown + SQLite)不谋而合。

🆚 竞品对比

db9NeonSupabaseTurso (AgentFS)
定位**Agent-first**Serverless PostgresBaaSEdge SQLite
文件系统✅ fs9 (SQL 内)✅ Storage (独立)
内置 Embedding✅ `embedding()`
向量搜索✅ pgvector✅ pgvector✅ pgvector
环境分支✅ 一条命令✅ 分支
FUSE 挂载
内置 HTTP
OpenClaw 集成✅ 插件

db9 的独特价值:把 5 个服务合成 1 个,且这 1 个是 Agent 已经"理解"的 SQL。

💡 与我们的关联

1. 今天记忆系统研究的延伸

我们今天研究了 Hermes(SQLite + Markdown)、OpenClaw 内置记忆(SQLite + 向量)、Hindsight(PostgreSQL + 自动提取)。db9 提供了第四种视角

2. 文件即表的理念很强

我们的深度研究报告就是"文件形 artifact"——Markdown 文件存在 docs/deep-research/。如果用 db9,这些报告可以直接被 SQL 查询:


-- 查找所有评分 > 8.5 的报告
SELECT * FROM extensions.fs9('/docs/deep-research/*.md')
WHERE line LIKE '%综合%9.%';

3. Branch 功能对 Agent 安全性价值巨大

Agent 在分支上实验 → 确认无误 → 合并。不怕搞坏生产环境。

4. 但短期不适合我们

5. 长期启发

如果 OpenClaw 的记忆系统未来升级到 PostgreSQL 后端(Hindsight 已经在做),db9 的 fs9 理念——文件作为 SQL 一等公民——是最优雅的统一方式。

📊 评分

维度评分(/10)
技术创新9.0 — 文件即表 + 内置 embedding + 环境分支,架构统一且优雅
作者影响力9.5 — TiDB 创始人,有生产级 Agent 使用数据支撑
文档质量8.5 — 清晰的 SQL 示例,实操性强
Agent 生态8.0 — 支持 OpenClaw/Claude Code/Codex/Cursor 等
与我们的适配度6.5 — 理念优秀但短期不适合(云服务 vs 本地工作流)
**综合****8.5**

报告由深度研究助手自动生成 | 2026-03-21

来源: db9 Filesystem + SQL Patterns