目前探索的 Access-Action-Policy 模型。
Access 是包装过的,提供给 Tool 使用的副作用接口。
每个 Access 内部都是 payload $\longrightarrow$ Action $\xrightarrow{\text{Policies}}$ Granted<Action> $\longrightarrow$ Granted<Action>::execute() 的转换链条。
通过 Granted<Action> 的不可伪造性和实际副作用的发生仅在 Granted<Action> 发生,保证经过 Access 层的副作用安全;通过将 Agent 的副作用全部接入 Access 层保证任意副作用的受管控。
Policies 处于 PolicyEngine 中,包括通过 anymap 对特定 Action 特化的 Policy 与能对任意 Action(必定实现了 ActionMeta 这一 dyn compatible 的 Action 元数据 trait)校验的 PolicyAny,通过弱化版的 iptables 链条校验。如果需要任意 Deny 优先于 Allow,只需要使 Deny Policies 处于 Allow Policies 之前即可。