数据库自动驾驶的关键:为DBA Agent打造可观测、可控制、可回滚的Runtime身体
第一部分:引子 —— 一个值得深思的现象
今天我想探讨一个现象:**为何时至今日,能够真正管理生产环境的DBA Agent依然凤毛麟角?**我的判断直截了当——大模型的智力已足够强大,它缺少的不是大脑,而是一副身体。这副身体需要具备感知状态、执行操作、评估风险、留存证据以及出错后回退的能力。接下来,我要分享的就是如何为DBA Agent锻造这样一副身体。
2 令人震惊的流量真相
在座诸位或许都听说过Pigsty。这是我开发的一款开源PostgreSQL发行版,初衷很纯粹:让缺乏专职DBA、不使用RDS的团队,也能通过开源方式自助构建企业级PostgreSQL服务。

该项目在GitHub上已收获逾5000颗星标,稳居PG发行版项目前三甲,也是中国PostgreSQL生态中星标最多的开源项目。如此体量的开源项目网站,月访问量会是多少?10万?100万?还是1000万?
3 流量异常背后的秘密
答案远超所有人的预期——过去一个月产生了9600万次请求,且仍在持续攀升,按当前趋势很快将突破1亿大关。问题随之而来,真实用户怎会产生如此庞大的访问量?

查看网页分析后发现,月度独立访客仅数万人,页面浏览量约几十万量级。那么剩余的近亿次请求源自何处?通过User-Agent、访问路径和触发方式分析,大量流量并非传统人类访问,而是由AI/Agent工具在读取文档。
4 谁在幕后访问?
我琢磨许久才恍然大悟。年初发布Pigsty 4.0时,我们加入了一项名为DBA Agent的特性。听起来高深莫测,实则就是一个CLAUDE.md文件,内容极其朴素:第一,禁止删库;第二,遇问题查阅文档;随后附上所有文档链接。就这么简单的文件,用户群体中却悄然涌现出一批新面孔——他们未必精通PostgreSQL与Linux,但手握Claude Code和Codex。

他们在Linux环境下对AI发号施令:“帮我装个PG"“帮我创建用户"“帮我排查这个问题”。AI要完成这些任务,就必须持续不断地读取文档。因此那近亿次请求并非人类手动点击产生,而是Agent代为用户执行的。Agent正在替代用户承担DBA角色,而且——表现得相当出色。
5 Agent已悄然承担DBA职责
坦率讲,我觉得这些Agent干得相当不错。我自己遇到棘手问题时也会如此操作。我会在仿真环境的Pigsty目录中告知它:我遇到了这个问题,或客户遇到了这个问题,请你根据源代码、配置文件、日志和文档分析可能原因。有时我会提供几个直觉方向:A、B、C,帮我判断哪个可能性更高。

它最终分析的结果往往八九不离十。不是说它永远正确,但已足够令人刮目相看。因此今天讨论的DBA Agent并非PPT上的概念,而是已在开源用户群体中真实发生的现象。
6 D-Bot:两年前的成功预言
更有趣的是,如今众人蜂拥而入DBA Agent赛道,其实两年前在Pigsty上就已有人实践。
清华大学周轩赫团队基于Pigsty环境开发了名为D-Bot的DBA Agent,相关论文后来发表在VLDB会议上。当时他们使用的还是GPT-4,即便在当时的模型条件下,也已能让D-Bot在Pigsty环境中完成相当复杂的故障诊断,并生成有据可查的根因分析与处置建议。

