Coding Agent 能力测试 · 固定模型

结果汇总

同一个测试集、同一个模型,只换 harness。机器断言判硬条件(能否交付、是否自包含), LLM judge 按证据状态给分;同一份分数在「测试结果展示」页可以看到对应的产物与判据。

固定模型 deepseek-v4.1-flash-1017 Judge qwen3.8-max 测试集 1 个 case 样本 3 个 agent × 1 case 断言通过 3/3 批次 set-02

Claude Code

全项通过
7.93 / 10
代码质量8.4
功能完整8.4
合规自包含8.4
工程闭环5.9
耗时
9m 12s
Token
495,523 in / 66,692 out
模型
deepseek-v4.1-flash-1017
运行
正常结束

代码质量高、功能完整度优秀,单文件自包含合规,但缺乏针对验收清单的可视化自查证据限制了工程闭环评分。

Codex CLI

全项通过
7.93 / 10
代码质量8.4
功能完整8.4
合规自包含8.4
工程闭环5.9
耗时
5m 31s
Token
274,835 in / 38,944 out
模型
deepseek-v4.1-flash-1017
运行
正常结束

高质量的单文件Canvas动画实现,鹈鹕与自行车形态细节丰富、IK腿部动画与背景滚动联动流畅,完全自包含且即时播放;唯一不足是无证据表明agent进行了视觉层面的自检闭环。

Qoder CLI

全项通过
7.93 / 10
代码质量8.4
功能完整8.4
合规自包含8.4
工程闭环5.9
耗时
6m 2s
Token
311,623 in / 43,643 out
模型
deepseek-v4.1-flash-1017
运行
正常结束

代码结构清晰、功能完备、严格自包含,六项验收清单均有充分代码证据支撑,但因缺乏针对业务需求的自动化自检证据,W维度被封顶至5.9。

总评

#Agent鹈鹕骑自行车循环动画均分断言总耗时Token
1Claude Code7.937.931/19m 12s495,523 in / 66,692 out
2Codex CLI7.937.931/15m 31s274,835 in / 38,944 out
3Qoder CLI7.937.931/16m 2s311,623 in / 43,643 out

本轮结论

维度分析

代码质量 (权重 37.5%)

条形长度为该 agent 在本维度的得分;右侧标签是 judge 给出的最高证据状态,分数已被该状态封顶。

Claude Code
8.4wired
Codex CLI
8.4wired
Qoder CLI
8.4wired
Claude Code · 8.4 分 · 鹈鹕骑自行车循环动画

代码结构清晰,按背景、自行车、鹈鹕、特效分块组织(注释分隔线),使用 Path2D 缓存 bodyPath/wingPath/headPath 避免重复解析路径字符串,IK 解算 solveKnee() 用纯数学无 DOM 操作。每帧通过 ctx.clearRect 后重绘 Canvas,未逐帧重建 DOM。requestAnimationFrame 驱动 tick 函数被正确接线调用。devicePixelRatio 适配和 CSS aspect-ratio 保证高分屏兼容。drawFrameAt 在 rAF 前手动调用一次确保首帧渲染。所有绘制函数均被 drawRider/drawFrameAt 调用链 wired。

Codex CLI · 8.4 分 · 鹈鹕骑自行车循环动画

代码结构清晰,使用IIFE封装('use strict'),绘图函数职责分离(drawSky/drawRoad/drawWheel/drawBody等),无死代码或调试残留。性能方面:逐帧clearRect+重绘是Canvas标准做法,未重建DOM;几何数据(bushTile/pebbles/clouds)提取为常量避免每帧分配;fitCanvas()通过window.addEventListener('resize', fitCanvas)接线且限制dpr<=2防止过度渲染。兼容性良好,仅使用ctx.ellipse等现代API。所有函数均被drawScene调用链wired。

Qoder CLI · 8.4 分 · 鹈鹕骑自行车循环动画

单 IIFE 封装,常量集中声明(BB, CRANK_R, HIP, L1, L2),render(t) 仅通过 setAttribute 更新 transform/d/x2/y2,无 DOM 重建;makeSpokes 初始化调用一次后不再执行;requestAnimationFrame(loop) 驱动循环。轻微扣分:每帧对 clouds.forEach 做字符串拼接+多次 setAttribute,可合并为单次 transform,但性能影响极小。兼容所有现代浏览器。

