爱意满满的作品展示区。
dengnan

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

  •  
  •   dengnan · 7 days ago · 912 views

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

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

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

    • Snapshot:agent 动手前给表打个快照。只记元数据,不复制数据,随时可以对比或回退
    • Branch:给 agent 开一个可写的表分支,它的增删改都在分支上,不碰主表
    • Diff:行级对比分支和主表,改了哪些行、改成什么一目了然
    • Merge:审核通过后按明确的冲突策略合并回主表;不满意就直接丢掉分支

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

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

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

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

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

    想听听大家的看法:

    1. 你们现在让 agent 写数据库,是怎么兜底的?只给只读权限、人工审 SQL ,还是别的办法?
    2. 行级 diff 审核这种方式,在你们的场景里实际用得上吗,还是太重了?
    1 replies  •  2026-10-04 00:28:58 +08:00
    xue777hua
        1
    xue777hua  
       7 days ago via iPhone
    这是不是伪需求?为什么会让 agent 直接动我的生产数据库?

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

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

    查询没问题。但是改动,不是随便允许的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2574 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:51 · PVG 08:51 · LAX 17:51 · JFK 20:51
    ♥ Do have faith in what you're doing.