他们选择Pigsty的重要原因在于,Pigsty提供了这样一个开源开放、标准化、具备生产质量的运行时环境。因此他们只需实现智能逻辑,无需从零搭建基础设施:数据可直接取自监控系统,执行操作也有现成命令行原语。两年过去,模型能力已提升不知多少倍。那么今天,我们手中的这套Runtime加SOTA模型的组合,又能创造出怎样的成果?这个想象空间——我想留给在座的各位。
第二部分:理论——身体由什么组成?
7 数据库自动驾驶为何屡屡碰壁?
听到这个故事,肯定有人会问:“那AI是否要替代DBA了?“我的判断是:为时尚早,毕竟AI无法替你背锅。但这确实揭示了一种可能性:数据库自动驾驶。这个概念并非新生事物,Oracle提过,云厂商提过,学术界也提过。
但这么多年来,真正好用的寥寥无几。我认为在当前技术条件下,这件事实际上已经可以落地。即便L5级全自动眼下尚难实现,作为Copilot形式的副驾驶辅助,肯定不成问题。所以真正的问题是:我们到底应该为它准备什么,才能让数据库自动驾驶成为现实?
8 解读数据库需求金字塔
我此前绘制过一个数据库需求金字塔。金字塔顶端是智能——数据库自动驾驶,这是终极目标。但要实现这一点,其下必须有掌控与洞察——你得能看见、能控制。再往下,是质量、安全、效率、成本这些基本盘。你连监控都没做好,变更还依赖祖传脚本,高可用和时间点恢复都无法稳定演练,那就别谈数据库自动驾驶。

这就像想造自动驾驶汽车,结果车上没有传感器、没有刹车、没有方向盘、没有安全气囊,算法再聪明又有何用?因此DBA Agent的核心不是模型,也不是Agent框架,而是一个确定性的环境,以及与这套环境交互的身体。这也是今天演讲的主题。
9 身体的基石:可观测性与可控制性
给Agent一副身体究竟意味着什么?我认为最基础的两样东西是眼睛和手脚。第一,眼睛——可观测性。它要能看到数据库、操作系统、网络、磁盘、连接池、备份、复制延迟和历史趋势。第二,手脚——可控制性。它要有可靠的动作入口,能执行变更、重启服务、主从切换、备份恢复、创建用户、扩缩容。先说眼睛。

10 眼睛:构建全方位可观测性
任何DBA Agent要解决的首要问题必定是信息收集。它得知道当前正在发生什么。这件事在Pigsty中其实早已实现:Pigsty提供了一整套基于VictoriaMetrics、Grafana的开源可观测性栈,将PostgreSQL中能采集的观测数据基本一网打尽。无论是Agent还是人类,有效管理的基础必然是充分的信息收集。

例如这类AI DBA产品的形态,通常都会先聚焦监控:指标采集、异常检测、告警,再加一个与Agent对话的入口。PGEdge的AI DBA Workbench就是典型例子。这实际上说明,监控系统肯定是DBA Agent最基本、最重要的组成部分。但监控系统这件事我已讲过多遍,今天不想重复。今天我想讲讲身体的另一部分,也就是"手脚”。我们今天不讲"眼睛”,我们讲"手脚”。
11 数据库自动化的演进之路
从自动化角度看,数据库管理大概经历了几个阶段。第一阶段,纯手工操作,DBA逐条敲击命令。第二阶段,祖传脚本,或在控制台里点点点,也就是所谓的ClickOps。第三阶段,IaC——用Ansible、Terraform、Operator这类工具做声明式管理。第四阶段,Agent——人不再逐条编写命令,而是告知Agent目标,让它观察、计划、执行、验证。这里有个关键点:Agent要进入第四阶段,必须先具备第三阶段的基础。没有IaC,Agent很难稳定工作。这件事我后面会专门讲,先回到一个更具体的问题——Agent到底应该如何操作数据库?
12 统一动作接口:专家与Agent的共同需求
Agent操作数据库,是让它打开浏览器在控制台里点点点?还是调用API?亦或是使用命令行?
对专家和Agent而言,真正重要的不是GUI,而是一个明确、可组合、可审计、可复制的动作接口。CLI是最自然的形态之一,尤其当它同时支持JSON/YAML这类结构化输出时,它就既适合人类,也适合Agent。
因此我有个判断:Agent时代将重新振兴CLI的价值。这其实也回归了Unix哲学最初的理念——一切皆文本,一切皆可组合。
13 PostgreSQL生态的碎片化困境
但这里有个尴尬的现实:PostgreSQL生态很强,但也很碎。你要安装PG,可能用apt或dnf;启动服务,可能用systemctl或pg_ctl;执行SQL,用psql;管理高可用,用patronictl;备份,用pgBackRest;连接池,用PgBouncer;扩展,又是另一堆包和配置。老司机当然没问题,老司机知道每个工具怎么用,知道坑在哪里。但如果你想让Agent管数据库,这就成了问题——Agent需要的是一个统一的动作入口,它不能每次都在一堆零散工具和祖传脚本里猜。所以我们就想,能不能做一个东西,把这些零散的工具统一起来。

