无限终端:AI Agent训练新范式,环境规模胜过架构复杂性 Best Partners TV 2026-03-10

大家好,这里是最佳拍档。

在AI Agent的研究领域,我们似乎一直陷入一个固有的思维定式:想要让Agent在复杂任务中表现更出色,就必须不断为它叠加复杂的模块,从检索能力、记忆模块到多Agent协作框架。这些被称为“脚手架”的设计,似乎成了提升能力的唯一途径。

终端Agent训练的困境

然而,2026年1月,由斯坦福大学微软研究院联合发布的一篇《无限终端》(Endless Terminals)的论文,彻底打破了这个认知。这篇由四位学者联合撰写的研究,为我们展现了一个更本质的研究方向:与其在模型架构上精雕细琢,不如把精力放在训练环境的规模和质量提升上。

今天,我们就来解析这篇论文,看看这套名为无限终端的全自动程序化生成流水线,是如何让最朴素的强化学习算法战胜那些搭载了复杂脚手架的Agent,又如何为AI Agent的训练开辟了一条全新的道路。

首先,研究的背景是:为什么终端Agent的训练会成为当前AI领域的一大难题呢?论文中用了一句非常形象的话概括:“Reinforcement learning is hungry for environments”,也就是说,强化学习不仅需要数据,更如饥似渴地需要环境。强化学习在提升大模型推理能力方面的成功有目共睹,无论是数学解题还是代码生成领域,其背后都离不开大量多样化、能自动验证的任务支撑。但是,当我们把目光聚焦到终端Agent——那些需要在计算机终端中执行多轮命令、处理复杂计算机任务的Agent时,问题就出现了。

目前根本不存在一个可扩展的训练环境。真实世界的终端任务对Agent的综合素质要求极高,需要具备多轮推理能力、错误恢复能力以及状态变换能力。而当前终端Agent的训练环境主要依靠人工构建,不仅成本高昂,现有的基准测试集顶多也只有几百个任务。这样的规模对于支撑强化学习训练来说,无疑是杯水车薪。

现有策略的局限

面对这样的“环境瓶颈”,之前的研究学者们也尝试了多种解决策略,但是这些策略都存在难以克服的硬伤。

第一种策略是利用评估集进行训练。简单来说,就是直接拿固定的评估基准来作为训练集。这种方式的问题非常明显:Agent很容易出现严重的过拟合

第二种策略是通过监督微调(Supervised Fine-Tuning, SFT)进行蒸馏,让Agent模仿前沿模型的推理和操作方式。但是,这种方法的能力上限完全由“教师模型”决定,Agent永远无法超越模仿的对象。同时,调用前沿闭源模型的API还会产生高昂的成本,难以大规模推广。

第三种策略是使用人工构建的数据集,收集人工设计的编码或Shell任务作为训练数据。但是,人工标注的成本直接限制了数据集的规模和多样性,无法满足强化学习对海量数据的需求,难以做到“量大管饱”。

全自动任务生成流水线

正是在这样的研究背景下,论文的作者们提出了一个核心洞察:当前终端Agent研究中缺失的关键拼图,是一个全自动的流水线。它能够在极少人工干预的情况下,源源不断地生成包含初始环境、任务说明和验证测试的终端任务。而Endless Terminals就是为解决这个问题而生的。

这是一套无需人工标注,即可合成终端使用任务的程序化生成流水线,核心由四个阶段构成:从生成多样化的任务描述,到构建并验证容器化环境,再到生成用于验证任务完成的测试脚本,最后通过强模型进行可解性过滤。

为了验证这套流水线的有效性,作者们还采用了一种极简的Agent架构,摒弃了所有额外的辅助模块,仅依靠推理、执行、观察的基础交互循环,搭配最朴素的PPO算法,以及仅区分任务成败的二元情节级奖励机制。

即便如此,在Endless Terminals上完成16轮训练后,不同规模的模型都实现了成功率的大幅提升:Llama-3.2-3B的成功率从4.0%飙升到了18.2%,Qwen2.5-7B从10.7%提升到了53.3%,经过监督微调的Qwen3-8B-openthinker-sft也从42.6%提升到了59.0%。

更重要的是,这种能力的提升并非只体现在模型自身生成的任务集上。在高难度的人工基准测试集TerminalBench 2.0上,模型的表现同样实现了质的飞跃。比如Qwen3-8B-Open-Thoughts的成功率就从1.1%提升到了6.7%。这也印证了论文的核心结论:只要能扩展环境的规模,简单的强化学习也能取得成功。

接下来,我们深入拆解一下这套流水线的具体实现,也就是任务的程序化生成过程,这也是整篇论文的核心技术部分。

生成任务描述细节

