一句话总结
TerminalTraj 提出了一套从 Docker 化环境中大规模生成终端智能体轨迹的完整流水线,通过预测性质量过滤和可执行验证代码,从近百万个 GitHub 仓库中筛选并生成了超过 5 万条高质量的多轮交互轨迹,训练出的 TerminalTraj-32B 模型在 TerminalBench 1.0 和 2.0 上分别取得了超过骨干模型 20 分和 10 分的提升。
背景与前置知识
▼终端智能体(Terminal Agent):一类能够通过命令行界面(shell)与计算机环境交互的 AI 智能体。与传统的代码生成模型不同,终端智能体需要理解环境状态、执行命令、读取输出并根据反馈动态调整策略。典型代表有 OpenHands、SWE-Agent 等。
TerminalBench(TB):专门用于评估终端智能体性能的基准测试。TB 1.0 包含 46 个 Docker 化任务,TB 2.0 扩展到 72 个任务,涵盖多模态、SQL、Web 服务、安全等多个领域。评估采用 pass@k 指标,即 k 次尝试中至少一次通过测试的概率。
轨迹(Trajectory):智能体在执行任务过程中产生的完整交互序列,包括环境状态、智能体的动作(命令)、环境反馈等多轮对话记录。高质量的轨迹是训练智能体的关键训练数据。
Docker 化环境:将任务运行环境打包为 Docker 镜像,确保环境的可复现性和隔离性。每个任务对应一个 Docker 镜像,包含所需的依赖、数据文件和初始状态。
多轮监督微调(Multi-turn SFT):与单轮问答不同,终端智能体任务需要多轮交互。训练数据格式为多轮对话序列,模型需要在每一轮根据历史上下文和当前环境状态生成下一步动作。
核心思想详解
▼TerminalTraj 的核心思想可以用一个"淘金"的比喻来理解:互联网上有海量的开源项目和代码仓库,但绝大多数并不适合用来训练终端智能体。关键挑战在于如何从"沙子"中筛出"金子"——即那些环境可复现、任务有意义、轨迹可验证的高质量训练数据。
整个流水线的设计遵循一个层层递进的漏斗逻辑:
- 广撒网:从 GitHub 等平台收集近 90 万个代码仓库作为原始数据源
- 粗筛:构建 Docker 镜像,用 ScoreModel 预测哪些镜像更有可能产出高质量数据
- 精炼:为通过筛选的镜像生成任务实例(包含任务描述和验证代码),用大模型(Qwen3-Coder-480B)在环境中执行任务,产生交互轨迹
- 验真:通过可执行的 pytest 验证代码检验轨迹的正确性,只保留通过验证的轨迹
这套流水线的巧妙之处在于它解决了一个核心矛盾:高质量轨迹的生成需要大量计算资源(每条轨迹都需要在 Docker 容器中实际运行),但原始数据中只有极小比例能产出可用数据。通过引入 ScoreModel 做预测性过滤,将 Docker 构建成功率从随机选择的 9% 提升到了 19.5%,大幅提高了资源利用效率。