开发者评测指南

Gemini 4 Argon 编程测试

从公开成绩到可以验证的代码:先看证据与评测条件,再用四道编程题检查模型是否适合你的工作。

资料核验日期:

公开成绩衡量什么

Google 公布 DeepSWE v1.1 成绩为 77.9%,发布表还列出 FrontierSWE v2 为 55.0%、Terminal-Bench 4.0 为 57.4%。三个测试使用不同任务集,不能当成可互换的编程能力评分。

Argon 三个独立的 0—100% 成绩条:DeepSWE v1.1 77.9%、FrontierSWE v2 55.0%、Terminal-Bench 4.0 57.4%。
每条成绩只对应自己的评测,不构成模型排名或综合分。来源:Google 发布成绩表。 原始公开成绩表
Gemini 4 Argon · 2026 年 9—10 月发布资料中的公开成绩
评测指标公布成绩解读角度
DeepSWE v1.177.9%长流程仓库工程任务;需结合 agent 框架和尝试策略理解。
FrontierSWE v255.0%另一套工程任务;百分比不能与 DeepSWE 直接比较。
Terminal-Bench 4.057.4%终端操作任务;环境与工具权限会影响结果。

先比较条件,再比较模型

DeepSWE v1.1 中,Google 使用 mini-swe-agent 自测 Argon;方法说明引用 GPT 榜单与 Claude 系统卡,并选取已公布的最高思考档位。本文未确认框架和预算完全一致。

其他模型的公开记录 · 来源条件分别说明,不是本站同条件对测
模型来源/可比性
Gemini 3.8 Flash所引资料未公布. 所引成绩表没有 Gemini 3.8 Flash 对应结果;不能用 Flash Cyber 或其他版本代替。
GPT-6 AstraDeepSWE v1.1:74.1%,Google 引用榜单。未确认其框架与预算与 Argon 一致。
Claude Opus 5.5DeepSWE v1.1:74.2%,Google 引用系统卡。未确认其框架与预算与 Argon 一致。

历史公开记录不代表当前 API 的现场测量,也不能证明某个模型在所有编程工作流中占优。

复现与记录流程

每个模型每题先进行一次首轮尝试,固定提示词与断言;修复单独记录。记录精确模型 ID、日期、思考档位、工具权限、运行时及依赖版本、耗时、token 用量、退出码和原始输出;无法获取的字段标为未知。

五步流程:提示词、生成代码、执行、断言、记录证据。
本站绘制的评测流程图。预期输出是验收依据,实测输出必须来自真实执行。

四道可复现编程题

每题使用新会话,各模型保持相同提示词、工具权限、依赖版本和尝试预算。生成代码前先保存以下检查,在临时本地目录运行生成代码。

01 · TypeScript 并发任务池

待实测

模型输出与实测结果:暂无,尚未运行模型。下方检查为本站编写的测试夹具,不是模型输出。

提交给模型的提示词

实现 pool.ts,导出 async function pool<T>(tasks: Array<() => Promise<T>>, limit: number): Promise<PromiseSettledResult<T>[]>。任务惰性启动,同时最多运行 limit 个,结果保持输入顺序;promise 拒绝和同步抛错均转为 rejected 结果,不阻止其他任务。空输入返回 [];非正整数 limit 必须抛 RangeError,即使输入为空。无需依赖。只返回 pool.ts,不修改给定检查。

输入/起始文件

// Input: delays [30, 5, 15] ms; limit 2.
// Implementation file: pool.ts

测试前保存以下检查

// Save as pool.check.ts (Node 22+)
import assert from 'node:assert/strict';
import { pool } from './pool.ts';
let active = 0, peak = 0;
const tasks = [30, 5, 15].map((ms, i) => async () => {
 active++; peak = Math.max(peak, active);
 await new Promise(r => setTimeout(r, ms));
 active--; return i;
});
assert.deepEqual(await pool(tasks, 2), [0,1,2].map(value => ({status:'fulfilled', value})));
assert.equal(peak, 2);
const rejected = await pool([() => { throw new Error('sync'); }, () => Promise.reject('async'), async () => 7], 1);
assert.deepEqual(rejected.map(r => r.status), ['rejected','rejected','fulfilled']);
assert.deepEqual(rejected[2], {status:'fulfilled', value:7});
assert.deepEqual(await pool([], 2), []);
for (const limit of [0, -1, 1.5, NaN, Infinity]) {
 await assert.rejects(async () => pool([], limit), RangeError);
}
console.log('pool: all assertions passed');

