Coding Agent 蒸馏

更新时间:
复制 MD 格式

Coding Agent 蒸馏模板通过编程 Agent 在远程沙箱中实际修改代码、重放测试验证,产出 ShareGPT 格式的多轮 SFT 数据集,适合训练小模型在真实代码仓库中定位问题、修改代码并验证结果。

模板概述

Coding Agent 蒸馏模板适用于需要训练代码能力模型的场景。编程 Agent 在远程沙箱中实际修改代码,改动随后在全新沙箱中重放并执行测试,仅保留「改动确实使测试通过」的轨迹,产出 ShareGPT 格式的多轮 SFT 数据集。与模拟工具调用的 Agent 蒸馏不同,这条数据线的每一步都伴随实际执行与防作弊校验,适合训练小模型在真实代码仓库中定位问题、修改代码并验证结果。

重要

该模板仅支持一段式创建:蒸馏数据构建,不包含学生模型训练阶段。

Coding Agent 蒸馏模板的流水线包含以下步骤:

步骤

名称

说明

1

沙箱执行

为每条种子创建独立的远程沙箱并解压其 workspace,随后由编程 Agent 按任务描述修改代码,完整记录交互轨迹。

2

重放与测试验证

在全新沙箱中重放轨迹里的文件改动并执行种子指定的验证命令,同时进行防作弊校验(是否修改测试文件、用例是否全部跳过、环境错误是否被计为通过等),输出分数与结论。

3

构建 SFT 数据集

把通过验证的轨迹整理成 ShareGPT 格式的多轮对话训练样本。

操作步骤

  1. 登录PAI控制台,在左侧导航栏选择模型应用> 模型蒸馏(ModelDistill)。

  2. 单击新建任务,跳转到蒸馏模板页签,或者直接进入蒸馏模板页签。

  3. 选择Coding Agent 蒸馏,单击使用模板,进入新建蒸馏任务页面。如下配置关键参数,其他保持默认。

  4. 进行基础配置:

    • 任务名称:系统已自动填充。

    • 输出路径:指定一个有权限访问的OSS路径,如oss://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/coding-agent-distill/。

      说明

      请确保为每个蒸馏任务创建独立的输出目录,避免文件被覆盖。OSS Bucket需与PAI服务在同一地域。

  5. 单击下一步,进入蒸馏数据构建:

    • 教师模型:来源选择Token 服务,选择教师模型(如qwen3.8-max),裁判模型复用教师模型,不选择。

    • 数据集:选择一个有权限访问的OSS目录(注意:必须选择整个目录,不能仅选择 JSONL 文件)。可直接下载示例使用。

    • 蒸馏配置:已提供了默认配置,根据实际需要修改。重点关注以下参数:

      • coding_agent.harness.max_turns:单条种子的最大交互轮次,默认 150。需与 timeout 配套——每轮都要在沙箱里改代码、跑测试。

      • coding_agent.sandbox.endpoint:即时服务接入地址,需替换占位符 ${EAS_SANDBOX_ENDPOINT} 为实际地址。

      • coding_agent.sandbox.api_key:即时服务 API Token,需替换占位符 ${EAS_SANDBOX_API_KEY} 为实际 Token。

        说明

        即时服务:Coding Agent 蒸馏需要 即时服务提供沙箱执行环境。在 PAI 控制台左侧导航栏选择 模型在线服务(EAS),切到 即时服务页签,创建即时服务后使用公共模板或者自建模板,在模板详情页右上方单击SDK接入获取接入地址(endpoint)和 API Token,用于替换上方蒸馏配置中的 ${EAS_SANDBOX_ENDPOINT} 和 ${EAS_SANDBOX_API_KEY}。详情参见即时服务-快速入门。

    • 计算资源:资源类型选择通用计算,资源来源选择公共资源,在任务资源中选择合适的资源规格,如ecs.c6.large。

  6. 单击创建,然后在弹出的计费提醒中单击确定,页面将自动跳转至任务详情的基础配置页面,可在此跟踪任务状态。

配置说明

以下说明 Coding Agent 蒸馏模板的关键配置参数。基础配置和资源配置与通用蒸馏一致,此处仅列出本模板特有的参数差异。

基础配置

