HyperAIHyperAI

Command Palette

Search for a command to run...

FACET:在终端任务合成中保留源意图与可执行状态

摘要

训练终端智能体需要可扩展的可执行监督,但合成高质量的终端任务仍具挑战。每个任务将一条指令、一个初始化的环境、一个参考解和一个可执行验证器耦合在一起;若这些产物基于不一致的假设生成,则所得任务可能无法求解或被错误评估。同时,多阶段合成可能丢弃原始来源中编码的目标、依赖关系、状态转移和过程约束。我们提出 FACET(细粒度智能体式可执行任务构建框架),该框架同时解决信息保留和跨产物一致性问题。FACET 将相关的智能体技能重构为连贯且信息丰富的场景,随后实现并修复执行环境,再生成最终的任务产物。由此得到的容器状态作为指令、解和验证器的共享基础,而基于执行的验证和针对性修复则纠正特定产物的失败,无需不必要地重新生成有效组件。FACET 生成具有密集可执行检查的复杂终端任务,从这些任务中收集的成功轨迹提供了有效且数据高效的监督。在多个规模上微调模型,均在 Terminal-Bench 2.1 上持续提升性能,而对替代生成方案的分析则支持基于环境构建对任务有效性和解与验证器对齐的重要性。这些结果确立了源意图保留和共享可执行状态基础作为可扩展终端任务合成的关键原则。

一句话总结

来自中国科学技术大学、上海人工智能实验室和复旦大学的研究人员提出FACET,该框架通过将agent技能重建为连贯场景,将指令、解决方案和验证器锚定于已实现的容器状态,并应用基于执行的验证与针对性修复来合成复杂终端任务,从而保留源意图和跨工件一致性,为Terminal-Bench 2.1提供数据高效的微调增益。

核心贡献

  • FACET将相关的agent技能重建为连贯且信息丰富的终端任务场景,并在生成最终指令、参考解决方案和验证器之前实现并修复执行环境。
  • 一种可执行状态锚定的构建范式使用共享的已实现容器状态来协调指令、解决方案和验证器,使其成为单一连贯任务;基于执行的验证和针对性修复随后纠正工件特定的失败,而无需重新生成已有效的组件。
  • 顺序环境锚定构建实现了最高的任务产出,并相比在解决方案之前生成验证器提高了解决方案与验证器的对齐度;在FACET生成的成功轨迹上微调从4B到27B的Qwen3.5模型,使Terminal-Bench 2.1得分分别绝对提升7.12、8.24和6.75分,其中27B模型达到47.57分,接近Qwen3.5-397B的49.06分。

引言

作者针对训练在终端环境中运行的语言agent时对高质量监督数据日益增长的需求,成功需要正确协调指令、执行环境、参考解决方案和可执行验证器。先前的合成流水线面临两个关键问题:丰富的源信息在多阶段生成中逐渐丢失,以及当任务组件未锚定于共享的已实现执行状态时可能相互偏离。为克服这些问题,作者引入FACET,该框架首先从大量可重用agent技能中重建连贯的用户场景和跨技能依赖关系,然后构建并修复执行环境,并使用已实现的容器状态作为共同锚定接口,最后确定指令、解决方案和验证器,随后进行基于执行的验证和针对性工件修复。

数据集

作者从公开技能包构建可执行任务数据集。

  • 来源与初始过滤

    • 公开技能包收集自OpenClaw、ClawHub和GitHub。
    • 作者移除不安全指令、需要私有网站或私有信息的技能,以及依赖非公开资源的技能。
    • 同时丢弃不可读、不可操作和重复的记录。
  • 技能记录与统计

    • 每个有效技能被标准化为结构化记录,包含描述、所需工具、输入输出、程序步骤和来源出处。
    • 这产生了超过71K个有效技能。
    • 保留的技能被组织为5个顶级类别和34个细粒度类别。
    • 最终验证的任务被分为9个任务族。
    • 所提供的章节未说明最终验证任务的确切数量或下游划分大小。
  • 场景提取与仓库构建

    • 提取agent为每个技能识别可能的应用上下文、用户目标、初始状态和期望的最终状态。
    • 场景假设被嵌入,并检索来自其他技能的相似假设以识别相关的技能组合。
    • 相似假设被分组为候选场景-技能对。
    • 基于模型的评判器仅保留相关、互补、非冗余且可作为终端工作流执行的候选对。
    • 接受的配对构成下游使用的仓库。
  • 元数据构建

    • 每个接受的场景-技能对被重建为五个维度:目标、上下文、能力、状态、输入/输出及工具。
    • 这些维度被整合为一个完整的自然语言场景,作为共享语义参考。
    • 然后作者从该场景生成解决方案参考和指令参考,并检查两个参考是否一致。
  • 可执行任务包构建

    • 最终项目以Harbor格式打包,包含environment/、solution/、tests/、instruction.md和task.toml。
    • 环境agent首先编写描述目录、文件、服务和依赖关系的清单,然后在受限基础镜像内将其实体化。
    • 检索到的资源被本地化到构建上下文中,使环境自包含,评估时无需网络访问。
    • 作者可能通过额外记录、元数据字段、干扰条目和跨文件关系对生成或收集的数据进行增强或扰动,同时保持模式结构和任务语义。
    • 验证检查环境构建和初始化成功、验证器在初始状态下不通过、参考解决方案从干净初始状态执行成功,以及验证器在最终状态下通过。
    • 失败的候选任务被送入针对性修复,并从干净状态重新评估。在修复预算内仍然无效的候选任务被丢弃。
  • 使用与处理说明

    • 重建的场景和对齐的参考被用作从同一已实现容器状态生成指令、解决方案和验证器的共享规范。
    • 未描述固定长度裁剪。相反,流水线使用语义过滤、场景提取、相似度分组、基于评判器的保留和agent式重建来塑造数据集。
    • 所提供的材料未指定训练、验证或测试划分比例,或下游混合比例。