本地执行命令

npx --yes --package tsx@4.21.0 tsx pool.check.ts

预期行为/验收条件

结果保持 [0, 1, 2],峰值并发数为 2,拒绝不影响后续任务。空输入和非法 limit 通过断言。预期末行:pool: all assertions passed。挂起超过 30 秒时停止运行并记录超时。

02 · React 搜索竞态修复

待实测

模型输出与实测结果:暂无,尚未运行模型。下方检查为本站编写的测试夹具,不是模型输出。

提交给模型的提示词

修复下方 useSearch.ts,保留 API useSearch(query, search),search(q) 返回 Promise<string[]>。只有最新 query 能更新状态;空白查询清空结果与错误;忽略过期成功和拒绝;当前拒绝时 error 设置为错误消息;卸载后阻止状态更新。search 引用稳定。返回包含 items 和 error 的对象,error 初始为 null。只返回 useSearch.ts,不修改检查。

输入/起始文件

// Save as useSearch.ts — intentionally broken starter
import { useEffect, useState } from 'react';
export function useSearch(query: string, search: (q: string) => Promise<string[]>) {
 const [items, setItems] = useState<string[]>([]);
 const [error, setError] = useState<string | null>(null);
 useEffect(() => { search(query).then(setItems).catch(e => setError(e.message)); }, [query, search]);
 return {items, error};
}

测试前保存以下检查

// Save as race.check.test.tsx in a fresh npm directory.
// @vitest-environment jsdom
import { afterEach, expect, test, vi } from 'vitest';
import { act, cleanup, renderHook } from '@testing-library/react';
import { useSearch } from './useSearch';
afterEach(cleanup);
const deferred = () => {
 let resolve!: (v:string[])=>void;
 let reject!: (e:Error)=>void;
 const promise = new Promise<string[]>((a,b)=>{resolve=a;reject=b});
 return {promise,resolve,reject};
};
test('latest request, blank query, rejection and unmount', async () => {
 const a=deferred(), b=deferred(), c=deferred(), d=deferred();
 const pending: Record<string, ReturnType<typeof deferred>> = {a,b,c,d};
 const search=vi.fn((q:string) => pending[q].promise);
 const {result, rerender, unmount}=renderHook(({q})=>useSearch(q,search), {initialProps:{q:'a'}});
 rerender({q:'b'});
 await act(async()=>b.resolve(['B']));
 await act(async()=>a.resolve(['A']));
 expect(result.current.items).toEqual(['B']);
 rerender({q:'c'}); rerender({q:'  '});
 await act(async()=>c.reject(new Error('stale')));
 expect(result.current).toEqual({items:[],error:null});
 expect(search).toHaveBeenCalledTimes(3);
 rerender({q:'d'});
 await act(async()=>d.reject(new Error('offline')));
 expect(result.current.error).toBe('offline');
 const e=deferred();
 const next=()=>e.promise;
 const h=renderHook(()=>useSearch('e',next));
 h.unmount(); await act(async()=>e.resolve(['late']));
 unmount();
});

本地执行命令

npm init -y
npm install --save-exact react@19.2.1 react-dom@19.2.1
npm install --save-dev --save-exact vitest@3.2.4 jsdom@26.1.0 @testing-library/react@16.3.0
npx vitest run race.check.test.tsx

预期行为/验收条件

b 先于 a 完成,只保留 B。发起 c 后清空查询,再拒绝 c,结果仍为空且 error 为 null;当前 d 拒绝时 error 为 offline。Vitest 显示一项测试通过。另需审查 effect 清理:仅卸载断言不能证明状态更新已被阻止。

03 · Python CSV 数据汇总

待实测

模型输出与实测结果:暂无,尚未运行模型。下方检查为本站编写的测试夹具,不是模型输出。

提交给模型的提示词

编写 Python 3.11+ 的 summarize.py,仅用标准库。从 stdin 读取 UTF-8 CSV:name,amount,currency。用 Decimal 按币种求和,去掉字段两端空格,币种转大写,只接受 USD/EUR。缺失或空白字段、不支持的币种、非法或非有限金额、小数超过两位的行跳过。支持姓名中的引号逗号。输出 JSON:totals(币种到金额的对象)和 skipped(整数),币种键排序、金额为两位小数字符串;空 CSV 输出空 totals 和 skipped 0。禁止 float。只返回 summarize.py。

