• dengnan

    最近在做 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 的,做这个产品。

    想听听大家的看法:

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

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

    主楼
  • xue777hua

    这是不是伪需求?为什么会让 agent 直接动我的生产数据库?

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

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

    查询没问题。但是改动,不是随便允许的。

    #1

发表回复

登录后回复