ProgramDistill:将网页应用交互转化为可验证 SWE 任务的基准 · 干货攻略
- 链接: https://x.com/_akhaliq/status/2103952916545761536
- 分类: x-tips
- 来源: X @_akhaliq
- 作者: Jay
- 更新: 2026-09-29
- 仓库: huggingface.co/datasets/microsoft/ProgramDistill
这是什么
ProgramDistill 是微软研究院(Microsoft Research Montréal)与韩国科学技术院(KAIST)于 2026 年 9 月发布的代码智能基准。它的核心思路不同于传统 SWE-bench——不依赖 GitHub Issue 或人工撰写的任务描述,而是让 AI Agent 通过与一个功能完整的参考应用交互,自行推断出缺失的功能,再在另一个不完整的应用中将行为恢复出来。
换句话说:参考应用本身就是规格说明书,也是验证器。Agent 不能读源码,只能观察行为、猜测实现、修复代码,最后通过重放浏览器轨迹来评分。
为什么值得关注
传统代码 Agent 评测有两个硬伤: 1. Issue 描述往往已包含解决思路,Agent 只需执行而非真正理解; 2. 缺少真实状态依赖——真实开发中,一个功能往往依赖前置状态(先建 Board 才能建 Card)。
ProgramDistill 解决了这两个问题。它通过 mine-craft-patch 三阶段自动流水线 构建任务:
- Mine:Mining Agent 探索应用,记录可重放的浏览器轨迹(鼠标点击、表单填写等);
- Craft:Crafting Agent 移除被选中行为的源码实现,同时通过构建/重放检查确保前置条件仍然有效、目标行为确实失败、黄金补丁能恢复它;
- Patch:Coding Agent 在无法访问源码的情况下,与参考应用交互来修复当前应用。
每一段轨迹都是可执行的行为验证器,轨迹本身记录了浏览器动作、预期成功信号和可选的前置依赖链接。由于轨迹可以重放、信号可以自动检查,验证无需 LLM 介入。
核验过程
读过的官方来源:
1. Microsoft Debug-Gym 官方博客 (microsoft.github.io/debug-gym/blog/2026/09/programdistill) — 核心方法论、mine-craft-patch 流程图、完整数字
2. arXiv 论文摘要 (arxiv.org/abs/2609.18805) — 作者信息、方法概述、关键数字
3. HuggingFace 数据集页 (huggingface.co/datasets/microsoft/ProgramDistill) — 数据集结构、许可证(MIT)、任务数量
交叉验证结论:
- GPT-6 Astra 49.2%、Claude Opus 5 28.8% — arXiv 摘要原文与独立报道(AIToolsRecap)一致 ✅
- 4,063 tasks / 26 apps / 1,975 behaviors — 三处来源(博客、HF、arXiv)数字完全一致 ✅
- 深度 1→8 性能曲线(100%/96% → 64%/32%)— arXiv 摘要与博客一致 ✅
- GitHub 代码仓库 microsoft/ProgramDistill 返回 404,实际发布形式为 HuggingFace 数据集(huggingface.co/datasets/microsoft/ProgramDistill)✅
- 原始帖子称"Microsoft Research 开源",与实际情况(HuggingFace 数据集 + 非开源流水线)有偏差,本攻略以实际发布形式为准 ✅
无法核验(原帖主张,未严格核验): - "browser-as-harness 思想可迁移到其他 agent 数据生成" — 论文中有相关讨论,但无独立大规模复现数据
上手步骤
安装 HuggingFace 数据集
# 安装 huggingface_hub 工具
hf download microsoft/ProgramDistill \
--repo-type dataset \
--include "tasks/partial-reconstruction-subset/" \
--include "README.md" \
--include "pyproject.toml" \
--include "tasks/README.md" \
--local-dir ProgramDistill-subset
cd ProgramDistill-subset
find tasks/partial-reconstruction-subset -type f -name "*.sh" -exec chmod +x {} +
数据集结构
每个任务包含以下文件:
| 文件 | 内容 |
|---|---|
README.md |
数据集描述、安装说明、评测指南 |
pyproject.toml |
Solver Agent 共享 Python 依赖 |
tasks/ |
基准任务集合,含构建配方、Solver Agent、参考解决方案、浏览器轨迹和验证器 |
任务类型
ProgramDistill 包含两类任务:
原子任务(Atomic):只移除一个行为,前置条件完整保留。共 2,862 个。
累积任务(Cumulative):接受多个沿前置链的 Mask,要求 Agent 依次恢复多个相关行为。共 1,201 个。
部分应用重建子集(ProgramDistill-300)
公开的 300 个任务子集,覆盖深度 1–8,用于模型对比评测。GPT-6 Astra 在深度 1 达到 100%,到深度 8 降至 64%——说明即便是最强 Agent,在多依赖场景下仍有显著能力缺口。
全量重建任务
12 个全量重建任务,含 590 个原子工作流、413 个累积端点和 1,541 个累积重放阶段。GPT-6 Astra 达 49.2%,Claude Opus 5 达 28.8%(累积工作流下全量应用重建)。
坑与适用边界
1. 流水线未开源 ProgramDistill 的挖掘、任务生成和编排流水线未公开,仅发布打包好的基准和仪表盘。若你想重现任务生成过程,需要自行实现 mine-craft-patch 逻辑。
2. 参考应用只能观察,不能读源码 这模拟了真实开发中"看成品猜实现"的场景。但这也意味着 Agent 必须有强大的行为推理能力,而非简单的代码匹配——对 Agent 架构要求更高。
3. 性能数字要看清任务类型 - 全量应用重建(Full-app reconstruction):累积工作流下,GPT-6 Astra 49.2%,Claude Opus 5 28.8% - 部分应用重建(Partial reconstruction):深度 1 时 Astra 100%、Opus 5 96%;深度 8 时跌至 64%、32% - 不同评测设置数字差距极大,引用时务必注明是哪类任务
4. 深度曲线是最重要的发现 单一行为修复几乎被当前最强模型解决(深度 1 → 100%/96%),但多依赖行为链修复急剧下降。这与真实开发场景(功能互相依赖)高度吻合,是当前 Agent 能力的真实瓶颈。
5. MIT 许可证仅覆盖基准工件 包含的应用和资产受其上游许可证约束,使用前请确认各应用的许可条件。
一句话结论
ProgramDistill 用"浏览器即规格说明书"的方式重新定义了代码 Agent 评测——即使最强模型在深度依赖场景下仍有一半以上任务失败,是检验 Agent 真实多步协作能力的最佳基准之一。