crab
基于DAG图评测器的多模态AI Agent跨环境评测框架,支持Android/桌面/Ubuntu多环
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于DAG图评测器的多模态AI Agent跨环境评测框架,支持Android/桌面/Ubuntu多环
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你在手机上安装了一款新应用,想让AI助手帮你完成某个操作——比如打开设置、找到某个功能开关、把页面截图发给你的朋友。如果AI Agent只能看文字,你能准确描述「那个红色的关闭按钮在哪里」吗?
这就是多模态AI Agent面临的核心挑战:当Agent需要理解屏幕上的视觉信息时,传统的纯文本评测标准远远不够。 CAMEL-AI团队推出的CRAB(Cross-environment Agent Benchmark)正是为解决这一难题而生——它像一只螃蟹一样,能够在多种环境中灵活穿梭,同时捕获视觉与操作的双重维度。
图1:CRAB框架概览,支持多环境、多Agent的统一评测
AI Agent的发展经历了从纯文本推理到多模态感知的深刻转变。早期的Agent只能在命令行环境中执行操作,评测指标相对简单——看Agent能否说出正确答案。但现实世界是视觉主导的:手机界面、PC桌面、网页、机器人操控场景,几乎所有真实环境都需要Agent具备「看图理解」的能力。
CAMEL-AI团队(曾发布过CAMEL——多Agent协作框架的明星项目)在2024年发表的论文中指出:现有评测基准存在三个根本缺陷:
CRAB的诞生正是为了填补这些空白。
CRAB最独特的技术贡献是基于有向无环图(DAG)的评测器。传统评测只看「最终答案是否正确」,而CRAB将任务拆解为子目标节点和依赖关系,构成一张任务图。每个Agent动作执行后,评测器沿着图边遍历,检查各节点的完成状态。
这带来两个显著优势:
enable_shortcut=True模式)CRAB框架由四个核心子包组成:
crab/core — 框架核心层
Environment:统一环境抽象基类,支持自定义动作空间和观测函数。关键设计:动作通过@action装饰器注册,无需继承任何类,Python函数即动作Benchmark:多环境协调控制器,提供step()/observe()/reset()三个接口,Agent只需调用这三个方法即可在所有注册环境中执行操作GraphEvaluator:图评测引擎,基于NetworkX构建DAG,核心指标为completeness(节点完成率)和completeness_per_action(每步效率)crab/actions — 预置动作库
crab/benchmarks — 评测模板
TemplateBenchmark:用户可继承此类,通过Python配置文件定义新任务和评测器crab-benchmark-v0内置三类任务集:Android设备操作、Ubuntu系统管理、跨环境复合任务crab/server — FastAPI服务端
uvicorn驱动,支持HTTP API远程执行动作generate_key_from_env从环境变量生成密钥),保障动作隐私/raw_action(执行动作)、GET /observation(获取环境状态)CRAB官方评测集包含约100+任务实例,分为三个场景:
| 环境 | 任务类型 | 特点 |
|---|---|---|
| Android | 滑动、点击、输入、截图识别 | 真实安卓设备或模拟器,通过ADB通信 |
| Ubuntu | 文件操作、软件安装、权限管理 | Vagrant虚拟机环境,提供初始化脚本 |
| Cross | 跨环境复合任务 | 需要在多个环境间协调操作 |
每个任务实例存储为JSON文件,包含任务描述、评测图结构、初始环境状态。
CRAB原生支持四大LLM后端:
crab/agents/backend_models/openai_model.py):官方示例用camel-ai包集成):支持Function Callinggoogle-generativeai)camel-ai包)通过统一的BackendModel接口,切换后端只需修改配置,无需改动任务定义。
CRAB使用Poetry管理依赖,核心依赖精简:
CRAB仅支持Python 3.10-3.11(注意不是3.12),通过pip安装:
# 核心框架(不含Agent后端)
pip install crab-framework
# 包含所有Agent后端的完整版
pip install crab-framework[client]
# 带FastAPI服务端的部署版
pip install crab-framework[server]
单环境任务:
export OPENAI_API_KEY=sk-xxx
python examples/single_env.py
多环境并发任务:
python examples/multi_env.py
| 维度 | 评估 |
|---|---|
| 依赖数量 | 中等(核心依赖约20个,可选依赖较多) |
| 环境兼容 | 仅Python 3.10-3.11,Windows/Mac/Linux均可 |
| 硬件需求 | 无GPU依赖,4GB RAM + 2GB磁盘即可 |
| Docker支持 | ❌ 无官方镜像,需手动配置Python环境 |
| Web界面 | ✅ FastAPI服务器支持HTTP API远程调用 |
结论:适合有Python基础的开发者。缺乏容器化支持是最大遗憾。
测试工程师可以让Agent在Android模拟器中完成一系列操作流程:打开App → 滑动到设置页 → 截图识别文字 → 发送截图到服务器。CRAB内置Android环境支持,可快速构建评测集。
通过pyautogui实现跨平台桌面操作:打开文件、点击按钮、填写表单。GraphEvaluator可以精确追踪Agent每一步操作是否按预期执行,便于调试和优化Prompt。
学术研究者可以用CRAB的模板快速构建评测集,对比Claude、GPT-4、Gemini在不同任务类型上的表现差异。统一的API接口使对比实验高度可控。
CRAB硬性要求Python 3.10-3.11,不支持3.12。对于使用新版Python的团队,这意味着需要维护独立的虚拟环境。
没有提供Dockerfile或docker-compose,对于希望快速复现评测环境的团队而言,每次都要手动安装依赖,增加了使用门槛。
CRAB的核心设计围绕「屏幕操作」展开,对于纯文本推理、API调用型Agent的评测支持较弱。如果你的Agent不是做GUI操作,CRAB的适用性会大打折扣。
crab-benchmark-v0的任务集约100+实例,对于严肃的学术评测而言,规模偏小。社区需要更多贡献者来扩充任务集。
CRAB代表了一种新的Agent评测思路:从「结果导向」转向「过程导向」。传统评测只关心Agent最终说了什么,CRAB追踪Agent的每一步动作,通过图结构揭示任务执行的质量差异。
| 框架 | 特点 | CRAB优势 |
|---|---|---|
| MiniWob++ | Web表单操作评测 | 多模态+跨环境 |
| AgentBench | 多领域评测 | DAG细粒度评测 |
| GAIA | 开放世界任务 | 统一Python API |
| CRAB | 多模态+GUI+跨环境 | @action装饰器极简接口+图评测器 |
作为CAMEL-AI生态的一部分,CRAB受益于CAMEL项目积累的社区影响力。虽然发布于2024年,但GitHub star增长相对平稳(目前424★),反映出项目定位偏向专业评测场景而非通用工具。
图2:CRAB评测配置示例,展示DAG任务图结构
CRAB的核心价值:用Python装饰器重新定义了AI Agent评测环境的构建方式,将多模态感知、跨环境执行、图结构评测有机整合,为多模态Agent提供了一个标准化的能力测试场。
适合人群:
不适合:
CRAB像一只螃蟹,专注于在复杂地形中灵活移动——它的价值不在于通用,而在于对多模态GUI Agent评测场景的深度适配。如果你正在构建或评估需要「看屏幕、做操作」的AI Agent,CRAB值得一试。
图3:CRAB在Android环境中的评测示例,Agent通过视觉识别完成界面操作