大模型接入企业数据库(Text-to-SQL / Database Agent),在当下的行业实践中几乎被等同于只读分析工具:用户在聊天框里问一个指标,Agent 查库后吐出一段文本或一个图表。
然而,一旦剥离了真实的业务动作,“只读”往往会沦为玩具。在很多场景下,用户不仅需要查数据,更需要随时随地沉淀数据(CRUD 闭环)。
这个国庆假期,我用自己开源的数据库语义网关 DatI (Data Intelligence) 跑通了一个最小化闭环:将一个专属 MySQL 数据库发布为 MCP 服务,配合微信小程序端运行的 Agent(WorkBuddy),搭建了一个“伴侣日记与假期记录”轻应用。
整个旅途中通过微信发文字或发订单截图自动记账入库;假期结束时,Agent 直接查库完成统计复盘,并一键渲染生成了一个 PC 端交互式日程看板。
本文从架构与工程落地角度,复盘这种“零代码写后端”的 Agent 轻应用范式。
一、交付物:国庆六天日程看板
假期结束时,给 Agent 输入一句需求:“汇总国庆期间所有的足迹、消费和吵架记录,按天梳理并分析花费结构和体验。”
Agent 通过语义网关执行 SQL 聚合,直接生成了一个独立的响应式 HTML 看板:

看板呈现了多维度的结构化洞察:
- 核心 KPI:6 天、32 条足迹、总花费 ¥6,693.99(日均 ¥1,116)、平均体验评分 3.16、3 次小摩擦复盘;
- 六日时间线流:深圳(东门、邓紫棋演唱会)⇄ 泉州(开元寺、清源山、蟳埔村等)的每日行程明细与单笔账单;
- 结构化统计下钻:交通住宿占 60%(¥3,988)、演出娱乐占 26%(¥1,768)、餐饮探店占 14%(¥938);自动提炼 4 处高光(演唱会满分、盐烧番鸭等)与 3 处低于预期项目;
- 小摩擦复盘:归因 3 次 1 级拌嘴记录的起因与破冰方式。
从数据采集、结构化落库,到即席聚合与前端展示,整个流程没有手写一行业务后端代码。
二、架构设计:数据库是后端,DatI 是语义网关
传统开发模式下,做一个记账与日记系统需要:建表 → 写 CRUD REST 接口 → 做前端管理页面 → 维护状态与鉴权。
而在 Agent + MCP 体系下,架构被重塑为三层:
[ 交互前端 ] 微信小程序 (文字随手记 / 票据与订单截图)
│
▼
[ Agent 宿主 ] WorkBuddy (多模态 OCR + 意图识别 + 参数提取)
│ (标准 Streamable HTTP MCP 协议)
▼
[ 语义网关 ] DatI (Data Intelligence)
├── 业务语义增强 (表名/列注释/枚举倒排检索)
├── 参数化 SQL 模板 (确定性的写操作工具:add_moment, add_conflict)
└── 受控 SQL 执行器 (即席分析,防高危操作与超时熔断)
│
▼
[ 生产存储 ] MySQL (couple_moment 生活足迹表 + conflict_record 矛盾复盘表)
1. 数据建模(MySQL)
仅需在底层定义好核心实体表:
couple_moment:记录时间、标题、分类枚举(DINING、MOVIE、TRAVEL、DAILY)、消费金额cost、体验评分rating(1~5)、文字感受content。conflict_record:记录发生时间、矛盾起因reason、破冰人peacemaker、严重级别severity(1~5)、和好约定agreement。
2. 为什么写操作不能让大模型自由裸写 SQL?
许多开发者尝试给 Agent 开放 execute_sql 工具来做写入,但在生产实践中极不可靠:
- 格式漂移:大模型生成的日期格式不固定、枚举大小写不一致、金额误带货币符号;
- 越权与误伤:生成的
UPDATE或DELETE一旦遗漏WHERE条件,极易全表覆盖; - 长上下文衰减:多轮对话后模型容易遗忘字段约束与外键关系。
3. DatI 的工程解法:参数化 SQL 模板
DatI 的核心能力之一,是将高频写操作通过参数化模板暴露为结构严谨的原子工具(Custom Tools):
INSERT INTO couple_moment
(title, category, cost, rating, start_date, end_date, content, recorder)
VALUES
(:title, :category, COALESCE(:cost, 0), COALESCE(:rating, 3),
:start_date, COALESCE(:end_date, :start_date), :content, :_user.name);
- 类型受控:DatI 自动生成严格的 JSON Schema。大模型仅负责理解用户意图并“填槽”提取入参,核心 SQL 骨架与参数类型由网关强制校验;
- 零代码发布 MCP:配置好模板与语义别名后,在 DatI 后台一键发布为标准 Streamable HTTP 接口,外部 Agent 填入 URL 与 Token 即插即用。
三、端到端交互链路
- 多模态低阻力采集(写操作):
旅途中无需打开电脑后台,在微信小程序中直接发送:- 随手记:“中午在全牛馆吃了99块,牛杂还行打了3星。” → Agent 提取参数并调用 DatI 的
add_moment工具入库; - 发截图:发送高铁退改签或外卖订单截图 → Agent 通过 OCR 提取车次、站点与金额,自动写入账单;
- 闹矛盾:“刚才晾衣服闹了点小情绪,聊了会儿和好了。” → 自动沉淀至
conflict_record。
- 随手记:“中午在全牛馆吃了99块,牛杂还行打了3星。” → Agent 提取参数并调用 DatI 的
- 即席多维聚合(读操作):
假期结束时,利用自然语言触发跨表聚合统计。DatI 注入业务语义与字段别名,Agent 准确生成聚合 SQL 完成指标计算。 - 动态全栈交付(看板生成):
Agent 将统计结果与时间线数据作为上下文,直接写出具备现代 UI 样式的独立 HTML 看板。
四、工程启示
这个案例证明了一条清晰的技术路径:
在 Agent 时代,数据库负责纯粹的持久化,DatI 负责语义转译与安全受控网关,Agent 负责灵活的交互与界面生成。
不论是个人日记与记账,还是企业中的研发值班故障复盘、一线销售拜访记录、敏捷 Sprint 追踪,过去需要耗费数天编写的前后端 CRUD 流程,现在都可以压缩为“建两张表 + 5分钟配置 DatI 网关”。