使用前准备
本地开发可以按照 Modal 用户账号设置 运行modal setup。CI 或共享 runner 建议创建 Modal service user,并设置 MODAL_TOKEN_ID 和 MODAL_TOKEN_SECRET。
也可以在私有配置文件中填写 token_id 和 token_secret,但必须同时提供。不要将令牌提交到仓库。
使用 run 验证配置
下面以 SWE-bench Verified 和 mini-swe-agent 为例。示例通过 sample_ids 只运行一个任务;匹配的 Recipe 会根据该任务选择 Modal 可用的镜像和工作区:
agentcompass run 的最小验证示例。模型端点等通用参数见 agentcompass run。
Modal 同样支持 agentcompass launch。在编排文件的 defaults.environment 中设置所有请求共享的 Modal 配置,或在 requests[].environment 中设置单个请求;id: modal 与 Modal 参数写在同一层。详见 launch 的映射规则。
参数参考
参数可以通过--env-params 传入,也可以写在配置文件的 environments.modal 中。
上面的示例继续使用环境变量或 Modal SDK 配置中的凭证,并由 Recipe 补充任务镜像。将以下选项添加到该命令,可以为每个 sandbox 申请 2 核 CPU 和 6 GiB 内存:
连接与凭证
镜像与启动
如果 Recipe、
image 和 named_image 都没有提供镜像,Modal provider 会使用 python:3.13-slim。这个回退镜像只包含基础运行环境,不一定满足 Benchmark 的依赖和目录约定。
标识与元数据
工作区与环境变量
资源
建议在顶层字段与
resources 子字段中选择一种写法,不要重复设置同一资源。需要同时表达 request 和 limit 时,cpu 的两种位置都可使用二元素列表;内存请使用顶层 memory、resources.memory 或 resources.memory_mb,不要使用 resources.memory_gb。
网络
三个阶段使用同一策略时,直接设置通用网络策略即可。需要在阶段间切换时,请保持基础
network_policy 为 public、保持 block_network=false,并在创建 sandbox 时同时设置 outbound_domain_allowlist: ["*"] 和 outbound_cidr_allowlist: ["0.0.0.0/0"],再配置后续阶段策略。当前适配器每次动态更新都会同时发送这两类允许列表,但不会根据后续阶段自动补上初始值;缺少任一预置时,Modal 都可能拒绝更新。具体限制见 Modal sandbox 网络。
生命周期与超时
并发与保留环境的行为见运行控制,资源配置建议见资源限制。
参数参考来源
- 运行
agentcompass config docs env modal,可以查看当前安装版本实际支持的字段、类型和默认值。 - Modal 原生参数见 Sandbox API、CPU 与内存、GPU、区域选择、sandbox 网络、仓库镜像、named image 和 Environment。
agentcompass config docs env modal 的输出为准;Modal 原生字段的取值和平台行为,以上游文档为准。
特有行为
image和named_image只能设置一个;前者从镜像仓库加载,后者从指定 Modal Environment 查找。- 正常关闭 Environment 时,AgentCompass 会终止 sandbox 并断开客户端连接。使用
--keep-environment时会跳过关闭。 - 阶段网络切换不仅要求当前 Modal SDK 支持动态更新,还要求两种出站允许列表在创建 sandbox 时按上文预置;以
block_network=true创建的 sandbox 不能动态切换策略。