方法

作者将FACET流水线构建为一个三阶段生成过程,将原始技能描述转化为完全验证、可执行的终端任务包。任务包 T=(I,E,S,V,M)\mathcal{T} = (\mathcal{I}, \mathcal{E}, \mathcal{S}, \mathcal{V}, \mathcal{M})T=(I,E,S,V,M) 由用户指令、环境规范、参考解决方案、可执行验证器和运行时元数据组成。合成任务的接受标准要求环境构建成功、验证器在初始状态下失败、参考解决方案无故障执行,以及验证器在最终解决方案状态下通过:

A(T)=B(E)¬νV(e0)(eT)νV(eT).\mathcal{A}(\mathcal{T}) = B(\mathcal{E}) \wedge \neg \nu_{\mathcal{V}}(e_{0}) \wedge (e_{T} \neq \bot) \wedge \nu_{\mathcal{V}}(e_{T}).A(T)=B(E)¬νV(e0)(eT=)νV(eT).

流水线在最终验证步骤强制执行此逻辑检查,早期阶段旨在最大化候选任务满足所有四个条件的可能性。

第一阶段,信息源获取,从OpenClaw、ClawHub和GitHub等来源收集公开可用的技能包。过滤步骤移除包含不安全指令、依赖私有资源或不可操作内容的技能。每个保留的技能被标准化为结构化记录,捕获其描述、工具集、输入/输出、程序步骤和出处。然后,提取agent为每个技能识别可能的应用上下文、用户目标和期望的最终状态,嵌入这些场景假设,并从其他技能检索相似假设以检测有意义的组合。基于模型的评判器评估候选场景-技能对 pc=(c,Xc)p_c = (c, X_c)pc=(c,Xc) 的相关性、互补性、非冗余性和可执行性,仅保留被判定为有效的对:

P={pcJ(pc)=1}.\mathcal{P} = \{p_c \mid J(p_c) = 1\}.P={pcJ(pc)=1}.

生成的场景-技能仓库 P\mathcal{P}P 作为下一阶段的基础。

第二阶段通过agent式重建和参考构建,将每个场景-技能对扩展为更丰富的组合规范。流水线首先应用五个递进模块:技能分析确定能力、前置条件和效果;场景探索提出技能为共享目标做出贡献的具体应用设置;关联与过滤丢弃浅层的并列放置;演化与恢复将能力安排为连贯的工作流,并恢复跨技能依赖关系、中间工件和状态转换;信息扩展用具体资源、格式、约束和成功条件丰富工作流。然后,生成的场景同时沿五个维度描述:

Dc={dgoal,dcontext,dcapability,dstate,dio-tool}.D_{c} = \{d_{\text{goal}}, d_{\text{context}}, d_{\text{capability}}, d_{\text{state}}, d_{\text{io-tool}}\}.Dc={dgoal,dcontext,dcapability,dstate,dio-tool}.

这些维度捕获用户目标、应用设置、技能的角色和相互关系、初始/中间/最终状态,以及所有必需的文件、模式、工具和服务。模型将五个描述整合为一个完整的自然语言场景 CCC。从这一共享语义参考出发,系统生成解决方案参考 RSR_SRS(设置动作、工作流、状态转换)和指令参考 RIR_IRI(目标、输入、输出、约束),并通过一致性对齐模型确保两个参考共享相同的初始状态和目标结果:

