返回探索
资讯VibeFix 编辑部更新于 2026年10月10日

AWS 开源 Strands Box:给 AI Agent 的沙箱,规则会记住 agent 干过什么

AWS 把 Agent 沙箱开源了:Strands Box 用 Rust 写成、Apache 2.0 协议,把操作系统级隔离和 Dogwood 时间策略引擎绑在一起。规则第一次能根据 agent 的历史动作做决定——读了敏感文件就断网、Slack 十分钟最多发三条;密钥在出口网关注入,agent 永远见不到真密钥。macOS 先行,开发者预览中。

Strands Box 封面示意:AI agent 被关在 macOS 沙箱盒子里,出口网关与 Dogwood 策略引擎在盒外执法

深夜跑"YOLO 模式"的 agent,可能就是你放出去的

想象一个 solo dev 的深夜:你让 coding agent"把仓库清理一下",自己去泡了杯咖啡。回来发现它把 build 目录连同旁边的 release 包一起扬了;或者更刺激的——agent 为了"方便调试",把 .env 里的数据库密码贴进了 commit message,顺手推到了 GitHub。AWS 开源博客在宣布 Strands Box 的第一段就把话说得很直:coding assistant 和各种 agent harness 越来越多地跑在"YOLO 模式"下,每一个动作都被自动批准,无人复核。agent 会跑出自己的工作目录、执行危险命令,或者碰到它本不该看到的凭证。

传统答案是沙箱:给 agent 划个边界。但 AWS 这次的观点值得细品——边界只解决了"能不能碰",没解决"以什么条件、做到什么程度能碰"。一个负责线上值班的 agent 可能需要读生产日志、看基础设施,但绝不能改动它们。容器和微虚拟机隔离性很强,可一旦 agent 获得了某个工具,隔离层就管不了它拿这个工具干什么了。这正是 10 月 7 日发布的 Strands Box 要填的空:一个开源的 agent 沙箱(Apache 2.0 协议,Rust 写成),把操作系统级隔离和"时间策略引擎"Dogwood 绑在一起。

两层架构:隔离是底线,策略是脑子

Strands Box 的设计可以一句话概括:containment(隔离)划出硬边界,policy(策略)在边界内的各个拦截点执法。隔离层用的是操作系统原生的机制,目前是 macOS 的 Seatbelt——这也是为什么它现阶段只支持 Apple silicon 的 Mac,Linux 支持在路线图上。硬边界之内,真正的戏份在四个执法点:网络出口网关(一个代理,所有出站流量都经过它)、Shell 解释器(Strands Shell)、Python 解释器(基于 pydantic 的 Monty)、以及 MCP broker。关键细节是:这四个执法点跑在 Box 自己的进程里,也就是沙箱之外,agent 通过本地 socket 像调用普通 bash、python3 和 MCP 命令一样调用它们。

四个执法点共用一套事件语言和一段共享历史。无论 agent 是用 shell 命令还是 Python 脚本读文件,上报的都是同一个 fs:read 事件;用 curl 还是用 Python 发 HTTP 请求,都是 http:request 事件。于是你可以写这样一条规则:"agent 从 customer-data 目录读了文件之后,禁止后续的所有外发 HTTP 请求"——完全不用管它当初是用什么工具读的文件。这就是"语义级"执法和只看系统调用的传统沙箱的本质区别:规则写的是你真正关心的"文件和操作",而不是晦涩的 syscall。

Strands Box 架构示意图:agent 运行在 macOS 沙箱内,出口网关、Shell、Python、MCP broker 四个执法点与 Dogwood 策略引擎同处 Box 自身进程(沙箱之外),agent 经本地 socket 调用它们

配置一个 Box 只需要两个文件:box.toml 描述环境(agent 跑什么命令、工作目录、直接文件读写授权、可用工具、MCP server、密钥绑定),policy.dw 写 Dogwood 规则。规则语法借用了 Cedar 的风格:permit 或 forbid,加 when 条件。还有两个对独立开发者很友好的设计:一是默认拒绝(default-deny)——没有 permit 规则放行的操作一律不许过,forbid 则能覆盖 permit;二是与 harness 无关(harness-agnostic),Strands、LangChain、Claude Agent SDK 写出来的 agent 都能装进同一个盒子,同一套 box.toml 和 policy.dw 在不同 agent 应用之间通用。AWS 还顺手发了一个 Policy Authoring agent skill——让你的 agent 自己学会写 Dogwood 策略并装进 Box,算是"用魔法打败魔法"。

时间策略:规则第一次"记得"agent 干过什么

这是 Strands Box 真正的新东西。传统策略引擎每次只看"当前这一个请求";Dogwood 的 temporal(时间)算子让授权决定可以依赖 agent 已经干过什么、动作的顺序、以及随时间累计的次数。官方博客给了三个层层递进的例子,值得逐个拆开看。