功能完整 (权重 37.5%)

条形长度为该 agent 在本维度的得分;右侧标签是 judge 给出的最高证据状态,分数已被该状态封顶。

Claude Code
8.4wired
Codex CLI
8.4wired
Qoder CLI
8.4wired
Claude Code · 8.4 分 · 鹈鹕骑自行车循环动画

验收清单逐条对照:1.鹈鹕形态 - drawPelican(bob) 中 bodyPath(身体)、billGradient/upper mandible(长喙)、pouchGradient(喉囊)、wingPath(翅膀/羽毛)、eye ellipse(眼睛)、drawLeg+drawFoot(腿脚) 全部 present 且被 drawRider wired;2.自行车 - drawWheel 含 16 根辐条 for 循环、drawFrame 含三角车架(rear triangle + main triangle 多段 drawTube)、drawHandlebar(车把)、drawSaddle(座垫)、drawPedal(脚踏),全部 wired;3.骑行动作 - crankAngle = 0.63 + t * CADENCE, wheelAngle = 0.28 + t * WHEEL_SPEED 同参数 t 驱动,nearPedal/farPedal 由 crankAngle 计算,drawLeg 的 ankle 绑定 pedal 位置,solveKnee 做 IK 联动,节奏一致;4.场景 - drawSky+drawLandscape(天空远景)、drawRoad(地面道路)、drawTrees/drawClouds 用 GROUND_SPEED 偏移实现背景滚动前进感;5.循环 - 所有运动量基于连续时间 t 的三角函数或模运算((x % period + period) % period),无跳帧复位,drawFrameAt(0) 保证首帧完整;6.构图 - canvas 1280x720,主体坐标 x:416-943 y:163-589 均在视口内。

Codex CLI · 8.4 分 · 鹈鹕骑自行车循环动画

