为什么重要
真实的编程工作中,从零写代码的场景远少于在已有代码上修改。CanItEdit 专门测试这一能力:给定代码和修改指令,模型能否正确编辑。它比 HumanEval/SWE-bench 更贴近 IDE 辅助编程的实际场景。
构建方式
- 设计 105 个代码编辑任务
- 每个任务包含:原始代码、编辑指令、测试用例
- 任务类型:bug修复、功能添加、重构、性能优化
- 评估指令描述和差量编辑能力
任务示例
原始代码:一个排序函数 编辑指令:“将排序算法从冒泡排序改为快速排序,保持接口不变” 验证:通过原有测试用例 + 性能测试
关键发现
- 编辑任务比生成任务更难——需要理解上下文
- 模型倾向于重写而非最小化编辑
- 指令的精确度对表现影响很大
关联基准
- Aider Polyglot:多语言代码编辑
- SWE-bench:真实 GitHub Issue
- Copilot Arena:编程助手偏好
不足与展望
- 题库较小(105 题)
- 不涉及跨文件编辑
- 编辑粒度单一(缺乏大规模重构任务)