三个阶段的策略
任务命令在任务 Environment 中执行。验证方式由 Benchmark 决定:可以直接在 host 上验证,也可以复用任务 Environment,或新建一个干净的验证 Environment。verifier_network_policy 只影响后两种验证方式。
| 字段 | 生效范围 |
|---|---|
network_policy | 基础策略。用于 Environment 启动,以及 Environment 内未处于 agent 运行或验证阶段的准备、产物收集和其他操作。 |
run_network_policy | agent 运行期间,Environment 内进程使用的策略。 |
verifier_network_policy | 在复用的任务 Environment 或新建的验证 Environment 中执行验证时使用的策略;不影响 host 上的验证进程。 |
network_policy 默认为 public。如果没有设置 run_network_policy 或 verifier_network_policy,对应阶段会继承 network_policy。Recipe 也可能根据 Benchmark 要求补充网络设置;需要自定义策略时,建议显式设置三个字段。
Environment 准备完成后才会切换到
run_network_policy。因此,可以先使用基础策略安装可信依赖,再以更严格的策略运行 agent。三种网络模式
public 和 no-network 直接写成字符串。allowlist 需要使用对象:
- 域名,例如
api.example.com; - 以
*.开头的通配符域名,例如*.assets.example.com; - IP 地址;
- CIDR 网段。
https://api.example.com/v1 无效。CIDR 必须使用规范网络地址,例如填写 203.0.113.0/24,不能填写 203.0.113.10/24。不同 provider 支持的地址类型和数量也可能不同,具体限制见下方的 provider 表格及对应页面。
哪些请求会受到限制
请求是否受限,取决于发起请求的进程位于 host 还是 Environment。
因此,只有当 model、搜索或评测服务由 Environment 内的进程调用时,才需要把相应端点加入允许列表。AgentCompass 调用 provider API 来创建或关闭 Environment 的请求发生在 host 上,不属于这里的控制范围。
网络策略只控制出站访问,不负责限制从 host 或 provider 控制面进入 Environment 的连接。
provider 支持情况
Docker 使用的辅助出站代理由 AgentCompass 自动管理。它只负责执行允许列表,不是另一个需要单独配置的 Environment。离线使用时,应提前确保 Docker 可以取得代理镜像。
Daytona 最多接受 20 个域名条目或 10 个 IPv4 网络条目。详细的格式、互斥设置和前置条件,请查看对应 provider 页面。
设置网络策略
以下以 CLI 为例,将三个字段通过--env-params 传给 Environment。配置文件、Python SDK 和编排文件的写法见配置 Environment。下面的配置允许准备阶段联网,但在 agent 运行和验证时关闭网络:
allowlist 对象即可:
验证策略是否生效
使用--file-log-level DEBUG 运行一个行为可预期的测试任务。日志中的以下字段分别表示准备、运行和验证阶段最终解析出的共享网络策略:
setup_network_moderun_network_modeverifier_network_mode
排查网络问题
其他阶段性错误见评测故障排查。
