← 返回 2026-02-25

面向大语言模型终端能力扩展的数据工程研究 On Data Engineering for Scaling LLM Terminal Capabilities

Renjie Pi, Grace Lam, Mohammad Shoeybi, Pooya Jannaty, Bryan Catanzaro, Wei Ping 📅 2026-02-24 👍 103 2026-07-13 08:35
SFT数据工程 Terminal-Bench 合成数据生成 模型微调 终端Agent

数据工程方法提升大模型终端操作能力

前置知识

终端Agent(Terminal Agent)

终端Agent是指能够在命令行终端环境中自主执行任务的AI智能体。与传统的代码生成模型不同,终端Agent需要完成端到端的工作流,包括编写代码、编译程序、训练模型、配置系统和调试环境等操作。这类Agent通过发送按键序列(keystrokes)到tmux会话来与Docker容器内的沙箱环境交互,具有极大的灵活性。代表性的终端Agent包括Claude Code和Codex CLI等产品。

本文的核心目标就是提升大语言模型在终端环境中的操作能力,因此理解终端Agent的概念是理解全文的基础。本文研究的数据工程方法专门针对终端Agent的训练需求设计。

监督微调(Supervised Fine-Tuning, SFT)

监督微调是一种模型训练技术,使用高质量的输入-输出对来调整预训练模型的参数。在本文中,SFT使用的是终端任务的轨迹数据(trajectory data),即模型在终端环境中完成任务的完整交互记录。训练过程中使用AdamW优化器,学习率为 $2 imes 10^{-5}$,权重衰减为 $10^{-4}$,训练2个epoch,全局批大小为128,最大序列长度为32768个token。

SFT是本文将基础Qwen3模型转化为高性能终端Agent的关键训练方法。理解SFT的工作原理有助于理解本文的实验设计和结果分析。

Terminal-Bench 2.0

Terminal-Bench是评估终端Agent性能的标准基准测试,由89个人工设计和验证的任务组成,涵盖科学计算、软件工程、机器学习、安全、系统管理和数据科学等多个领域。每个任务包含四个组件:自然语言指令、Docker容器化环境、验证测试套件和参考解决方案。评估使用Terminus 2参考Agent框架,该框架仅提供一个在沙箱Docker容器中运行的交互式tmux会话。

Terminal-Bench 2.0是本文所有实验的统一评估基准,理解其任务结构和评估方式对于解读实验结果至关重要。

数据集适配器(Dataset Adapter)

数据集适配器是一种将现有数据集(如数学题、代码题、软件工程问题)转换为终端任务格式的技术。适配器通过Terminus 2系统提示模板,将原始问题映射到终端任务的instruction占位符,并附加基于数据集类型的特定后缀。例如数学数据集要求将最终答案放入/app/solution.txt,代码数据集要求将解决方案代码放入/app/solution.py。适配器不需要LLM参与转换过程,是一种高效的数据扩展方法。

数据集适配器是本文提出的双策略数据生成框架的重要组成部分,用于建立广泛的基础终端能力覆盖。

合成任务生成(Synthetic Task Generation)

合成任务生成是使用LLM自动生成终端任务的过程。本文提出两种互补的生成方法:种子数据生成(seed-based)和技能生成(skill-based)。种子数据生成使用现有问题作为灵感来源,通过LLM合成新的终端任务;技能生成则从结构化的原始技能分类法中组合3-5个技能来创建任务。两种方法都生成标准化格式的任务,包括自然语言提示、pytest测试用例、输入文件和Docker环境。

合成任务生成是本文的核心创新之一,提供了比数据集适配器更精细的任务控制能力,可以针对性地开发特定终端技能。

轨迹数据(Trajectory Data)

轨迹数据记录了终端Agent完成任务的完整交互过程,包括每一步的分析、计划、命令序列和任务完成状态。每条轨迹由多个轮次(turn)组成,每个轮次包含一个JSON格式的响应,其中有analysis(当前状态分析)、plan(下一步计划)、commands(命令数组,包含keystrokes和duration)和task_complete(任务完成标志)等字段。轨迹数据是SFT训练的核心数据格式。

轨迹数据是本文SFT训练的直接输入数据,理解其结构有助于理解数据工程中的过滤策略和质量控制方法。

预构建Docker镜像(Pre-Built Docker Images)