输入/起始文件

name,amount,currency
"Doe, Jane",0.10,usd
Bob,0.20,USD
Eve,-1.00,EUR
X,NaN,USD
Y,2.345,USD
Z,10,GBP
Missing,,USD

测试前保存以下检查

# Save as csv_check.py next to summarize.py
import json, subprocess, sys
sample = 'name,amount,currency\n"Doe, Jane",0.10,usd\nBob,0.20,USD\nEve,-1.00,EUR\nX,NaN,USD\nY,2.345,USD\nZ,10,GBP\nMissing,,USD\n'
def run(data):
 p = subprocess.run([sys.executable, 'summarize.py'], input=data, text=True, capture_output=True, timeout=5, check=True)
 return json.loads(p.stdout)
assert run(sample) == {'totals': {'EUR':'-1.00', 'USD':'0.30'}, 'skipped':4}
assert run('name,amount,currency\n') == {'totals':{}, 'skipped':0}
assert run('name,amount,currency\nA,Infinity,USD\n') == {'totals':{}, 'skipped':1}
print('csv: all assertions passed')

本地执行命令

python csv_check.py

预期行为/验收条件

带引号的 Doe, Jane 解析为一个姓名。USD 0.10 + 0.20 精确得到 "0.30",EUR 合计 "-1.00",跳过 4 行。空表与 Infinity 检查通过。预期末行:csv: all assertions passed。

04 · 跨文件接口重构

待实测

模型输出与实测结果:暂无,尚未运行模型。下方检查为本站编写的测试夹具,不是模型输出。

提交给模型的提示词

重构下方三个 TypeScript 文件:内部 User 的 displayName 改为 firstName 和 lastName。在 user.ts 导出 getDisplayName(user): string,分别 trim 后以单空格拼接非空部分。更新 renderUser 与 toPublicUser,保持函数名、返回类型及包含 id 和 name 字段的公开对象。移除内部 displayName 引用。禁止 any、类型断言和新依赖。返回三个完整文件,不修改检查。

输入/起始文件

// user.ts
export type User = {id: string; displayName: string};
// view.ts
import type { User } from './user';
export const renderUser = (user: User): string => user.displayName;
// api.ts
import type { User } from './user';
export const toPublicUser = (user: User): {id: string; name: string} => ({id: user.id, name: user.displayName});

测试前保存以下检查

// Save as refactor.check.ts
import assert from 'node:assert/strict';
import { getDisplayName, type User } from './user';
import { renderUser } from './view';
import { toPublicUser } from './api';
const u: User = {id:'u1', firstName:' Ada ', lastName:' Lovelace '};
assert.equal(getDisplayName(u), 'Ada Lovelace');
assert.equal(renderUser(u), 'Ada Lovelace');
assert.deepEqual(toPublicUser(u), {id:'u1', name:'Ada Lovelace'});
assert.equal(getDisplayName({...u, firstName:' ', lastName:' Ng '}), 'Ng');
assert.equal(getDisplayName({...u, firstName:'', lastName:''}), '');
console.log('refactor: all assertions passed');

本地执行命令

npx --yes --package typescript@5.9.3 tsc --noEmit --strict --target ES2022 --module ESNext --moduleResolution bundler user.ts view.ts api.ts
npx --yes --package tsx@4.21.0 tsx refactor.check.ts

预期行为/验收条件

带首尾空格的 Ada / Lovelace 在两个调用方均输出 Ada Lovelace,API 保持 id="u1", name="Ada Lovelace"。单名和空姓名通过,严格类型检查通过。审查 diff,确认没有 any、类型断言和残留 displayName 引用。

代码与运行记录公开到哪一步?

Google 描述了 libgav1 Rust 优化案例:视频输出一致,相对之前的 Rust 移植版本速度提升 2.7 倍。报告未提供完整提示词、生成补丁与执行日志。因此本文链接该案例,不补造代码节选,也不称为本站实测。

如何使用这些证据

本站分析:先用自己仓库中的小任务评估。单次生成重点检查正确性和边界;调试保留失败回归测试;长流程任务审查完整 diff 和兼容性。公开成绩可作为试用依据,但不能替代验收。

开发者常见问题