返回评测
代码生成 代码-编辑重构 未饱和 模态 · 代码 任务 · 代码生成

CanItEdit

评估 LLM 在给定现有代码基础上进行修改/编辑的能力,区别于从零生成

Cursor ·

考察能力

代码编辑 代码理解 变更推理 diff生成

构建信息

数据规模
105 editing tasks
评测方式
测试用例通过率
核心指标
Pass@1 (%)

模型效果排行

🥇 Claude 4 Opus
64.8%
🥈 GPT-5
61.2%
🥉 o3
58.7%

为什么重要

真实的编程工作中,从零写代码的场景远少于在已有代码上修改。CanItEdit 专门测试这一能力:给定代码和修改指令,模型能否正确编辑。它比 HumanEval/SWE-bench 更贴近 IDE 辅助编程的实际场景。

构建方式

  1. 设计 105 个代码编辑任务
  2. 每个任务包含:原始代码、编辑指令、测试用例
  3. 任务类型:bug修复、功能添加、重构、性能优化
  4. 评估指令描述和差量编辑能力

任务示例

原始代码:一个排序函数 编辑指令:“将排序算法从冒泡排序改为快速排序,保持接口不变” 验证:通过原有测试用例 + 性能测试

关键发现

  • 编辑任务比生成任务更难——需要理解上下文
  • 模型倾向于重写而非最小化编辑
  • 指令的精确度对表现影响很大

关联基准

不足与展望

  • 题库较小(105 题)
  • 不涉及跨文件编辑
  • 编辑粒度单一(缺乏大规模重构任务)
代码编辑 IDE diff 实用编程