预构建Docker镜像是本文在大规模任务生成中的关键设计决策。与为每个任务生成唯一Dockerfile不同,本文维护9个领域特定的Docker镜像,每个镜像预先安装该领域常用的包和依赖(如数据科学领域的pandas和scikit-learn,安全领域的加密库)。这种方法消除了Dockerfile验证开销,减少了资源占用,并将环境生成与任务生成解耦。

预构建Docker镜像是实现大规模合成任务生成的关键技术决策,解决了传统方法中环境生成的可扩展性问题。

研究动机

当前最先进的终端Agent(如Claude Code和Codex CLI)在Terminal-Bench基准测试上展现出令人期待的性能,但其背后的训练数据策略却鲜为人知。这种不透明性迫使研究者采用高成本的试错过程来改进终端能力,主要存在两个关键瓶颈:第一,基础资源匮乏,包括多样化的任务提示、必要的依赖文件和预配置环境;第二,轨迹收集的物流复杂性,真实世界的人机交互难以捕获,而通过LLM Agent进行合成生成则因每个任务都需要全新环境实例化和多轮交互而成本过高。以Terminal-Bench为例,该基准包含89个人工设计的任务,涵盖科学计算、软件工程、机器学习等多个领域,但缺乏大规模高质量的训练数据来支持模型训练。现有方法要么依赖复杂的Agent框架(计算成本高),要么使用简单的适配器(质量有限),无法在生成效率和训练效果之间取得平衡。

本文的目标是本文旨在系统性地研究终端Agent训练中的数据工程实践,填补该领域的知识空白。具体目标包括三个方面:第一,开发Terminal-Task-Gen,一个轻量级的合成任务生成管道,支持基于种子和基于技能的任务构建,以解决数据稀缺问题;第二,进行数据和训练策略的全面分析,包括过滤策略、课程学习、长上下文训练和缩放行为的研究;第三,通过开源模型检查点和大部分合成数据集,加速该领域的研究进展。最终目标是建立一个实用的数据工程框架,使中小型模型能够通过高质量训练数据达到或超越大型前沿模型的终端能力。

与已有工作不同的是,本文的独特切入角度在于采用双策略互补的粗到细数据生成方法。与现有工作相比,本文的核心区别体现在三个层面:第一,在数据生成策略上,现有工作要么使用数据集适配器(简单但质量有限),要么使用多Agent系统(精细但计算成本高),本文首次将两者系统性地结合,适配器提供广度覆盖,合成生成提供深度控制;第二,在技术实现上,本文创新性地使用预构建Docker镜像替代传统的每任务Dockerfile生成,消除了环境验证开销,实现了高效的单遍任务创建;第三,在研究方法上,本文不仅提出新方法,更进行了系统性的消融实验和缩放研究,为数据工程实践提供了可操作的见解,这是该领域首次如此全面的实证研究。

核心方法

本文的方法整体思路是构建一个双策略互补的粗到细数据生成管道。直觉上,终端Agent需要同时具备广泛的基础能力和精细的专业技能,因此需要不同类型的数据来支持。数据集适配器(Dataset Adapters)作为粗粒度策略,通过将现有的高质量数学、代码和软件工程数据集转换为终端任务格式,高效地扩展数据量并建立基础能力;合成任务生成(Synthetic Task Generation)作为细粒度策略,通过LLM生成针对特定技能的任务,提供对任务特征的精细控制。这两种策略在技术路线上互补:适配器利用现有数据集解决数据稀缺问题,而合成生成提供灵活性来针对特定能力缺口进行补充。在数据生成完成后,使用Terminus 2 Agent框架在Docker容器中执行任务,收集交互轨迹,经过去污染和质量过滤后,形成用于SFT训练的最终数据集Terminal-Corpus。

本文的核心创新点在于提出Terminal-Task-Gen合成任务生成管道,其本质区别于已有方法体现在三个方面。第一,任务生成的双流架构:本文设计了种子数据生成和技能生成两个并行的数据流,种子数据生成使用现有问题作为灵感来源(而非固定模板),通过LLM合成新的终端任务;技能生成则从结构化的原始技能分类法出发,组合3-5个技能创建任务。这与现有的简单适配器方法有本质区别,适配器只是包装原始提示,而本文的方法创造了全新的任务场景。第二,预构建Docker镜像的设计决策:与传统方法为每个任务生成唯一Dockerfile不同,本文维护9个领域特定的共享Docker镜像,每个镜像预先安装常用依赖。这一设计提供了三个可扩展性优势:消除Dockerfile验证开销、减少资源占用、将环境与任务生成解耦。第三,系统性的数据工程分析:本文不仅提出新方法,更进行了全面的消融实验,包括过滤策略、课程学习、长上下文训练和缩放行为的研究,为该领域提供了首个系统性的实证指导。