14 Pig CLI的诞生:从扩展包管理开始
我们做的工具叫Pig CLI,最早其实很简单——它是我用Go写的一个小工具,主要解决PostgreSQL和扩展安装的问题。它不是要重造apt或dnf,而是在apt/dnf之上加一层PostgreSQL语义。为什么?因为传统包管理器只知道"包”,不知道"PostgreSQL扩展"。你说我要装vector,包管理器不知道你到底要哪个包、哪个PG主版本、哪个Linux发行版、哪个架构。Pig做的第一件事,就是把"包"翻译成"数据库能力"。

15 安装:新手的第一道坎
不要小看安装。很多新手上手PostgreSQL,第一个拦路虎就是扩展安装。他想用一个扩展,但没有能力自己编译、打包、构建、分发,那就只能找现成的二进制包。找不到怎么办?网络环境不好怎么办?版本不匹配怎么办?这件事对老司机不难,但对新人非常劝退。Pigsty做的一件重要工作,就是维护PostgreSQL扩展的二进制分发能力,把大量第三方扩展整合进来,让它们在主流Linux发行版上开箱即用。这就把PostgreSQL的很多"超能力",真正交到了普通用户手里。
16 Day 2 Operations才是DBA的主战场
当然,如果Pig只能安装扩展,那还是太弱了。DBA真正的大头,是Day 2 Operations。装完之后,你要创建集群、初始化目录、配置权限、调整参数、创建用户和数据库、配置连接池、配置备份、配置监控;后面还有切主、扩容、缩容、恢复、巡检、清理、Repack、升级。这些以前在Pigsty里主要通过Ansible Playbook完成,你让Claude Code去读文档、跑Playbook,它也能干,但使用体验还不够好。我们真正想要的是:把日常DBA管理所需的原语,统一收纳到一个命令行工具里——也就是把Pig CLI从一个扩展包管理器,演化成一个能完整管理PG状态的工具。
17 Pig CLI的终极目标:成为PG生态的瑞士军刀
所以Pig CLI后面的目标,就不是简单的包管理器了。它要变成PostgreSQL生态里的瑞士军刀:安装PostgreSQL,安装扩展,构建扩展,初始化集群,管理服务,查看状态,管理高可用,配置备份,执行维护操作。能不能把这些动作都收敛到一个统一入口?这不仅能解放DBA的双手,更重要的是,它让Agent有了手脚。人可以记住一堆复杂工具,Agent也可以,但没有必要——给它一个更清晰、更稳定的动作入口,它会干得更好。

18 为Agent而生的CLI设计哲学
但这里又有一个新问题。Unix哲学讲KISS——一个工具只干一件事,把它干好,然后通过管道组合。你现在把一堆能力都塞进Pig CLI,会不会变成一个臃肿的全家桶?这个问题要正面回答。我的答案是:对人类来说,小而美很重要;但对Agent来说,自解释更重要。一个Agent-Native CLI,必须能自己解释自己——它的help要足够清楚,输出要足够结构化,错误信息要足够明确。人类看彩色文本,Agent看JSON/YAML,两边都要照顾。
说白了,最好的工具状态不是你事先给Agent写一堆Skills文档告诉它怎么用,而是工具本身就足够自解释。Agent敲一个--help就能逐层探索:有哪些命令、有哪些参数、参数含义是什么、输出格式是什么、错误码是什么。这件事听起来像细节,其实是Agent时代CLI设计的核心。当然,要真正实现Agent原生,还有很多细节设计:dry-run、幂等性、明确exit code、机器可读错误、权限边界、危险操作二次确认、操作日志、回滚建议,这里就不展开了。

