让 AI Agent 改数据库之前,先开个分支:我们在 MatrixOne 里做了 Snapshot / Branch / Diff / Merge

dengnan 2026-10-03 09:55 1

最近在做 agent 落地时一直被一个问题困扰:让 agent 查数据很容易,让它写数据就很吓人。


提示词里写"不要乱改生产数据"没什么用。agent 拿到一个有写权限的连接,一句 WHERE 条件写宽了,几千行就被悄悄改掉了,事后连改了哪些行都说不清楚。


我们的思路是把 Git 那套工作流搬到表上,做成数据库原生的 SQL 能力( MatrixOne ,开源,兼容 MySQL 协议):



  • Snapshot:agent 动手前给表打个快照。只记元数据,不复制数据,随时可以对比或回退

  • Branch:给 agent 开一个可写的表分支,它的增删改都在分支上,不碰主表

  • Diff:行级对比分支和主表,改了哪些行、改成什么一目了然

  • Merge:审核通过后按明确的冲突策略合并回主表;不满意就直接丢掉分支


简单说就是给表提 PR:隔离 → 审查 → 批准 → 合并。


先说清楚边界,免得被喷:



  • 这是底层原语,不是完整的安全方案。校验规则、审批流程、权限、审计还得你自己的系统来做,我们提供的是一条"可以被卡住"的写入路径

  • 教程里的示例是演示场景,不是客户案例


想试的话,教程是可以直接跑的 SQL:



  • 教程仓库: https://github.com/matrixorigin/git4data-tutorial

  • 上手文章: https://www.matrixorigin.io/blog/git4data-part2-hands-on

  • MatrixOne: https://github.com/matrixorigin/matrixone

  • 介绍页: https://git4data.ai


利益相关:我是 MatrixOrigin 的,做这个产品。


想听听大家的看法:



  1. 你们现在让 agent 写数据库,是怎么兜底的?只给只读权限、人工审 SQL ,还是别的办法?

  2. 行级 diff 审核这种方式,在你们的场景里实际用得上吗,还是太重了?

最新回复 (1)
  • xue777hua 10-04 00:28
    1楼
    这是不是伪需求?为什么会让 agent 直接动我的生产数据库?

    你说说合理的场景?我没想到。

    其实不光是 agent ,哪怕是人,想要直接动生产库,都是不被随便允许的。这是管理机制上决定的。

    查询没问题。但是改动,不是随便允许的。
* 帖子来源V2EX
返回