RS=fS(C),RI=fI(C,RS).R_{S} = f_{S}(C), \qquad R_{I} = f_{I}(C, R_{S}).RS=fS(C),RI=fI(C,RS).

对齐后的参考被传递到最终阶段。

第三阶段,可执行状态锚定的任务构建,通过首先构建和修复执行环境,将规范 Z=(C,RS,RI)Z = (C, R_S, R_I)Z=(C,RS,RI) 转换为实际任务包。环境agent将规划与实体化分离:它生成目录、文件、服务和依赖关系的清单,然后在受限基础镜像内使用网络访问、shell和Python程序将其实体化,并通过干扰记录和跨文件关系进行数据增强,以避免简单的固定配置。生成的镜像被构建,并执行初始化检查;诸如编译器错误、缺失包或服务崩溃等失败会触发针对性修复循环(最多三次迭代),该循环同时基于失败跟踪和原始规范,以防止退化。

成功构建后,已实现的容器状态作为共享锚定接口暴露。指令、解决方案和验证器按顺序生成,每个都可读取相同的具体环境:指令锚定于实际存在的文件和服务;解决方案在直接检查环境时构建;验证器最后生成,将初始状态和最终状态与参考工作流进行比较,倾向于基于行为和状态的检查,而非精确命令匹配。

每个候选任务以Harbor格式打包,并针对四个接受条件进行验证。当验证失败时,受限路由器从执行跟踪中识别负责的组件,并仅调用相应的修复程序(环境、解决方案或验证器修复),保留有效部分,避免完全重新生成。任务级修复最多限制为五次迭代,超出预算后仍然无效的候选任务将被丢弃。这一从技能获取到环境约束锚定生成和针对性修复的三阶段流水线,生成具有高结构一致性和可验证状态转换的可执行任务。

实验

这组实验评估了一个终端agent训练流水线,该流水线使用Terminus-2 rollout在多个规模上微调Qwen3.5模型,并在Terminal-Bench 2.1上通过基于执行的验证进行测试。比较显示,FACET数据集具有更少但更长且检查更严格的轨迹,即使少量成功轨迹也能在不同模型规模上带来一致的微调改进。任务分析表明,尽管取得了大量正确进展,许多失败反映了未满足的次要或相互依赖的需求,而生成方案实验证实,在验证器之前生成解决方案可提高任务有效性和跨工件对齐度。

FACET提供平均11.86轮的长程轨迹,与TerminalWorld相当且长于大多数其他数据集,尽管训练集仅为1.2K轨迹。其任务每个任务的可执行测试数量最高(22.77),执行更严格的多需求验证,导致与其他数据集相比通过率较低(P@1 27.00,P@3 35.00)。从P@1到P@3的提升表明部分失败可通过重试恢复,而剩余差距则凸显了持续暴露需求满足错误的任务。FACET轨迹平均11.86轮,与TerminalWorld(11.94)相似,长于Tmax(11.14)、Nemotron-Terminal(6.12)、Terminal-Lego(5.77)和Endless-Terminals(4.53)。FACET任务平均包含22.77个可执行测试,远超次高的数据集(Terminal-Lego为16.60),是最低数据集(Tmax为3.29)的五倍多。P@1为27.00,P@3为35.00,是所有比较数据集中最低的,这与每个任务独立检查的需求数量更多一致。从P@1到P@3的8分提升表明重复尝试可恢复部分失败,而与表现更好数据集的剩余差距表明许多任务持续暴露需求满足错误。

仅在1.2K成功轨迹上进行微调,即可在4B、9B和27B模型上带来一致的Terminal-Bench 2.1提升。9B模型显示出最大的绝对改进,而4B模型显示出最大的相对增益,微调后的27B模型缩小了与更大397B模型的大部分差距。这些结果表明监督信号可在不同模型规模间迁移,而非仅对某一容量范围有益。在1.2K成功轨迹上训练可提升所有评估规模在Terminal-Bench 2.1上的表现。9B模型取得了最大的绝对增益,而4B模型的相对改进最大,达到40.5%。微调后的27B模型仅落后397B模型1.49分,尽管其规模约为后者的1/15。

FACET是一个具有挑战性的长程基准,每个任务包含大量可执行测试,执行严格的多需求验证,导致通过率较低,但部分失败可通过重试恢复。仅在FACET的1.2K成功轨迹上进行微调,即可在不同模型规模上带来一致的性能提升,其中4B模型显示出最大的相对改进,27B模型几乎与397B模型持平。这些结果表明监督信号可在不同模型容量间有效迁移。


用 AI 构建 AI

从创意到上线——通过免费 AI 协同编码、开箱即用的环境和最优惠的 GPU 价格,加速您的 AI 开发。

AI 协同编码
开箱即用的 GPU
最优定价

HyperAI Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供