19 为什么先做Linux原生Runtime
有人会问:为什么不基于Kubernetes来做管理,而是直接做Linux上的PG管理命令行工具?我的看法是,K8s Operator当然也是一种Runtime,但它把很多底层细节封装起来了,同时也引入了额外的抽象层和复杂度。封装对应用开发者是好事,对DBA Agent未必总是好事,因为一旦问题穿透抽象层,Agent需要看到systemd、磁盘、文件系统、网络和PostgreSQL本身。
也就是说,如果你想把数据库运行时这件事做到极致,你不能只掌控数据库连接串,也不能只掌控一层抽象API,你得掌控数据库真正运行的环境。我们要打造的不是一个只有工具调用能力的DBA Agent,而是一个能看见完整现场、理解完整现场、操作完整现场的DBA Agent。所以它需要的不只是手脚,而是一副完整的身体。
第三部分:转折——工具不够,运行时才是护城河
20 OtterTune的启示:Runtime不可或缺
有一个案例值得借鉴与思考——OtterTune。它由CMU数据库教授Andy Pavlo参与创立,曾融资1200万美元A轮,专注PostgreSQL和MySQL的自动参数调优,最终却未能成为数据库自动驾驶的标准答案。为何会走到这一步?他们的产品形态是:你给我一个数据库连接串,我就能帮你调优。听着很美,对吧?但连接串是所有PG服务的最大公约数。光靠连接串你能做什么?你能跑几条SQL,看几个系统视图。但你看不到完整的历史趋势,重启不了数据库,改不了需要重启才生效的参数。出了问题你没法级联排查——这是业务问题、数据库问题、OS问题、网络问题?你统统看不到。
21 Runtime:专家级DBA Agent的必需品
我从OtterTune这个案例中读到的一个教训是:如果只有连接串,没有Runtime,你很难做出专家级DBA Agent。一个连接串只是一个细细的猫眼,你只能透过它看到房屋内的一块角落。但真正的细节,隐藏在操作系统、磁盘、文件系统、服务管理、监控历史、备份链路这些地方。一个工具再聪明,如果只能透过猫眼看世界,它就永远做不出专家级的判断。
Pigsty最早是一个监控系统。那它为什么后来变成了一个完整的PG全家桶发行版?就是因为我后来意识到,你要想把监控系统做到极致,就必须直接接管整个基础设施。否则,你根本控制不了用户怎么部署数据库。你能拿到手里的只是一个连接串,而你能做到的事情是极其有限的。所以做DBA Agent真正的关键,不是命令行工具有多漂亮,而是它背后挂着一个什么样的Runtime。
22 Runtime才是难以复制的核心竞争力
现在很多人做Agent,喜欢讲Prompt、Skills、工作流。这些东西当然有用,但我说句直接的——它们构不成很强的护城河。你把老司机DBA的经验写成Markdown,模型厂商也能看,别人也能学,下一代模型出来,很多知识直接就被吸收了。那真正的护城河是什么?是Agent对你私有环境的理解。这个环境怎么部署的?有哪些实例?备份策略是什么?过去发生过什么告警?哪些操作做过?哪些坑踩过?这些东西不会出现在通用训练数据里。

所以一句话总结:单独做一个通用Agent,壁垒不会太深;真正有壁垒的是Agent对Runtime的理解,以及Runtime本身沉淀下来的状态、历史和操作边界。
23 上下文工程:Runtime落地的最大挑战
那Runtime怎么变成Agent能用的东西?这就是真正难的地方——上下文工程。你怎么把正确的信息喂给它?我的观点很明确:现在自己从头写一个所谓的DBA Agent框架,大概率不如直接用Claude Code、Codex。真正难的不是外面那层Agent框架,而是怎么把正确的上下文、正确的权限、正确的工具边界喂给它。
对DBA Agent来说,上下文不是聊天记录,而是拓扑、指标、日志、配置和变更历史。拓扑告诉它系统长什么样,指标告诉它现在哪里不对,日志告诉它发生了什么,配置告诉它为什么会这样,变更历史告诉它是谁刚刚动过什么。信息主要来自两边:一边是观测侧——监控、日志、告警、指标、历史趋势;一边是管控侧——Inventory、配置、权限、Playbook、CLI、备份恢复入口。这两边打通,Agent才能从"会聊天"变成"会干活"。
24 IaC:Agent的中心法则
讲到这里,我要把一个东西单独拎出来,因为它是Pigsty里DBA Agent能跑起来的最核心、最灵魂的秘密——那就是IaC。Pigsty的整个环境,是由一份Inventory定义出来的。几节点、谁是主、谁是从、监控在哪、备份在哪、端口是什么、角色是什么——这些东西全在配置清单里。

