strands-agents/box

Run AI agents in a sandbox that restricts what they can execute, read, write, and reach on the network. Box combines OS isolation with default-deny Dogwood policies and credential injection that keeps secrets outside the agent. Written in Rust. Supports macOS on Apple silicon, with Linux support planned.

Strands Box – 它是什么

Strands Box 是一个开源沙箱引擎,让您在严格控制的环境中执行 AI 代理程序。沙箱在操作系统级别隔离代理,然后对代理尝试执行的每个操作(文件读取、程序启动、网络调用或工具调用)应用语义策略(以 Dogwood 策略语言编写)。

为什么重要

在本地执行强大的基于 LLM 的代理可能会有风险:代理可能意外读取或修改敏感文件、启动不必要的进程,或在调用外部 API 时泄露凭证。Strands Box 让开发人员能够明确声明代理可以执行哪些操作,并在运行时强制执行这些规则,且能根据代理的历史记录做出决策(例如,“读取机密文件后,阻止任何对外的 HTTP 请求”)。

核心功能(根据 README 所述)

功能 说明
文件 / 程序 / 网络限制 在 box.toml 中定义直接的 OS 级别授权。未授权的项目会在代理看到之前就被阻止。
语义与时间策略 Dogwood 规则(permit / forbid)可以检查操作、其参数、先前的动作和经过的时间。默认情况下,除非有 permit 匹配,否则所有操作都会被拒绝。
统一策略引擎 相同的 Dogwood 引擎用于四个“网关”:Strands Shell、Monty(Python)、对外 HTTP 网关和 MCP 代理。通过任何这些网关执行的操作都会记录在共享的事件历史中,实现跨工具策略。
工具调用检查 对外网关验证 HTTP 方法和路径;MCP 代理验证设置的工具调用和参数。
凭证注入 当请求被允许时,网关可以添加 API 密钥或 AWS SigV4 签名,而不会将原始机密暴露给代理。
决策遥测 每个策略决策都会记录在 OTLP 兼容的 JSON 行(records.jsonl)中,用于审计或调试。
平台支持 目前可在配备 Apple silicon 的 macOS 15+ 上本地执行。

运作方式 – 快速流程

  1. 代理在 OS 沙箱中执行,仅具有 box.toml 中列出的授权。
  2. 当代理想要读取文件、启动程序或发出网络请求时,它会与其中一个 Box 网关(Shell、Monty、egress、MCP)通信。
  3. 网关将请求转发给 Dogwood Local Engine,该引擎会根据请求与事件历史评估 policy.dw 规则。
  4. 引擎返回 允许 或 拒绝。如果允许,网关会执行操作(例如,在自己的沙箱中执行程序,或转发带有注入凭证的 HTTP 请求)。如果拒绝,操作会被阻止,并写入决策记录。
  5. 所有事件都存储在共享历史中,因此后续规则可以依赖先前的动作。

开始使用(根据 README 所述)

  • 先决条件 – 配备 Apple silicon 的 macOS 15+、Node 22.21+(通过 Homebrew),以及对 Amazon Bedrock(us-west-2)上 Claude Opus 5 的访问权限。
  • 安装 – 执行提供的 download.sh 脚本,该脚本会验证 checksum 并将二进制文件解压到 ./box-core。
  • 执行 – 执行 ./box-core/box --version 进行验证,然后按照 docs/user/getting-started.md 指南创建 box.toml 和 policy.dw,并启动您的代理。
  • 自行构建 – 克隆存储库并使用 Cargo(cargo build --release -p strands-box -p strands-box-containment)。可通过 just 使用辅助任务(build、test、lint 等)。

谁会使用它?

  • LLM 代理开发人员,需要安全的执行环境来执行自主代码生成代理。
  • 重视安全的团队,希望获得审计日志和对代理可触及内容的精细控制。
  • 研究人员,正在实验使用工具的代理,并需要在多个解释器中进行确定性策略强制执行。

许可证

Apache 2.0 – 可免费用于商业或学术用途。


以上所有细节均直接取自存储库的 README;未推断任何其他功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目