第一阶段是生成任务描述,这是整个流水线的起点。核心是通过语言模型生成多样化的任务说明。为了保证任务的多样性,作者们从三个维度对提示词进行随机采样:

  • 任务类别:涵盖了文件管理、文本处理、日志分析、git操作、数据库查询、安全扫描等终端常用的操作类型,确保任务覆盖终端使用的各个场景。
  • 复杂度级别:从单个简单命令到多步操作序列,不同难度的任务能够满足模型不同阶段的训练需求。
  • 场景上下文:模拟不同职业的使用需求,让生成的任务更贴近真实的使用场景。

这个阶段还有一个关键设计,就是“特权信息”(privileged information)的分离。语言模型不仅会输出给Agent看的任务指令,还会输出一个独立的特权信息部分。这部分信息包含了确切的文件内容、路径和预期的系统状态,不会泄露给Agent,而是专门留给自动化测试脚本使用。这就像老师出题时,将参考答案和解题步骤单独保存,仅用于批改试卷。

构建与验证容器环境

第二阶段是设置与验证容器化环境。简单来说,就是为Agent搭建一个专属的工作舞台。有了任务描述和特权信息后,系统会自动生成两个关键文件:

  • 一个是初始状态测试文件,用来在Agent开始执行任务之前,验证环境是否准备就绪,检查任务所需的特定文件、目录是否存在,进程是否在运行,代码库是否已克隆等先决条件。
  • 另一个是Apptainer容器定义或者Dockerfile,用来构建Agent执行任务的容器环境。

在容器环境的构建过程中,作者们还引入了一个迭代优化循环。因为语言模型生成的容器定义文件很可能存在错误,无法直接构建成功。所以系统会先根据模型生成的文件构建容器,再在容器内运行初始测试。如果测试失败,就将失败信息反馈给模型,让模型进行修正。这个过程最多重复3轮。如果3轮之后测试仍然不通过,这个任务就会被直接丢弃。这种机制极大地保证了生成环境的可用性,避免Agent在无效的环境中进行训练。

生成完成测试

第三阶段是生成完成测试,也就是为任务准备了一把“尺子”,用来衡量Agent是否真正完成了任务。系统会根据任务描述、特权信息和初始状态测试,生成最终的测试文件。这个文件会利用特权信息中提取的路径、指令和显式数据,验证任务的预期结果。

为了防止出现“伪成功”,作者们还加入了一个巧妙的校验步骤:就是验证这些最终测试在环境的初始状态下是不通过的。确保测试是为了检测任务完成带来的系统状态变化,而不是一些永远返回True的无效代码。这个设计也让任务的验证结果更具可信度。

基于解的过滤机制

第四阶段是基于解的过滤。这也是任务生成的最后一道质量关卡。即便通过了前三轮的验证,生成的任务仍然可能存在逻辑不通、描述不清或者技术上无法完成的问题,比如要求删除一个不存在的文件而且不允许报错。这样的任务会让Agent浪费大量的训练时间,甚至学到错误的逻辑。

为了解决这个问题,作者们引入了强模型进行可解性过滤。论文中使用了OpenAIo3模型。系统会让o3模型对每个生成的任务进行16次解决方案尝试。只要其中有一次尝试成功,该任务就会被保留。而那些连o3模型尝试16次都无法完成的任务,会被判定为“描述不清”或者“不可完成”,直接丢弃。据论文中的数据显示,这一步会过滤掉大约一半的候选任务,有效剔除了由于模型幻觉或逻辑错误产生的无效任务,确保留给Agent训练的任务至少在理论上是可解的。

通过这四个阶段的处理,Endless Terminals实现了任务生成的自动化、并行化和可验证化。作者们通过这套流水线,最终生成了三千二百五十五个Apptainer格式的有效任务,为终端Agent的训练提供了海量的高质量数据支撑。

极简Agent架构设计

而有了优质的任务和环境,Agent与终端的交互设计也同样重要。为了继续贯彻极简主义的理念,剥离所有的干扰因素,论文中设计了一套干净、纯粹的交互协议,让Agent尽可能“赤裸”地面对终端,从而逼出其内生的推理能力。我们也来详细了解一下这部分的设计细节。

交互循环与思维链

首先是交互循环的设计。Agent与终端之间采用标准的多轮交互过程。在每一轮交互中,模型接收的输入是完整的对话历史,不仅包含过去的用户指令和Shell输出,还包含模型自己之前的推理过程,让模型能基于完整的上下文进行决策。

模型的输出则做了极致的简化,只有两种形式:要么是需要执行的Shell命令,要么是任务完成的信号。为了实现结构化输出,仅使用了两个极简的XML标签:用<command>标签来包裹Shell命令,用<command>done</command>来表示任务完成。