方法步骤详情

本文的方法分为四个主要步骤。第一步,数据收集与适配:选择三个高质量的SFT提示数据集——数学(163K个来自OpenMathReasoning的提示)、代码(35K个来自OpenCodeReasoning的提示)和软件工程(32K个来自SWE-Bench等数据集的提示),使用Terminus 2系统提示模板将它们转换为终端任务格式。第二步,合成任务生成:使用DeepSeek-V3.2作为教师模型,通过两种方法生成任务——种子数据生成从现有问题合成新任务,技能生成从9个领域(数据处理、数据查询、数据科学、调试、依赖管理、文件操作、科学计算、安全、软件工程)的技能分类法中组合技能创建任务。第三步,轨迹生成:在Docker容器中执行生成的任务,使用Terminus 2 Agent框架收集交互轨迹,每个轨迹包含多个轮次的分析、计划和命令执行。第四步,数据过滤与去污染:首先通过14-gram重叠去除与Terminal-Bench 2.0测试样本的污染,然后应用质量过滤(移除身份泄露和中文字符),最后进行轨迹过滤实验(比较无过滤、仅完整轨迹和仅成功轨迹的效果)。

技术新颖性

本文的技术新颖性体现在多个层面。在数据生成架构上,首次提出种子数据生成和技能生成的双流架构,与现有的单一适配器方法或多Agent系统形成鲜明对比。种子数据生成将现有问题作为灵感来源而非固定模板,通过LLM创造全新的终端任务场景;技能生成从结构化的原始技能分类法出发,确保生成的任务直接反映终端Agent需要的操作细节和多步工具交互。在技术实现上,预构建Docker镜像的设计是一个关键创新,通过维护9个领域特定的共享镜像,消除了传统方法中Dockerfile验证和环境生成的开销,实现了高效的单遍任务创建。在研究方法上,本文进行了该领域首次系统性的消融实验,包括数据源组合效果、过滤策略比较、课程学习策略和缩放行为研究,为数据工程实践提供了可操作的实证指导。特别值得注意的是,本文发现保留不成功轨迹这一反直觉的结果,表明严格的过滤策略可能适得其反,因为不成功的轨迹为模型提供了现实错误状态和恢复模式的监督信号。

Terminal-Task-Gen概览
Figure 1: Terminal-Task-Gen概览
Terminal-Bench任务目录结构
Figure 2: Terminal-Bench任务目录结构
Terminus 2 Agent响应格式
Figure 3: Terminus 2 Agent响应格式
生成轨迹中的token数量分布
Figure 5: 生成轨迹中的token数量分布
生成轨迹中的轮次数量分布
Figure 6: 生成轨迹中的轮次数量分布

实验结果

本文的核心发现在Terminal-Bench 2.0基准测试上得到充分验证。Nemotron-Terminal系列模型展现出显著的性能提升:Nemotron-Terminal-8B从Qwen3-8B基线的2.47%提升至13.0%(正负2.2),实现了5倍的性能增长;Nemotron-Terminal-14B从4.04%提升至20.2%(正负2.7);Nemotron-Terminal-32B从3.37%提升至27.4%(正负2.4)。令人瞩目的是,这些中小型模型展现出与大型前沿模型相当的竞争力:Nemotron-Terminal-14B(14B参数)超越了120B参数的GPT-OSS(18.7正负2.7)和Gemini 2.5 Flash(16.9正负2.4),而Nemotron-Terminal-32B(32B参数)超越了480B参数的Qwen3-Coder(23.9正负2.8)。按任务类别分析显示,合成数据在基础模型完全失败的能力上解锁了关键能力:Qwen3-14B和32B在数据查询和模型训练任务上得分为0,而Nemotron-Terminal-32B分别达到60.0和50.0;在安全任务上从2.5提升至27.5,数据处理从5.0提升至50.0,软件工程从5.0提升至31.7。消融实验表明,每个数据源都提供互补价值:数学、代码和SWE适配器单独使用时性能分别为5.39%、6.29%和7.02%,但组合后达到9.66%;合成任务中,基于技能的数据驱动了主要收益(12.4%),而添加基于种子的数据虽然未提高平均分数,但成功降低了方差。过滤策略实验发现,无过滤(12.4%)显著优于仅完整轨迹(6.74%)和仅成功轨迹(5.06%),表明严格过滤适得其反。长上下文训练实验显示,扩展上下文长度略微损害性能,大多数高质量监督数据已在标准窗口内。课程学习实验表明,单阶段混合训练(13.03%)优于两阶段课程学习(10.39%)。缩放实验显示,随着训练数据量增加,8B和14B模型均展现出一致的性能提升,14B模型不仅获得更高的绝对性能,也从额外训练数据中获得更大收益。

