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+ 上本地执行。 |
运作方式 – 快速流程
- 代理在 OS 沙箱中执行,仅具有
box.toml中列出的授权。 - 当代理想要读取文件、启动程序或发出网络请求时,它会与其中一个 Box 网关(Shell、Monty、egress、MCP)通信。
- 网关将请求转发给 Dogwood Local Engine,该引擎会根据请求与事件历史评估
policy.dw规则。 - 引擎返回 允许 或 拒绝。如果允许,网关会执行操作(例如,在自己的沙箱中执行程序,或转发带有注入凭证的 HTTP 请求)。如果拒绝,操作会被阻止,并写入决策记录。
- 所有事件都存储在共享历史中,因此后续规则可以依赖先前的动作。
开始使用(根据 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;未推断任何其他功能。
相关
- 项目
- 项目
- 项目
- 项目