环境与沙箱:Agent 的安全边界

笔记/AI编程/Agent Harness工程/环境与沙箱:Agent 的安全边界

背景与动机#

Agent 一旦能读写文件、执行命令、访问网络,就不再只是文本生成器,而是一个能改变系统状态的执行体。环境和沙箱的设计,就是为了让这种能力可控。

安全边界应该在系统层实现,而不是只靠提示词提醒模型“不要乱做”。

img
img

环境包含什么#

一个 Agent Environment 通常包括:

  • 工作目录。
  • 可读写路径。
  • 可执行命令。
  • 环境变量。
  • 网络权限。
  • 外部工具凭据。
  • 资源限制。

每一项都应该有默认最小权限。

文件系统权限#

建议区分:

只读目录
可写工作区
禁止访问目录
生成产物目录

例如,Agent 可以读取源码,但不一定能读取用户主目录;可以写当前任务分支,但不能直接改生产配置。

命令执行权限#

命令可以按风险分级:

  • 低风险:rglsgit status、测试命令。
  • 中风险:安装依赖、运行格式化、生成代码。
  • 高风险:删除文件、数据库迁移、部署、推送。

高风险命令需要人工确认,不能只靠 Agent 自己判断。

网络和密钥#

网络访问要限制目标,密钥要限制用途。不要把完整云账号权限直接暴露给 Agent。

更好的方式是:

  • 使用只读 token。
  • 为工具单独创建服务账号。
  • 按环境区分 dev、staging、prod。
  • 写操作需要确认或审批。

常见陷阱#

  • 默认给 Agent 全盘文件访问。
  • 所有命令都通过无限制 shell 执行。
  • 密钥放在普通上下文里,让模型直接看到。
  • 生产环境和本地测试环境没有隔离。

沙箱设计清单#

默认是否只读?
哪些路径允许写入?
哪些命令必须禁止?
哪些网络域名允许访问?
凭证是否按任务临时注入?
高风险动作是否有人工确认?
工具输出是否会带入提示注入?

一句话总结#

Agent 的安全不能只靠提示词,必须通过环境、沙箱、权限和人工确认点共同约束。

文章目录

文章目录