Terminal-Bench 2.0模型性能对比
Table 1: Terminal-Bench 2.0模型性能对比
DeepSeek-V3.2在适配基准测试上的性能
Table 2: DeepSeek-V3.2在适配基准测试上的性能
使用Terminus 2 Agent的Terminal-Bench 2.0结果
Table 3: 使用Terminus 2 Agent的Terminal-Bench 2.0结果
按Terminal-Bench类别的模型性能
Table 4: 按Terminal-Bench类别的模型性能
不同训练数据源的Qwen3-8B SFT结果
Table 5: 不同训练数据源的Qwen3-8B SFT结果
数据集适配器过滤策略的Qwen3-8B消融实验
Table 6: 数据集适配器过滤策略的Qwen3-8B消融实验
合成任务过滤策略的Qwen3-8B消融实验
Table 7: 合成任务过滤策略的Qwen3-8B消融实验
SFT序列长度和YaRN2缩放对Qwen3-8B性能的影响
Table 8: SFT序列长度和YaRN2缩放对Qwen3-8B性能的影响
课程学习策略的消融实验
Table 9: 课程学习策略的消融实验
按领域的技能总结
Table 10: 按领域的技能总结
训练数据规模对模型性能的影响
Figure 4: 训练数据规模对模型性能的影响
查看结构化数据
任务指标本文基线提升
Terminal-Bench 2.0 整体性能 pass@1 准确率 (%) Nemotron-Terminal-32B: 27.4正负2.4 Qwen3-32B: 3.37正负1.6 提升24.03个百分点,相对提升712%
Terminal-Bench 2.0 8B模型 pass@1 准确率 (%) Nemotron-Terminal-8B: 13.0正负2.2 Qwen3-8B: 2.47正负0.5 提升10.53个百分点,相对提升426%
Terminal-Bench 2.0 14B模型 pass@1 准确率 (%) Nemotron-Terminal-14B: 20.2正负2.7 Qwen3-14B: 4.04正负1.3 提升16.16个百分点,相对提升400%
与大型模型对比(32B vs 480B) pass@1 准确率 (%) Nemotron-Terminal-32B: 27.4正负2.4 Qwen3-Coder-480B: 23.9正负2.8 32B模型超越480B模型,参数量减少93%
数据查询类别 pass@1 准确率 (%) Nemotron-Terminal-32B: 60.0 Qwen3-32B: 0.0 从0提升至60,解锁全新能力
模型训练类别 pass@1 准确率 (%) Nemotron-Terminal-32B: 50.0 Qwen3-32B: 0.0 从0提升至50,解锁全新能力
安全类别 pass@1 准确率 (%) Nemotron-Terminal-32B: 27.5 Qwen3-32B: 2.5 提升25个百分点,相对提升1000%

局限与改进

本文存在若干值得关注的局限性。首先,教师模型的选择限制了数据质量的上限:本文选择DeepSeek-V3.2作为教师模型,虽然其在Terminal-Bench 2.0上表现良好(38.2正负2.9),但并非最强的闭源模型(如GPT-5.2的54.0和Claude Opus 4.5的57.8),这意味着使用更强的教师模型可能进一步提升数据质量。其次,合成数据生成的可重复性问题:本文虽然开源了大部分数据集,但合成任务生成过程依赖LLM的随机性,完全复现特定的数据分布具有挑战性。第三,评估基准的局限性:Terminal-Bench 2.0仅包含89个任务,样本量相对较小,这导致评估结果的置信区间较宽(如Nemotron-Terminal-32B的27.4正负2.4),可能无法完全代表模型在真实终端场景中的性能。第四,长上下文处理的不足:虽然本文进行了长上下文训练实验,但发现扩展上下文长度略微损害性能,这可能意味着当前的长尾轨迹数据质量不高,但本文未深入研究如何提升长轨迹数据的质量。第五,领域覆盖的不均衡性:从类别结果看,科学计算(0%)和数学(0%)类别即使经过SFT训练后仍然为零,说明当前数据工程方法对某些特定领域的能力提升有限。第六,过滤策略的反直觉发现需要更多解释:虽然本文发现无过滤策略效果最好,但未深入分析为什么保留不成功轨迹有益,这可能与数据分布或模型泛化能力有关,需要进一步研究。