第一个例子最有 vibe coding 的味道:"agent 从 customer-data 目录读了文件之后,断掉它后续的外发网络请求"。翻译成独立开发者的日常就是:"agent 读了 .env、id_rsa 或者客户数据目录之后,立刻禁止一切出站 HTTP"。以前你要实现这种"读了 A 就不许干 B"的规则,得自己写一堆胶水代码维护状态;现在它是一条声明式规则,状态由引擎替你记着。

第二个例子是频率限制:值班 agent 可以在 Slack 的 incident 频道发进度更新,但 10 分钟内最多发 3 条。官方甚至贴出了时间线:10:00、10:03、10:05 的三次发帖全部放行,10:06 的第四次被拒绝,10:07 agent 继续查日志不受影响,10:11 窗口一过又能发了。被拒绝时不是静默失败——网关返回 HTTP 403,body 里写着规则的 @id 和 @description(比如"Slack 发帖每 10 分钟上限 3 条,请稍后再发"),agent 读到描述就能自己决定"等一会儿"而不是死命重试。有个很细的设计:计数只统计返回 200 的成功发帖,被拒绝的尝试不计入——规则绑定的是 ::response 事件而不是 ::request 事件,否则一次误杀会吃掉你的配额。

第三个例子是删除保护:agent 执行 rm -rf build/ 时,Shell 解释器会对每一个要删的文件触发一次 fs:delete 决策,一条 forbid 规则能在删掉任何东西之前就拦下来,而工作区里的正常编辑照常放行。写规则的人看到的是"文件 + 操作",而不是"它跑了个 shell 命令"——harness 自带的权限提示恰恰只能看到后者,这也是 AWS 认为不能依赖 harness 自带权限的原因:harness 看得到"调用了什么工具",看不到"这个工具会碰哪些文件、连哪些主机"。

时间策略示意时间线:10:00、10:03、10:05 三次 Slack 发帖被放行,10:06 的第四次发帖被 403 拒绝并返回规则说明,10:11 窗口重置后再次放行

我的判断是:时间策略把 agent 安全从"静态白名单"推进到了"行为契约"。静态白名单回答"能不能碰这个域名";行为契约回答"在已经读过敏感文件的前提下,还能不能碰"。对一个人维护多个 side project 的开发者来说,这意味着你可以给 agent 立几条真正贴合直觉的规矩:读过密钥之后不许联网、删文件之前必须先列出清单、一小时内调付费 API 不超过 N 次。这些规则在以前要么写不出来,要么得靠 agent"自觉遵守"——而让 agent 自觉遵守安全规则,约等于没有规则。

密钥注入:agent 这辈子见不到真密钥

另一个让我觉得"终于有人做了"的功能是出口网关的密钥注入。agent 手里拿到的永远是占位符 token,网关在转发被允许的请求之前,把真正的密钥替换进去——支持 Bearer、自定义 header、HTTP Basic、query 参数,以及 AWS SigV4(网关在 agent 环境之外用宿主机的凭证完成签名)。真密钥从不进入 agent 的环境。

对 solo dev 的实际意义很直接:以后 .env 不用再 mount 进 agent 的工作区了。agent 就算"好心"把密钥打印到日志里,打印出来的也只是占位符;就算它的某次工具调用被 prompt 注入带偏,想把密钥发出去,网关层也没有真东西可偷。这比"叮嘱 agent 不要泄露密钥"可靠得多——安全规则一旦依赖 agent 的自觉,就不叫规则了。

放在坐标系里看:Copilot 沙箱、Arcjet 和容器

VibeFix 在 9 月报道过 GitHub Copilot 的本地沙箱能力,那是平台内置、开箱即用的隔离环境,对 Copilot 用户很友好。但它是闭源平台的一部分:规则不可编程、不可移植、换个 harness 就得重来。Strands Box 可以看作是同一条思路的"开源 + 策略可编程"演进:harness 无关、Rust 实现、Apache 2.0,你今天就能自己托管、自己改。

另一个参照物是 Arcjet 这类商业运行时安全产品:以 API/服务形态提供 bot 防护、速率限制等能力,按调用量付费,对不想运维的人很省心。Strands Box 则是这条赛道的自托管开源替代——数据不出你的机器、规则自己写、没有调用量账单,但代价是你得自己搭、自己维护。我的看法是:两者不是非此即彼,Arcjet 适合"线上服务防外部攻击",Strands Box 适合"本地 agent 防自己人(也就是防你放出去的 agent)",场景几乎不重叠。

至于"为什么不用容器/Docker 装 agent",官方博客正面回答了:单独的 guest OS 意味着另一套要 provisioning、要维护的环境,还要解决本地文件和工具怎么暴露进去的问题;更关键的是,隔离机制只回答了"边界在哪",没回答"边界内怎么管"。AWS 认为甜点组合是:OS 级隔离定硬边界 + 在 agent 动作试图穿越边界的各个拦截点上做策略执法。这个判断我基本认同——对个人开发者来说,Docker 里再跑一套环境去伺候 agent,运维负担确实劝退。