这份清单不是事后写的说明书,它就是生成整个环境的蓝图。Agent拿到这份蓝图,就知道这个环境长什么样。它不是在一个陌生世界里瞎猜,而是在读这个世界的源代码。这就是IaC对Agent的真正价值——它让环境本身变得可读,并且浓缩在一个文件中。
25 人剑合一:Agent与环境融合的最高境界
讲到这里,前面这些拼图就可以缝合起来了。我用一个比喻——高手讲究人剑合一。剑客和长剑合一,程序员和键盘合一,老司机和方向盘合一,DBA也是一样。DBA的能力不只是脑子里知道数据库原理,而是他和自己的环境合一。一个顶级专家到了陌生环境里,表现未必比得上一个在这个环境里泡了三年的普通人——因为后者知道哪里有坑,知道哪个机器慢,知道哪个参数不能动,知道哪个业务一到晚上就抽风。
Agent也是一样。你把Claude Code丢进一个完全陌生的Linux环境,它也会蒙;但你把它放进一个确定性的Pigsty Runtime里,再给它Inventory、监控、文档、CLI,它就能干很多事。
26 从Copilot到自动驾驶:循序渐进方为上策
当然,我也要泼一点冷水。对于严肃生产环境,我不建议大家一上来就让Agent全自动接管数据库。现在比较靠谱的形态,还是Copilot——Agent帮你收集信息,分析问题,生成方案,解释风险,然后由人来确认;要么人执行,要么人授权它执行。特别是删除、销毁、不可恢复这类操作,必须有强约束。
回到我们一开始说的——AI没法替你背锅。责任无法转移,操作就必须有人确认。这就是为什么DBA Agent必须先做扎实的Copilot,而不是激进的L5全自动驾驶。今天,DBA Copilot的只读建议+人工执行这条路径,已经具备生产可用的成熟度。下一步,是把这条路径里的每一步都打磨得更加可靠。
第四部分:外推——从DBA Agent到Dev Agent
27 超越DBA:piglet.run赋能开发Agent
前面讲的都是DBA Agent,是企业级部署、大规模PostgreSQL集群。但还有另一类用户——个人开发者,或者小团队。他们不一定需要一套复杂的DBaaS管理系统,他们需要的是一个开箱即用的开发运行时。

这就是piglet.run想解决的问题:把Pigsty里面这套可观测、可控制、可回滚的能力,收敛成一个给个人开发者和小团队使用的开发运行时。一条龙从Linux虚拟机,帮你配置好PostgreSQL、Nginx、监控系统、开发工具、Claude Code、Codex、Code Server这些东西,然后你就可以让Coding Agent在这个环境里干活。为DBA Agent准备的那个Runtime——可观测、可控制、可回滚的环境——对Dev Agent来说同样适用,甚至更好用。
28 pg.center:Runtime实战案例
我举个自己的例子。我最近做了一个小项目,叫pg.center,是postgresql.org的非官方中文镜像站。以前你想做这么一个东西,其实不算小活:你要找网站仓库,要处理内容抓取,要翻译,要生成页面,要部署,要定时同步更新。但现在做法很简单:我登上一台云服务器,一行命令把Runtime拉起来,Nginx、数据库、监控、编程环境都装好。

然后我打开Claude Code,告诉它:“我想把PostgreSQL官网做一个中文版,你先拟一个计划,然后执行。“最后大概一天时间,这个站就跑起来了,而且可以定时同步更新。这就是Runtime的价值——你不是在本地写完再部署,而是让Agent直接在一个确定性的生产级环境里出活。
29 Agent时代的LAMP新解
这让我想到以前的LAMP Stack。Linux、Apache、MySQL、PHP,那个时代很多网站就是靠这一套快速起飞的。现在时代变了,P不一定是PHP,可能是Node.js,可能是Go,可能是Python,也可能是什么Agent喜欢用的语言。但有几样东西依然稳定:Linux要有,数据库要有,Web入口要有,监控要有。所以我有一个判断——Agent时代会出现一套新的基础栈,它不是给传统程序员准备的,而是给Dev Agent准备的。

