AutoGPT Challenges 挑战体系:定义、参与方式与 agbenchmark 演进路径
本文介绍 AutoGPT 项目中「Challenges(挑战)」体系的完整脉络:挑战是什么、为什么重要、社区成员如何通过「提交挑战」与「击败挑战」两条路径参与,以及该体系如何演进为仓库中可直接运行的 agbenchmark(direct-benchmark)基准框架。读完本文,你能够理解 AutoGPT 社区驱动的能力评估机制,并在 classic/direct_benchmark 目录中实际运行、筛选和扩展挑战用例。
什么是挑战(Challenges)
挑战是 AutoGPT 难以解决或尚未完成的任务与问题。根据官方介绍(challenges/introduction.md),挑战的典型形态包括:
- 改进特定功能(improving specific functionalities);
- 增强模型对特定领域的理解(enhancing the model's understanding of specific domains);
- 开发当前版本尚不具备的新特性(developing new features that the current version of AutoGPT lacks)。
从源码结构看,挑战在仓库中经历了两代落地形态:
- 文档 + pytest 测试形态:早期挑战以 Markdown 文档形式收录于 docs/content/challenges/ 目录,并配套 Python 集成测试;
- 数据驱动的基准形态:当前仓库将可执行挑战集中到 classic/direct_benchmark/challenges/,每个挑战是一个包含
data.json与输入/输出工件目录(artifacts_in/、artifacts_out/)的独立文件夹,由 direct-benchmark 框架直接实例化 Agent 执行。
挑战为什么重要
官方文档给出的理由集中在三点:
- 提升性能、可用性与通用性:逐个击破挑战能持续改进 AutoGPT 的实际表现;
- 打造更强、更高效的工具:协作攻克挑战使项目对全体用户更有价值;
- 真正意义的开源贡献:社区通过挑战机制主动参与项目演进,让贡献不再局限于提交代码。
值得注意的是,挑战体系还承担了「能力标尺」的角色——docs/content/challenges/memory/introduction.md 对「记忆类挑战」的定义说明,挑战被设计用于测试 Agent「在一连串任务中记住并使用信息」的能力,涉及指令跟随、文本文件处理与关键数据跟踪。这类能力指标正是基准框架试图量化的对象。
参与方式一:提交挑战(Submit a Challenge)
如果你发现 AutoGPT 在某个任务上表现挣扎,可以将其提交为挑战供社区攻克。根据 submit.md,提交流程为:
- 在 AutoGPT 仓库的
challenges目录中创建一个新的.md文件,并选择正确的分类目录; - 用描述性标题命名文件,用连字符代替空格(例如
improve-context-understanding.md); - 在文件内按照 challenge_template.md 模板描述问题、界定范围、定义成功标准;
- 提交文件并创建 Pull Request。
挑战模板定义了文档骨架,包含四个必备小节:
| 小节 | 作用 |
|---|---|
| Description | 清晰简洁地描述挑战,可附示例或文件说明问题 |
| Input | 描述挑战涉及的输入文件(文件名与内容,用代码块格式化) |
| Scope | 界定挑战范围,包括相关约束、要求与限制 |
| Success Evaluation | 说明如何衡量或评估成功,让他人明确期望结果 |
提交后,社区会评审并讨论该挑战;若被采纳,就会被收录进挑战列表页(list.md)。
参与方式二:击败挑战(Beat a Challenge)
根据 beat.md,攻克一个已存在挑战的指引如下:
- 选择挑战:浏览挑战列表,挑选感兴趣或与自身专长匹配的挑战;
- 理解问题:彻底理解问题本身、其范围与期望结果;
- 开发解决方案:着手为该挑战构建解决方案,并贡献你的实现。
挑战在代码层面的抽象:输入 → Agent → 工件
早期的挑战编写指南 building_challenges.md 说明了挑战的核心抽象——挑战「扮演一个希望完成某件事的用户」,不绑定特定框架,保持技术中立:
- 输入(INPUT):用户意图(User desire)+ 文件等其他输入;
- 输出(Output):工件(Artifact),如文件、图片、代码等。
该文档给出了完整的编写路径,可作为理解挑战运行机制的实例:
- 定义 Agent 夹具:在
classic/original_autogpt/tests/integration/的 agent_factory.py 中创建 agent fixture。文档示例展示了如何为一个「Kubernetes 部署模板专家」Agent 注册命令(file_operations、app等模块)、构建AIProfile(ai_name、ai_role、ai_goals),再实例化Agent并关闭连续模式(set_continuous_mode(False)); - 编写挑战测试:在
tests/challenges目录下创建test_your_test_description.py并放入对应分类文件夹。文档示例展示了一个典型测试的完整写法:- 使用
input_generator生成器模拟用户输入序列(如["s", "s", ..., "EXIT"]); - 通过
monkeypatch将autogpt.utils.session.prompt替换为从输入序列取值,从而自动化驱动交互循环run_interaction_loop; - 执行后读取输出工件(如
kube.yaml),先做关键字断言(apiVersion、kind、metadata、spec),再用yaml.safe_load做结构化校验; - 尚未被攻克(beaten)的挑战以
@pytest.mark.skip("This challenge hasn't been beaten yet.")标记,并配合@pytest.mark.vcr(录制/回放 LLM 调用)与@pytest.mark.requires_openai_api_key标记管理测试成本与依赖。
- 使用
这套「mock 用户输入 + 校验输出工件」的模式,是理解后续基准框架评估逻辑的关键。
挑战目录的分类组织
当前仓库的挑战按分类组织,便于社区选择攻关方向。文档侧的分类收录在 docs/content/challenges/ 下,例如:
- memory/introduction.md:记忆类挑战介绍,并含 challenge_a 至 challenge_d 等具体挑战文档;
- information_retrieval/introduction.md:信息检索类挑战介绍。
挑战总览页 list.md 则作为入口,指向各分类的挑战清单,并引导读者按 submit.md 提交新挑战。
演进:从 agbenchmark 到 direct-benchmark
introduction 文档末尾的官方提示值得单独强调:AutoGPT 正在逐步过渡到 agbenchmark——一种更简单的改进 AutoGPT 的方式,只需运行:
agbenchmark
然后尽可能多地击败挑战。这标志着挑战体系从「文档 + 人工测试」向「可自动化批量执行」转变。
当前仓库中的实际形态:direct-benchmark
在当前仓库中,这一演进落地为 classic/direct_benchmark/ 目录——一个高性能基准框架,其特点是直接实例化 Agent,省去 HTTP 服务器开销,支持多配置并行执行。根据 direct_benchmark/README.md,其核心特性包括:
- 直接 Agent 实例化:无 HTTP 服务器、无 Agent Protocol 开销;
- 并行执行:同时运行多个策略/模型组合;
- 多次尝试:每个挑战运行多次以获得统计可靠性;
- 富 UI:基于 Rich 库的实时进度展示,支持 default(rich)、quiet、verbose、JSON(面向 CI)等输出模式。
安装与常用命令
所有命令从 classic/ 目录(即该目录的上级)执行:
cd classic
poetry install
常用运行方式(完整说明见 classic/direct_benchmark/README.md):
# 以默认配置运行基准
poetry run direct-benchmark run
# 指定策略与模型并行运行
poetry run direct-benchmark run \
--strategies one_shot,rewoo \
--models claude,openai \
--parallel 4
# 只运行单个测试
poetry run direct-benchmark run \
--strategies one_shot \
--tests ReadFile
# 每个挑战运行多次
poetry run direct-benchmark run \
--strategies one_shot \
--attempts 3
# 只运行回归测试(此前已被击败的挑战)
poetry run direct-benchmark run --maintain
# 只运行非回归测试(尚未稳定击败的挑战)
poetry run direct-benchmark run --improve
# 只运行从未被击败的挑战
poetry run direct-benchmark run --explore
# 列出可用挑战 / 模型预设 / 策略
poetry run direct-benchmark list-challenges
poetry run direct-benchmark list-models
poetry run direct-benchmark list-strategies
关键 CLI 选项
README 中对两类常用选项的说明如下:
挑战筛选类:
--strategies, -s:逗号分隔的策略(one_shot、rewoo、plan_execute、reflexion、tree_of_thoughts);--models, -m:逗号分隔的模型预设(claude、openai 等);--categories, -c:按挑战分类筛选;--skip-category, -S:排除分类;--tests, -t:按测试名筛选。
执行控制类:
--attempts, -N:每个挑战的运行次数;--parallel, -p:最大并行数(默认 4);--timeout:单挑战超时秒数(默认 300),--cutoff为其别名,--no-cutoff, --nc可禁用时限;--max-steps:单挑战最大步数(默认 50)。
其中 --maintain / --improve / --explore 三种模式与「击败挑战」的社区叙事直接对应:已稳定击败的走回归维护,未稳定击败的走改进,从未击败的走探索。已击败挑战的记录保存在 classic/direct_benchmark/challenges_already_beaten.json。
挑战目录的实际组织
从源码结构看,classic/direct_benchmark/challenges/ 将挑战按能力维度分为四个子目录,每个挑战文件夹以 data.json 为配置入口,辅以 artifacts_in/(输入工件)与 artifacts_out/(期望输出工件):
| 目录 | 内容示例 |
|---|---|
| abilities/ | 基础能力:read_file、write_file |
| alignment/ | 对齐能力:1_distraction(干扰抵抗)、2_injection(注入抵抗) |
| library/ | 外部集成类:如 ethereum/check_price |
| verticals/ | 垂直领域:code(Python 执行、三数之和、文件整理、海战棋等)、data(CSV 排序/标注/合并/问答)、scrape(搜索、价格与营收检索)、synthesize(内容生成) |
这种「data.json + 输入/输出工件」的数据驱动结构,正是早期「用户意图 → Agent → 工件」抽象的工程化实现:框架读取 data.json 组装输入,运行 Agent,再由 evaluator.py 对照 artifacts_out 判定是否击败挑战。框架其余关键模块包括 challenge_loader.py(挑战加载)、runner.py(执行)、parallel.py(并行调度)与 report.py(报告生成),多 Agent 协议接入则通过 adapters/ 下的适配层实现。
小结
AutoGPT 的挑战体系是一条完整的社区驱动能力改进链路:
- 定义:挑战是 AutoGPT 当前解决不了的任务,按记忆、信息检索等维度分类,以模板化的文档(Description / Input / Scope / Success Evaluation)描述;
- 参与:社区通过「提交挑战」(在 challenges 目录按模板建文档并 PR)与「击败挑战」(理解问题、开发方案、贡献实现)两条路径协作;
- 执行:挑战从早期 pytest 集成测试(mock 用户输入、校验输出工件)演进为 direct-benchmark 数据驱动基准,支持策略 × 模型组合的并行批量评估,并提供 maintain/improve/explore 三种模式对接「持续击败挑战」的社区目标。
如果你想动手参与,最短路径是:浏览 docs/content/challenges/list.md 挑选一个挑战,然后在 classic/ 目录下执行 poetry run direct-benchmark run --explore 开始验证你的解决方案。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0627
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00