同时,作者们还允许模型在输出命令之前包含任意的推理内容。这些推理内容会成为后续对话历史的一部分。这个设计被形象地称为“碎碎念”,实际上是为Agent赋予了思维链(Chain-of-Thought)的能力,让模型能先想清楚再动手,还能引用自己之前的推理,进行自我纠正或者在部分完成的基础上继续推进任务。这对于完成复杂的终端多轮任务至关重要。

持久化Shell环境

其次是Shell环境的设计。Endless Terminals底层支持Docker和Apptainer两种容器。对于Apptainer容器,系统通过伪终端维护一个持久的交互式Shell会话。这个设计的核心是保证环境状态的持久化:Agent连接的Apptainer实例在整个任务情节的所有轮次中都是存活的,文件系统的状态、环境变量和正在运行的进程都会在命令之间保留,这与我们真实的终端使用体验完全一致。

在每一条命令执行后,系统还会捕获标准输出、标准错误输出以及退出代码,并且将这些信息打包成结构化的观察结果返回给Agent,让模型能清晰地知道命令的执行结果,为下一步的决策提供依据。

非交互式工具挑战

然后是极简脚手架的设计,这也是交互设计的核心。系统提示词仅包含三个最基本的指令:分别是每轮输出一个命令、使用非交互式标志、在宣布完成前验证解决方案。没有任何额外的辅助提示。

同时,由于系统要求非交互式执行,像vimhtop这样需要实时用户交互的工具,Agent都无法使用。这就要求Agent必须学会使用catsedgrep等流式处理工具来完成同样的任务。虽然这在一定程度上增加了任务的难度,但是也更能考验Agent的Shell操作能力,让模型真正掌握终端操作的核心技能。

情节终止与验证

最后是情节终止规则的设计,明确了Agent的训练情节在何种情况下会结束。主要有三种情况:一是Agent主动发出done动作,宣布任务完成;二是达到最大的16次轮数限制;三是达到最大的16k Token限制。

当情节结束时,系统会在容器内执行之前生成的、对Agent保密的最终测试文件。通过测试结果,来判定agent是否真的成功完成了任务。这套极简的交互设计,剥离了所有复杂的工具和框架,让Agent的能力提升完全依赖于环境的训练。而我们在前面展示的实验结果,也充分验证了这种设计的有效性。

模型失败模式分析

在实验中,作者们还对模型的失败案例进行了深入的分析,找出了模型主要的失败模式。通过分析发现,模型的失败主要分为两种类型:

  • 循环失败(占比39%):具体表现为模型陷入了死循环,不停地重复执行相同的命令序列。这类失败的核心特征是命令多样性极低,仅为0.18,就像人钻了牛角尖,撞了南墙也不回头,无法根据报错信息调整策略。
  • 轮次耗尽(占比26%):也就是模型在规定的64轮内无法完成任务,只能因达到轮数限制而终止。

而与之形成鲜明对比的是,成功完成任务的模型展现出了显著更高的命令多样性,平均达到0.49。这意味着成功的Agent在遇到错误时,懂得变通,会尝试不同的替代方案,通过探索找到正确的解决路径。这也说明,提升模型的探索能力和灵活应变能力,是未来提升终端Agent性能的重要方向。

SF与RL的协同效应

此外,实验还揭示了监督微调强化学习之间的互补性。Qwen3-8B-openthinker-sft作为经过监督微调的模型,在Endless Terminals的训练中取得了最好的效果,其最终的成功率远高于未经过监督微调的基础模型。这个结果表明,监督微调可以为强化学习提供一个良好的起点,让模型先具备基础的任务处理能力和推理逻辑,也就是实现“热启动”。而强化学习则能在这个基础上,通过在大规模环境中的自主探索,突破监督微调的能力上限,实现模型能力的进一步提升。这种“监督微调+强化学习”的组合,也为未来终端Agent的训练提供了一套可行的最佳实践路径。

环境扩展的价值

应该说,这篇论文的价值,不仅在于提出了Endless Terminals这样一套程序化任务生成流水线,更在于为AI Agent的研究提供了一个全新的方法论。它让我们认识到,在大模型的研究中,模型架构的优化固然重要,但是训练环境的构建同样不可忽视,甚至在某些情况下,环境的扩展能带来比架构优化更显著的效果。

同时,论文也深刻地指出了从合成数据到真实世界之间存在的鸿沟,无论是任务的真实性还是模型的能力上限,都还有很大的提升空间。

感谢收看本期视频,我们下期再见。

📌 文中提及的人物和组织

公司/组织: OpenAI

产品/模型: Endless Terminals, o3 model

关键字: ai-agent reinforcement-learning training-environment programmatic-generation