我把它叫做AI Agent的LAMP套件——Linux、Agent、Monitoring、PostgreSQL。这当然不是严格复刻当年的LAMP,而是Agent时代的一个新记忆锚点:Linux提供环境,Agent提供执行,Monitoring提供眼睛,PostgreSQL提供数据和状态。而Pigsty就能为你提供这个套件。有了这套东西,一个开发者想做一个网站、一个门户、一个内部系统、一个数据应用,门槛会低很多。你真正要操心的,可能只剩两件事:买个域名,买台服务器,剩下的细节,可以交给Agent。
30 文件系统回滚:给Agent试错的安全网
我确实觉得这里面有一个非常有趣的功能值得一提,那就是时间旅行与环境共享。把Agent的状态放进数据库

我们用JuiceFS做了一件事:把文件系统的状态也放进PostgreSQL。这意味着——你的代码、配置、数据库内容现在共享同一个备份和回滚体系。Agent搞砸了?一键PITR,整个环境包括文件系统全部回到5分钟前。而且你还可以把这个文件系统挂载到Linux、Windows和macOS上,多人多设备共享一个目录。
这样的特性对于Agent来说极其实用。Agent可以放心试错,搞砸了就用PITR回滚。这种以前属于DBA的"终极黑魔法”,现在开始走入寻常百姓家。这给了Agent可以大胆试错的底气。
第五部分:把身体交给社区
31 Pigsty:不只是DBA Agent的身体
到这里,我们可以把前面的东西收束成一句话:Pigsty表面上是PostgreSQL发行版,本质上是一个Agent Runtime。它把Linux、PostgreSQL、监控、备份、高可用、IaC、CLI和文档放在同一个确定性世界里。对DBA Agent,它是生产现场;对Dev Agent,它是开发环境;对Coding Agent,它是可以试错、验证和回滚的执行环境。

32 开放的演武场:邀你共建Agent生态
所以我很欢迎想做Agent的朋友来Pigsty里玩一玩——你可以把它当作一个演武场。这里有真实的PostgreSQL,有真实的Linux,有真实的监控,有真实的备份恢复,有真实的高可用,有真实的配置和管理入口。你没必要从零开始重复造轮子——要做DBA Agent,要做Dev Agent,都可以拿它当成一个方便的底座。

如果你是Agent开发者或用户,你不用从底层环境开始搭,只需要让你的Claude Code、Codex在这个环境里跑,让它沉淀对这套环境的认识,沉淀为记忆和Skills。它会越来越熟悉环境,越来越有能力。
33 开源Runtime:Agent生态的基石
在Agent时代,真正有价值的东西不是一段Prompt,不是一个Skills文件,也不是某个看起来很聪明的聊天界面。那些东西都会被复制、被吸收、被快速抹平。真正难复制的,是一整套稳定、透明、可观测、可控制、可回滚的运行时环境。
这就是Pigsty想提供的东西:一个开源开放的PostgreSQL Runtime,一个Agent可以真正进入、理解、操作、验证和积累经验的世界。它不是把Agent关在一个网页Demo里表演,而是把Agent放进真实的Linux、真实的数据库、真实的监控、真实的备份、真实的高可用和真实的现场里验证。
未来不会只有一个Agent,也不会只有一种正确答案;一定会有一百个、一千个不同方向的Agent长出来。它们都需要身体,都需要一个可以落地的环境,而Pigsty可以成为这副身体的骨架。
34 赋能Agent,重塑人的价值
我们给Agent一个身体,不是为了把人替掉,而是为了解放生产力。DBA不应该把时间浪费在重复安装、重复巡检、重复查指标、重复写脚本上;开发者也不应该把时间浪费在一遍遍配置数据库、配置Nginx、配置监控、配置部署流程上。这些事情Agent可以做,而且会越做越好。
但这不等于人被替代。恰恰相反,越是Agent能干活,人越要往上走。人要定义目标,设计系统,判断风险,制定边界,承担责任。人不再是那个亲手拧每一颗螺丝的人,而是那个决定机器应该如何运转、出了问题谁来负责、哪些事情绝不能交给机器乱来的那个人。
模型会一代一代换,Agent会一批一批退场;真正留下来的,是那些可复现、可审计、可回滚、可托付的运行时。Pigsty想做的,就是这样一块地基。别只把它当成一个PostgreSQL发行版。把你的Agent放进一个可观察、可控制、可回滚的环境里,让它跑,让它试错,让它验证,让它长出真正能进入生产的身体。
谢谢大家。