Dogwood 是面向 AI Agent 的开源策略语言与参考解释器,用于治理连续工具调用。它关注“调用格式正确但执行逻辑错误”的运行时风险。
我们很高兴你能来到这里。每周一至周五,我们都会为你送上 TNS 的精选内容,帮助你及时掌握新闻动态,始终保持最佳状态。
请查看收件箱中的确认邮件,你可以在邮件中调整偏好设置,甚至加入更多群组。
在你喜爱的社交媒体平台上关注 TNS。
在 LinkedIn 上关注 TNS。
等待第一封 TNS newsletter 期间,不妨先看看最新的精选和热门文章。
AWS 于周四发布了 Dogwood。这是一种开源策略语言及其参考解释器,让开发者能够治理 AI Agent 的工具调用序列,而不再只是孤立地评估每一次操作。
AWS 还为 Amazon Bedrock AgentCore Policy 增加了对 Dogwood 的支持。AgentCore Policy 是一项托管服务,用于控制 Agent 可以调用哪些工具,以及在什么条件下可以调用。Dogwood 语言及其参考实现现已采用 Apache 2.0 许可证开放。
Dogwood 构建于 Cedar 之上。Cedar 是一种开源授权语言,目前已用于驱动 AgentCore Policy。AWS 于 2025 年末将 Cedar 贡献给 CNCF,作为 sandbox 项目。举例来说,Cedar 可以判断某个用户或 Agent 是否有权使用给定参数调用退款工具。Dogwood 则更进一步,因为它还能将之前发生的事件纳入判断。这些事件可能包括:是否有人批准了退款、Agent 在过去一小时内总共退了多少钱,或者它此前是否访问过某些信息,以至于不应再被允许联系外部服务。
“对于许多形式的访问控制来说,基于当前时点做出决策是合理的;但当 Agent 将多个操作组合成更长的工作流时,操作顺序本身也会成为团队希望治理的对象。”
正如 AWS 团队所解释的:“对于许多形式的访问控制来说,基于当前时点做出决策是合理的;但当 Agent 将多个操作组合成更长的工作流时,操作顺序本身也会成为团队希望治理的对象。Dogwood 为团队提供了一种语言,用于表达针对操作序列的策略,从而对前置条件、速率限制和执行顺序施加约束。”
在去年的 re:Invent 大会上,AWS 推出了 AgentCore Policy,将其作为一种位于大语言模型之外的确定性控制层。模型提出工具调用请求,再由策略引擎接受或拒绝。这样便能将模型本身排除在策略执行闭环之外。
AgentCore Gateway 位于 Agent 与这些工具之间。针对每个请求,该服务的策略引擎都会评估 Cedar 规则。这些规则描述了发起请求的主体、请求执行的操作、目标资源以及工具的输入参数。系统默认拒绝请求,并且任何明确的禁止规则始终优先于允许规则。
但这些规则只能看到当前请求。对于同一个请求,无论此前发生过什么,也无论策略以什么顺序执行,Cedar 都会返回相同的决策。这让 Cedar 策略更容易分析,但也意味着它无法表达依赖一系列操作的策略。
Dogwood 新增的能力之一,是可以检查此前工具请求和响应的时序条件。时序条件能够查看某次请求之前发生了什么,以及这些事件发生在多久以前。
AWS 以股票交易 Agent 为例说明其工作方式。策略可以规定:只有在过去一小时内,审批工具针对相同股票和相同股数返回了肯定响应时,才允许 Agent 卖出股票——而该审批是一个独立事件,策略引擎必须从 Agent 的近期历史记录中找到它。
开发者可以检查某个事件是否发生过、统计一个时间窗口内的调用次数、统计付款收款人等不同取值的数量,或者累加转账总额之类的数值。这些操作建立在 Metric First-Order Temporal Logic 的一个子集之上。它是一套用于描述事件随时间变化属性的形式化系统。
让这一切变得更加复杂的因素,是并行工具调用。
在 AWS 的示例中,某个 Agent 每小时的转账金额不得超过 5,000 美元。如果策略只累加已经完成的转账,那么 Agent 就可能在第一笔转账完成之前连续提交多笔 2,000 美元的请求。由于检查每个请求时,已完成转账的总额可能仍为零,因此 Agent 最终会突破限额。
如果策略只累加已经完成的转账,那么 Agent 就可能在第一笔转账完成之前连续提交多笔 2,000 美元的请求。由于检查每个请求时,已完成转账的总额可能仍为零,因此 Agent 最终会突破限额。
但 Dogwood 掌握了相关上下文,可以统计所有转账请求,包括当前正在评估的请求。在 AWS 的示例中,即使前两笔转账尚未返回结果,第三笔 2,000 美元的请求也会因此被拒绝。
对于通过 AgentCore Gateway 连接的 Agent,AWS 可以根据 Gateway 的 MCP manifest 中定义的工具生成 Dogwood 的 action schema。随后,每个工具都会成为策略可以引用的一个 action。
需要注意的是,Dogwood 并不是要取代 Cedar,而是对其进行扩展。AWS 表示,任何现有的 Cedar 策略也都是有效的 Dogwood 策略,因此团队不需要重写当前规则。对于时序策略,Dogwood 会将依赖历史记录的条件转换成 Cedar 的 context 字段。在参考实现中,Dogwood 会先根据事件历史填充该字段,然后再由 Cedar 做出授权决策。
Dogwood 的运行成本高于 Cedar,因为它是有状态的。它必须保留并检索事件记录,AWS 也指出,其评估耗时可能取决于历史记录的长度。
目前,随项目提供的开源参考解释器主要用于探索和测试该语言,并不适合作为生产环境中的授权引擎。
不过,任何想立即采用这个开源项目的人都需要留意一些限制。正如代码仓库中指出的那样,用户必须提供可信时间戳、验证事件的真实性、确保字段名和 action 名称保持一致、持久化存储 trace、记录授权决策,并隔离不同租户的历史记录。团队还需要制定数据保留策略,因为工具调用历史中可能包含敏感数据。
对于使用开源版本的团队来说,更棘手的问题在于:事件历史是否足够完整、足够可信,能够用作授权依据。
未来,AWS 计划增加与绝对时间绑定的规则,例如在午夜重置的配额;还计划加入“liveness”属性,用于检查预期的操作最终是否发生。AWS 也希望将 Dogwood 的适用范围从单个 Agent 扩展到多 Agent 系统。例如,在这类系统中,策略可能需要治理 Agent 之间的任务交接和共享锁。
目前,AWS 尚不接受直接贡献,但表示欢迎“社区就语言设计和未来方向提供反馈”。对于使用开源版本的团队来说,更棘手的问题在于:事件历史是否足够完整、足够可信,能够用作授权依据。