验收清单1-6逐条对照:1(鹈鹕形态)covered-drawNeckAndHead含长喙(bezierCurveTo 983,280)、喉囊(pouchGradient #f9c655)、眼睛(arc 812,239)、drawWing羽毛线、drawTail尾羽、drawLeg可见腿脚;2(自行车)covered-drawWheel含16根辐条(for i<16)、drawFrame三角车架(strokeTube连接rear/bb/seatJoint/headJoint)、车把(bezierCurveTo 854,351)、座垫(fillStyle #4b3329)、drawPedal脚踏;3(骑行动作)covered-wheelAngle=pedalAngle*1.35联动、solveKnee IK使腿部随踏板圆周运动周期蹬踏;4(场景)covered-drawSky渐变+太阳、drawRoad地面+虚线滚动(mod(t*355,220))、drawSpeedMarks前进感;5(循环)covered-所有动画基于mod()和sin/cos连续函数无跳帧、drawScene(0)保证首帧完整;6(构图)covered-canvas固定1280x720、主体坐标范围x:477-998 y:180-628均在视口内。证据状态wired因为函数全部被animate->drawScene调用。

Qoder CLI · 8.4 分 · 鹈鹕骑自行车循环动画

验收清单逐条核查均有对应代码支撑:1-鹈鹕形态含身体(#pelican path fill=#fbf6ea)、长喙(path d='M 726 177...')、喉囊(path d='M 727 201...')、翅膀(#wing)、眼睛(cx=722 cy=186)、腿脚(#nearLegCasing/#farLegCasing/#nearFoot/#farFoot);2-自行车含前后轮(#rearWheel/#frontWheel 各含辐条 g#rearSpokes/g#frontSpokes)、三角车架(5条path stroke=#d8544b)、车把(path d='M 690 392...')、座垫(path d='M 442 394...')、脚踏(#nearPedal/#farPedal);3-骑行动作由 pedalAt(theta) 计算曲柄位置,solveKnee() IK 解算腿部联动,车轮旋转 spin=(t*343.77) 与蹬踏 theta=t*2.4 同步驱动;4-场景含天空(linearGradient#sky)、地面(rect y=612 fill=url(#roadGrad))、远景山丘(#hills)、前进感由 roadDashes/tufts/clouds 位移实现;5-render(0) 在 rAF 前调用确保首帧完整,theta=t*2.4 连续递增无跳帧复位;6-viewBox='0 0 1280 720' + preserveAspectRatio='xMidYMid meet' 保证适配。扣一分因为验收清单未见自动化逐条断言证据。

合规自包含 (权重 6.2%)

条形长度为该 agent 在本维度的得分;右侧标签是 judge 给出的最高证据状态,分数已被该状态封顶。

Claude Code
8.4wired
Codex CLI
8.4wired
Qoder CLI
8.4wired
Claude Code · 8.4 分 · 鹈鹕骑自行车循环动画

单文件 index.html 自包含,机器断言确认无外部资源引用(ok:true)、无网络请求 API(ok:true)。全部图形由 Canvas 2D API 本地绘制,零外链零 fetch。页面加载时 IIFE 立即执行,末尾 drawFrameAt(0) + requestAnimationFrame(tick) 保证打开即播放,无需任何交互触发。

Codex CLI · 8.4 分 · 鹈鹕骑自行车循环动画

单文件index.html自包含,机器断言确认'无外部资源引用'(ok:true)、'无网络请求API'(ok:true)。零外链(zero <link>/<script src>/fetch/XMLHttpRequest)。页面打开即播放:末尾drawScene(0)立即渲染首帧,随后requestAnimationFrame(animate)启动循环,无需任何用户交互。所有图形由Canvas API本地绘制。

Qoder CLI · 8.4 分 · 鹈鹕骑自行车循环动画

单文件 index.html,机器断言确认无外部资源引用(ok:true)、无网络请求API(ok:true);所有图形由 SVG 元素+JS 绘制;<script>位于</body>前,IIFE 立即执行 render(0)+requestAnimationFrame(loop),打开即播放。无任何违反项。

工程闭环 (权重 18.8%)

条形长度为该 agent 在本维度的得分;右侧标签是 judge 给出的最高证据状态,分数已被该状态封顶。

Claude Code
5.9unobserved
Codex CLI
5.9unobserved
Qoder CLI
5.9unobserved
Claude Code · 5.9 分 · 鹈鹕骑自行车循环动画

会话轨迹显示 agent 调用了 7 次 Bash 和 1 次 Write,机器断言结果 pass:true 表明运行过自动化检查脚本(验证文件存在、体积、HTML 结构、无外链、Canvas 使用、rAF 机制、无网络请求)。但未见 agent 读取自身写出的 index.html 内容进行逻辑审查的证据,未见针对验收清单 1-6 条逐条自查的运行记录或修复提交(Write 仅 1 次说明一次性写入后未修改)。任务要求'对照验收清单自查一遍后立即结束',断言仅覆盖工程约束而非视觉验收项,因此自检证据不足以证明验收清单被 exercised。

Codex CLI · 5.9 分 · 鹈鹕骑自行车循环动画

从会话轨迹看,agent执行了12次Bash调用并产出31909字节/1005行代码,机器断言全部pass(7/7 ok:true),但断言仅为静态检查(文件存在/体积合理/HTML完整/无外链/有Canvas/有rAF/无网络API),未发现agent读取自己写出的文件内容进行逻辑审查、运行可视化验证、或修复发现的问题的证据。任务指令要求'对照验收清单自查一遍后立即结束',但轨迹中无可观察的自查行为(如grep关键元素、运行断言验证业务逻辑)。证据不足以证明工程闭环,按unobserved封顶5.9。

Qoder CLI · 5.9 分 · 鹈鹕骑自行车循环动画

工具调用轨迹显示 Write×1 + Edit×1 + Bash×3,机器断言全部 pass,但断言仅检查文件存在性/体积/HTML结构/无外链/含SVG和动画机制等结构性指标,未针对验收清单6条功能要求编写或运行任何断言。Edit×1 表明有一次修改,但无日志或 diff 证明是针对自查发现问题的修复。无 agent 读取产物并逐条对照验收清单自检的证据,因此判 unobserved,分数封顶 5.9。

口径与边界