冷水:现在就能用吗?

先说限制,免得你兴冲冲 clone 下来骂人。第一,平台:目前只支持 Apple silicon 的 Mac(macOS 15+),Linux 支持"在做了",Windows 没提。仓库是 10 月 2 日才创建的,目前 308 个 star,还处在开发者预览的早期。第二,getting started 的门槛不算低:除了 Mac,还要 Homebrew 装的 Node.js 22.21+,以及在 us-west-2 的 Bedrock 上能调用 Claude Opus 5——对国内开发者来说最后一条基本劝退,不过这只是官方示例用的模型,harness 无关的设计意味着理论上你可以换别的模型。第三,Dogwood 是门新语言,策略得现学;好在有那个 Policy Authoring skill 兜底,让 agent 教你写策略。

路线图倒是画得很实在:扩展 OS 支持、一键 CLI(自动检测你装了哪些 harness,生成 box.toml 和基线策略,开箱即用)、把 Box 带到部署环境(策略跟着 agent 一起部署到 Bedrock AgentCore、ECS、Kubernetes,规则成为部署物的一部分)、以及给 Dogwood 加 liveness 能力——现在只能表达"不许干什么"(safety),未来要能表达"必须最终干成什么"(liveness),并检测 agent 什么时候没达标。最后一条如果做成了,agent 的"偷懒不干活"也能被策略抓住,那才是真的有意思。

给独立开发者的上手建议:Mac 用户今天就可以 pip…不,curl 官方的 download.sh 把二进制拿下来,先给本地的 coding agent 写三条规则起步——读了 .env 或密钥文件后断网、禁止删除家目录之外的任何东西、出站域名只允许模型 API 和你指定的几个。三条规则跑一周,亲眼看一次 403 拦截,比读十遍文档更能建立体感。policy.dw 进仓库版本管理,换机器直接复用。

一句话判断

Strands Box 的真正新意不是"又一个沙箱",而是第一次把"时间"写进了 agent 的安全策略:规则能根据 agent 的历史动作做决定。开源、Rust、Apache 2.0、harness 无关,意味着个人开发者今天就能自托管、自己改。它现在还很早(macOS only、开发者预览),但方向是对的:agent 越来越自主,管 agent 的规则就必须从"静态白名单"进化到"行为契约"。先给你的 agent 划个盒子,再谈信任——顺序别反了。

原始来源

浏览项目广场发布你的项目

相关文章

AI 智能体工具调用链在信任边界处被转向的示意插画,含服务器图标与警示标记
资讯
同一个 SSRF 漏洞,谷歌、摩根大通、法国政府各中一枪:MCP 的结构性安全危机

谷歌、摩根大通、Weaviate、法国 DINUM、印尼 Tangerang 市政府——五支互不相关的安全团队,各自独立确认并修复了自家 MCP 服务器里的同一个 SSRF 漏洞。独立研究者 Syed Anas Mohiuddin 的十月更新指出:这是协议设计的结构性缺陷,而非某家的实现问题。本文拆解 Protocol Pivoting 攻击原理、对比五家修复方案,并给 vibe coder 一份最小防御清单,附 10 月 23 日 MCPCon 演讲前瞻。

安全与隐私AI 编程实践MCP
Argo-Bench 基准示意:数据智能体在 235 张表的模拟 ERP 数据仓库中导航并执行操作,评分器根据行动后果打分
资讯
Argo-Bench:不考"答案对错"、只看"造成什么后果"的数据智能体新基准,最强模型仅 34.8% 任务过关

TextQL Labs 发布的 Argo-Bench 不再考智能体"答案对不对",而是在一个 235 张表、75 亿行的模拟 ERP 数据仓库里,按行动的"后果"打分。14 个模型中最好的 Opus 5.5 也只有 34.8% 的任务拿到 95 分以上。这暴露了数据智能体的什么短板?独立开发者又能从"后果评分"方法论里偷走哪些实践?

测试与质量行业趋势AI 编程实践
Kimi K3 标识与 OpenAI Codex 开发者界面、账单发票图形并列的封面图
资讯
Kimi K3 进入 OpenAI 企业 Codex 渠道:中国开源模型首次住进 OpenAI 的账单

月之暗面 Kimi K3 通过美国推理商 Baseten 进入 OpenAI 企业版 Codex 渠道:企业客户可直接用已有的 OpenAI 采购额度调用这款中国开源模型,无需另签供应商合同。新浪财经称这是中国开源模型首次进入 OpenAI 的企业计费体系。本文拆解三方分工(Baseten 推理 / Codex 界面 / OpenAI 账单)、Bedrock 收入分成的前置链条,以及「账单中立化」对开发者的意义。

模型动态行业趋势AI 编程实践