基础配置包含任务名称和输出路径两项。输出路径为任务全部产物的输出根目录,蒸馏数据集也写在该目录下,无需再单独指定数据集输出路径。

蒸馏数据构建

教师模型

Coding Agent 蒸馏模板需要配置以下多个教师模型:

序号

模型角色

说明

1

教师模型(必填)

同时用于 Coding Agent 的推理与 Harness,用于生成轨迹,建议选择代码能力强、支持长上下文与工具调用的模型。

2

裁判模型(可选)

用于判断 Coding Agent 轨迹的质量。留空则复用教师模型,建议单独指定。

教师模型来源支持 Token服务。

数据集

选择输入目录(注意:必须选择整个目录,不能仅选择 JSONL 文件),数据格式要求如下:

  • 种子文件:seeds.jsonl,一行一条种子任务,包含 id、instruction、workspace、test_cmd、test_files 字段。

  • 为每条种子准备一个 workspace 压缩包,压缩包按 seeds.jsonl 中的相对路径解析。

  • 输入必须选择整个目录,仅选择 seeds.jsonl 文件会导致压缩包不可用。

蒸馏配置

蒸馏配置以 YAML 格式提供,预置了算法团队的推荐默认值,可按需调整。下表列出部分建议关注的参数及其说明。

配置段

说明

dataset

  • input_path(默认 seeds.jsonl):输入种子文件路径(位于输入挂载目录下)。

  • output_path(默认 04_merged.jsonl):导出前的合并审计快照(含未通过验证的轨迹,供回溯与构造偏好对)。注意:此文件与 SFT 训练数据文件必须分开,指向同一个文件会把训练数据静默覆盖。

  • build_sft.output_path(默认 outputs/handoff/03_sft_records.jsonl):可训练的 ShareGPT 多轮 SFT 数据,由收尾的 build_sft 阶段产出。

backend

  • timeout(默认 1200.0):单次请求等待上限(秒)。需覆盖写满 max_tokens 的回答而非平均长度。

  • max_retries(默认 3):单次请求的网络级重试次数。

coding_agent.harness

编程 Agent 外壳,控制代理行为与沙箱交互。

  • type(默认 cc):代理外壳类型,需与 sandbox.template 的沙箱镜像配套。

  • model(默认 deepseek-v4-flash-0731):编程 Agent 使用的模型。

  • max_turns(默认 150):单条种子最多交互轮次。

  • timeout(默认 2400):单条种子的墙钟上限(秒),需与 max_turns 配套——每轮都要在沙箱里改代码、跑测试。

  • supervisor.hard_abort_elapsed_s(默认 1200):单条种子的硬中止阈值(秒)。当 Agent 执行超过此时间时强制终止。

coding_agent.sandbox

远程沙箱配置,每条种子一个隔离实例。

  • endpoint(必填):EAS 即时服务接入地址,格式为 https://api.<域名>。把占位符 ${EAS_SANDBOX_ENDPOINT} 替换为实际地址。

  • api_key(必填):即时服务 API Token,与教师模型凭证是两套。把占位符 ${EAS_SANDBOX_API_KEY} 替换为实际 Token。

  • template(默认 coding-agents-harness-cc):沙箱模板名,需已存在于你的即时服务下。

  • ttl(默认 3600):沙箱存活秒数,到点自动回收。

  • create_concurrency(默认 10):并发创建沙箱上限,放大批量时需与 execution.max_workers 一起调。

coding_agent.scoring

验证与评分机制,控制轨迹质量筛选。

  • require_real_test(默认 true):必须在沙箱内实际执行 test_cmd,不接受 LLM 判定分数。

  • require_test_pass(默认 true):test_cmd 退出码必须为 0,否则整条丢弃。

  • require_modification(默认 true):轨迹必须确实修改过文件,否则整条丢弃。

  • pass_threshold(默认 0.5):通过验证的最低分数阈值。

  • enable_judge(默认 true):是否启用 LLM 裁判模型辅助评分,裁判模型由 judge_model 指定。

  • false_positive_check(默认 true):联合防作弊校验,检查是否修改测试文件、用例是否全部跳过、环境错误是否被计为通过等。

coding_agent.execution

  • max_workers(默认 10):种子级并行度,控制同时执行的种子数量。