如何阻止编码代理接触生产数据?

Reddit r/AI_Agents 新闻

摘要

讨论防止AI编码代理意外修改生产数据库的策略,主张使用只读访问、沙盒环境和审批关口,而不是仅仅依赖提示。

我有一个使用SQLite的小型交易脚本。没什么特别的,但数据库是真实的,我绝对不希望AI编码代理在帮我调试时意外修改它。我希望代理做的常规操作都是无害的: * 检查模式 * 读取最近的行 * 解释奇怪的交易 * 总结日志 * 帮助我理解某个策略为何表现异常 我绝对不希望它对 `prod.sqlite` 做的事情: * `UPDATE` * `DELETE` * `DROP TABLE` * `ALTER TABLE` * 编写并运行随机迁移代码 * “清理”数据(因为它认为这样有帮助) 所以我目前的思路是:不要依赖提示。“请不要修改生产数据”不是安全边界。 我正在考虑的设置大致如下: * 生产数据库对代理是只读的 * 任何写入/调试实验都在复制的开发数据库上进行 * 代理通过一个小型包装器/工具访问数据库,而不是原始shell访问 * 每个数据库操作在执行前都会经过检查 * 破坏性操作被完全阻止 * 模糊的操作需要人工批准 我想要的规则基本上是: * 生产数据库:只读 * 开发数据库:读写 * 破坏性操作:从不允许 * 模式检查:允许 * 交易/日志分析:允许 * 任何模糊的操作:先问我 显然,这不能替代操作系统权限、备份、容器或常识。如果代理拥有对真实数据库文件的未限制shell访问权限,那么包装器或审批流程也无法神奇地拯救我。但如果代理只能通过受控接口访问,那似乎是一个合理的额外防护层。 好奇其他人实际中是如何处理的。你们会让编码代理接触真实数据吗?你们在使用: * 只读副本? * 文件权限? * Docker/沙盒? * 自定义数据库包装器? * 策略检查? * 破坏性操作的审批关口? * 单独的数据库开发副本? 我特别感兴趣的是人们目前实际使用的设置,而不仅仅“告诉模型不要这样做”。
查看原文

相似文章