独立分析的弱点

本文在多个方面存在可改进的弱点。第一,教师模型选择过于保守:本文选择DeepSeek-V3.2(685B参数)作为教师模型,但Terminal-Bench 2.0的评估显示GPT-5.2(54.0%)和Claude Opus 4.5(57.8%)的性能显著优于DeepSeek-V3.2(38.2%),使用更强的教师模型可能生成更高质量的轨迹数据。改进方向是系统性地比较不同教师模型对最终SFT效果的影响,或者探索教师模型的集成方法。第二,技能分类法的设计缺乏理论支撑:本文定义了9个领域的原始技能分类法,但分类依据主要是经验性的,缺乏系统性的技能覆盖度分析。改进方向是建立技能覆盖度的量化评估指标,确保生成的任务能够全面覆盖终端操作的技能空间。第三,过滤策略的分析不够深入:虽然本文发现无过滤策略效果最好,但仅比较了三种简单的过滤策略(无过滤、仅完整轨迹、仅成功轨迹),缺乏更精细的过滤方法(如基于轨迹质量的评分过滤)。改进方向是开发基于轨迹质量的自动评估方法,实现更智能的数据过滤。第四,课程学习的探索有限:本文仅比较了单阶段混合训练和两阶段课程学习,但未探索更复杂的课程策略(如基于难度的渐进式课程)。改进方向是研究基于任务难度或技能类型的自适应课程学习方法。第五,缺乏跨基准的泛化验证:所有实验仅在Terminal-Bench 2.0上评估,未验证在其他终端任务基准或真实世界场景中的泛化能力。

未来方向

本文的作者明确提出了一个重要的未来研究方向:将本文的数据工程基础与强化学习(RL)结合,利用可验证的执行反馈实现自我纠正和最优规划。具体而言,作者指出可以利用SFT训练的模型作为起点,通过RL进一步优化模型在长周期任务上的表现,利用终端环境提供的明确执行反馈(如测试通过/失败)作为奖励信号。基于本文的成果,还可以延伸出多个有前景的研究方向:第一,多模态终端Agent:将视觉理解能力(如屏幕截图分析)与终端操作能力结合,开发能够理解图形界面和终端的混合Agent;第二,实时数据增强:研究在线学习方法,使模型能够在部署过程中从新的终端交互中持续学习;第三,跨领域迁移:探索将终端Agent的训练方法迁移到其他Agent场景(如Web Agent、API Agent)的可能性;第四,自适应数据生成:研究如何根据模型在特定领域的薄弱环节,自动调整合成任务生成的策略,实现针对性的能力提升;第五,更高效的数据利用:探索数据增强技术(如轨迹改写、难度调整)来更充分地利用已有的高质量轨迹数据;第六,多教师模型蒸馏:研究如何整合多个教师模型的轨迹数据,取长补短,生成更高质量的训练数据。

复现评估

本文在可复现性方面做出了重要贡献,但也存在一些挑战。开源情况方面,作者在HuggingFace上开源了Nemotron-Terminal模型检查点(8B、14B、32B)和大部分合成数据集,包括基于适配器和基于技能的任务子集,这为后续研究提供了良好的基础。然而,数据集适配器使用的原始数据集(如Nemotron-Cascade的数学、代码和SWE数据)来自其他研究工作,其完整复现需要访问这些上游数据源。算力需求方面,训练8B和14B模型需要4个节点(每节点8个GPU,共32个GPU)并使用序列并行,32B模型需要16个节点(共128个GPU),并使用CPU卸载,这对于大多数研究机构来说是可承受的,但仍需要相当的计算资源。数据生成方面,使用DeepSeek-V3.2作为教师模型进行大规模轨迹生成需要大量的API调用成本,虽然本文开源了生成的数据,但如果需要重新生成或扩展数据集,成本可能是一个障碍。评估方面,Terminal-Bench 2.0的评估框架(Harbor和Daytona)是开源的,但评估需要在云沙箱中运行,可能产生额外成本。总体而言,本文的可复现性较好,主要挑战在于上游数据源的访问和大规模数据生成的算力成本。