host_process 连接现有 HTTP 服务。agent 在 AgentCompass 进程中运行,评测使用设备服务返回的官方任务分数。
基本信息
安装与准备
按照安装指南在 Linux 主机或 WSL 中安装 AgentCompass。自动部署需要宿主机具备 Docker Engine、可访问的/dev/kvm,以及在 5000 端口启动 HTTP 服务的 AndroidWorld 镜像。宿主机还需能访问 Model API。
默认使用 Docker Hub 上的公开镜像 ailabdocker/ac-android_world_bench:initialized,其中已包含初始化后的 Android 模拟器和 HTTP 服务。可在评测前手动拉取镜像:
--env docker 即可使用,无需设置 setup.image。使用兼容的自定义镜像时,可通过 --env-params 覆盖 setup.image。
复用现有设备服务时,选择 --env host_process,通过 server_urls 提供可达地址。每个服务运行一个模拟器,可在设备宿主机上检查健康状态:
运行流程
- Docker 模式先启动临时容器发现任务:初始化任务集、读取所选任务目标,然后移除该容器。
host_process模式在每个已有服务上初始化任务集,并从第一个服务读取任务。 - Benchmark 按
category、task_index_mode、max_tasks_per_type、limit和sample_ids选择任务。 - Docker 模式下,Docker Environment 按
androidworld_dockerRecipe 为每个任务启动设备容器。Benchmark 等待服务就绪后初始化相同的任务集。host_process模式为任务分配一个可用的设备服务。 reset_before_task=true时重置设备,然后初始化任务,运行截图、Model 推理和动作执行循环,直到 agent 结束或达到有效步数上限。- 交互结束后,Benchmark 从设备读取官方分数并保存为
androidworld_score;分数大于零时,correct为true。 - 执行任务清理,
reset_after_task=true时重置设备。Docker Environment 移除容器,除非启用了--keep-environment。外部设备在清理成功后返回设备池。
<task_type>_<task_index>,例如 CameraTakePhoto_0。
Docker 参数
选择--env docker 会自动应用 androidworld_docker Recipe。通过 --env-params 配置 Docker:
agent 通过 Docker 分配的宿主机端口连接设备。根据宿主机可同时运行的模拟器数量设置
--task-concurrency。公共配置见 Docker Environment。
Benchmark 参数
通过--benchmark-params '{...}' 配置 Benchmark 字段。配置文件中的字段位于 benchmarks.androidworld。
任务参数
Agent 参数
内置步数映射中的任务使用对应的步数上限,其他任务使用
max_steps。
设备服务参数
host_process 模式通过 server_urls 指定设备服务。每个服务同时运行一个任务,其余任务等待可用服务。Docker 模式从各任务容器获取服务地址。
Model 参数
通用推理参数通过--benchmark-params 配置:
agent 配置类型或 provider 的专属参数通过
--model-params 配置,例如 reasoning_effort、effort、thinking_budget、prompt_caching 和 parallel_tool_calls。参数优先级从低到高为:配置类型的默认值、--model-params、值不为 null 的 Benchmark 通用参数。高优先级的值覆盖低优先级的值。
gpt 使用 openai-responses,claude 使用 anthropic。其他所有配置类型使用 openai-chat。
运行示例
执行前先导出环境变量MODEL_NAME、MODEL_BASE_URL 和 MODEL_API_KEY。以下示例使用默认镜像运行一个拍照任务并保存截图:
${...} 引用。可通过 category 和 task_index_mode 调整任务范围。
使用现有设备服务:
http://androidworld-server:5000 替换为 AgentCompass 可访问的服务地址。
使用 GPT 配置:
输出与评分
单任务结果保存执行状态、任务类型、任务索引、有效步数上限、动作记录、Model 响应和耗时。设置save_screenshots=true 后,PNG 截图保存在 runtime 管理的任务尝试目录中:
result.json。同一次尝试重跑时,旧结果和截图一起归档到 retries/;不同尝试各自保存产物。
聚合结果的主指标为二元 correct,服务返回的原始数值分数保存在 androidworld_score。任务详情同时保留 ACTF 轨迹。
故障排查
- Docker 启动失败时,检查 Docker 是否可用、KVM 访问权限和任务容器日志。
- 服务健康检查失败时,检查
server_urls、health_check_retries和health_check_interval_seconds。 - 任务发现失败时,检查每个服务能否重新初始化任务集,并核对
suite_combination_count、suite_seed和task_family。 - 设备清理失败后,该服务不再接收当前运行中的新任务。检查服务日志并恢复设备后,再启动新的评测运行。
- 连接失败时,检查 AgentCompass 宿主机能否访问
server_urls和 Model API 地址。 - Model 协议错误时,检查
agent_style与--model-api-protocol是否匹配。 - 任务达到步数上限时,检查任务类型是否命中内置映射,并通过
task_max_steps_path提供所需映射。
