微信扫码
添加专属顾问
我要投稿
DeepSeek V4 Pro与GPT-5.3 Codex High代码能力大比拼,实测结果揭示AI编程新趋势!核心内容: 1. 两大AI模型在算法题(LRU Cache)中的表现对比 2. 真实工程任务(Markdown CLI工具)的完成度评测 3. 测试方法论与模型迭代节奏的深度解析
本文测试结果仅供参考
这次测试选取了DeepSeek V4 Pro(通过 Claude Code 调用)、GPT-5.3 Codex High测试。评估模型为 GPT-5.5 thinking。
整个测试分成两轮。
第一轮是算法题,TypeScript 实现 LRU Cache。
在 LRU 这道题上:
第二轮是更接近真实工程的 Agent 任务,TypeScript 实现一个本地 Markdown 文章分析 CLI 工具。
这轮 Markdown CLI 任务:
由于昨晚deepseek推出API 2.5折,所以测试只花了1.4
从 GPT-5.3 Codex 到 GPT-5.4,再到 GPT-5.5,OpenAI 基本是以月更节奏在推前沿模型:2 月 24 日上线 GPT-5.3 Codex,3 月 5 日上线 GPT-5.4,4 月 23 日上线 GPT-5.5。 所以比较GPT-5.3 Codex high 和V4 pro是一个合理选择。
以下是详细过程:
第一道题是:
用 TypeScript 实现一个 LRU Cache。
要求:
1. get 和 put 都是 O(1)
2. 支持 capacity
3. capacity 为 0 时也要正确处理
4. 写出完整代码
5. 给出 5 个测试用例
这道题不算特别难,很适合筛模型。
因为弱模型很容易在这些地方翻车:
这道题的关键不只是会不会写 LRU,而是能不能把边界写稳。
DeepSeek V4 Pro 第一版直接使用了标准方案:
Map 加双向链表。
这是语言无关的经典 LRU 实现方式。
它的结构大致是:
class ListNode {
key: number;
val: number;
prev: ListNode | null = null;
next: ListNode | null = null;
}
class LRUCache {
private capacity: number;
private map = new Map<number, ListNode>();
private head: ListNode;
private tail: ListNode;
}
get 时从 Map 找节点,然后移动到链表头部。
put 时如果 key 已存在,就更新值并移动到头部;如果超容量,就淘汰 tail 前面的最久未使用节点。
它还处理了 capacity 为 0、capacity 为 1、更新已有 key、LeetCode 经典用例等测试。
第一版评分是:
8.2 分。
优点很明确:
但问题也有:
不过总体看,DeepSeek V4 Pro 第一反应很标准。
它没有走捷径,而是直接给出面试和算法题里最正统的答案。
后续继续追问,要求它升级成工程版本:
DeepSeek V4 Pro 完成得不错。
它改成了泛型版本:
export class LRUCache<K, V>
然后补了:
这一版评分提升到:
8.7 分。
但它也暴露了典型问题:
为了创建哨兵节点,它用了:
null as unknown as K
这能跑,但类型建模不够干净。
后来继续追问,它把节点拆成了两类:
class LinkEntry {
prev: LinkEntry | null = null;
next: LinkEntry | null = null;
}
class DataEntry<K, V> extends LinkEntry {
constructor(public key: K, public val: V) {
super();
}
}
这样哨兵节点只负责链表指针,真实数据节点才有 key 和 value。
这个设计更符合 TypeScript 类型系统。
继续追问后,它还补了 get 和 tryGet 的 API 设计。
因为 get 返回 undefined 时,如果缓存值本身就是 undefined,就无法区分命中和未命中。
DeepSeek 的做法是:
这个设计比较工程化,既保留易用性,也解决了类型歧义。
最后,DeepSeek V4 Pro 在 LRU 多轮测试里的最终表现大概是:
9.0 分。
它的特点是:
第一响应标准,后续能持续工程化。
但也不是没有问题。
它曾经写过一个伪测试,声称测试了淘汰节点的 prev 和 next 被置空,但公开 API 根本拿不到内部节点,所以这个测试实际上只能证明 key 被淘汰,不能证明指针被清理。
被指出后,它删掉了这个伪测试,并把压力测试名称从不退化 O(1)改成批量读写下的 LRU 淘汰正确性。
这说明它能修,但不一定一开始就主动全局自查。
5.3第一版也用了 Map 加双向链表。
第一版大致结构是:
class ListNode<K, V> {
key: K;
value: V;
prev: ListNode<K, V> | null = null;
next: ListNode<K, V> | null = null;
}
测试覆盖:
第一版评分:
7.8 分。
它的问题主要是:
追问后,5.3改成了 circular sentinel 设计:
class LinkNode {
prev: LinkNode;
next: LinkNode;
constructor() {
this.prev = this;
this.next = this;
}
}
真实数据节点继承 LinkNode:
class DataNode<K, V> extends LinkNode {
constructor(
public key: K,
public value: V,
) {
super();
}
}
这个设计不错。
它去掉了 null as unknown,也做了 capacity 校验,并把 get 改成:
type GetResult<V> = { hit: true; value: V } | { hit: false };
还补了 Vitest 测试:
这一版评分:
8.6 分。
它已经是工程版合格偏强。
但相比 DeepSeek 它还有差距:
LRU 题能测数据结构、边界、类型设计和测试意识。
但它不能充分测试 Agent 能力。
真实代码 Agent 要做的不是写一个函数,而是:
所以第二轮换成了一个更真实的工程题:
实现一个本地 Markdown 文章分析 CLI,叫 md-inspector。
它要递归扫描目录下所有 Markdown 文件,并输出文章质量报告。
需要统计:
- 文件路径
- 第一个一级标题
- 字数
- 链接数量
- 图片数量
- fenced code block 数量
- 是否包含摘要
- 标题是否过长
还要处理:
- 空目录
- 不存在目录
- 没有一级标题
- 多个一级标题
- 图片不能算普通链接
- 代码块里的链接和图片不能计数
- Windows 和 macOS/Linux 路径兼容
- 文件读取失败不能让程序崩溃,要进入 warnings
工程要求包括:
- TypeScript
- Node 内置模块
- 合理拆分文件
- 至少 8 个 Vitest 测试
- 说明如何运行
- 说明如何验证
- 列出需求假设
- 最后自我审查
这个题比 LRU 更能测真实 Agent 能力。
因为它不是单点算法,而是一个小工程闭环。
在 Markdown CLI 任务中,表现最强的是 GPT-5.3 Codex High。
它的最终评分是:
8.7 分。
它先列出了假设:
然后给出实现计划:
项目结构也比较清楚:
package.json
tsconfig.json
vitest.config.ts
src/index.ts
src/file-scanner.ts
src/markdown-analyzer.ts
src/path-utils.ts
src/report.ts
src/types.ts
tests/report.test.ts
它的测试有 10 个,覆盖:
实测结果:
这几个点很关键。
尤其是 tsc 通过和不存在目录进入 JSON warnings。
这说明它不是只写了看起来像样的代码,而是更接近真实工程交付。
扣分点也有:
但总体看,GPT-5.3 Codex High 是这轮最完整的代码 Agent。
它不只是写功能,还完成了:假设声明、实现计划、模块拆分、测试、类型检查、运行验证、自我审查。
DeepSeek V4 Pro 在 Markdown CLI 任务里也不错。
最终评分:
8.0 分。
它的项目结构合理:
md-inspector/
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── src/
│ ├── index.ts
│ ├── types.ts
│ ├── scanner.ts
│ ├── parser.ts
│ ├── analyzer.ts
│ └── reporter.ts
└── tests/
├── index.test.ts
└── fixtures/
它有 14 个测试,覆盖:
它也给出了运行方式:
npm install
npx tsx src/index.ts <目标目录>
npm test
自我审查也比较具体,列出了:
这些说明它有交付意识。
但 DeepSeek 输给 Codex 的地方也比较明确。
第一,TypeScript 工程没收好。
npm test 通过,但 npx tsc --noEmit 失败,因为缺少 @types/node,导致 node:fs/promises、process 等类型无法识别。
对 TypeScript CLI 来说,这是明显扣分项。
第二,不存在目录的处理不完全符合题目。
题目要求错误进入 warnings。
但 DeepSeek 的实现是直接 stderr 加 exit,不是输出 JSON report 里的 warning。
第三,扫描阶段失败没有充分局部容错。
它处理了单文件 readFile 失败,但 readdir 这类扫描阶段异常可能导致整体失败。
第四,CLI 层测试不足。
更多测试集中在模块内部,没有充分验证真实命令行 stdout、exit code、参数缺失、不存在目录等行为。
所以 DeepSeek V4 Pro 这轮像是:
能写出可用初版项目,但工程收尾和验收不够完整。
如果它修掉 tsc 和错误处理语义,评分可以接近 8.7。
这轮比 LRU 更能说明 Agent 能力。
因为它考察的是完整链路:
GPT-5.3 Codex High 赢在工程闭环。
DeepSeek V4 Pro 赢在代码组织和测试覆盖,但输在 tsc 和错误语义。
GPT-5.3 Codex High > DeepSeek V4 Pro,但差距不大。
不足:
测到的主要是工程代码生成能力,还不是真正完整的 Agent 能力。Markdown CLI 测的是小型工程交付能力, GPT-5.3 Codex High 在这个小型 TypeScript CLI 工程交付任务中强于DeepSeek V4 Pro ,不能直接扩大成所有 Agent 场景。
还没充分测试:
--end--
最后记得⭐️我,每天都在更新:如果觉得文章还不错的话可以点赞转发推荐评论
/...@作者:你说的完全正确(YAR师)
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-04-26
如何给 Claude 打造「完美记忆」:完整指南
2026-04-26
给 Hermes 装上显微镜:Agent 执行全知道
2026-04-26
超实用!连夜实测DeepSeek-V4,我发现它唯一的硬伤是“审美”
2026-04-26
「双线实测」Qwen 3.6-Plus,Agentic Coding 已经这么能「扛活儿」了?
2026-04-25
RAG还有救么?DeepSeek V4都100万上下文了
2026-04-25
Image2 + MiniMax CLI,一句话到成片。拆解 MiniMax CLI 的Agent 设计哲学
2026-04-25
关于DeepSeek-V4,普通人可以知道的6件事
2026-04-24
OpenAI GPT-5.5 即将上线 Microsoft Foundry(国际版)
2026-04-15
2026-01-26
2026-03-31
2026-03-13
2026-02-14
2026-02-03
2026-02-03
2026-02-03
2026-03-17
2026-02-09
2026-04-26
2026-04-22
2026-04-18
2026-04-13
2026-04-12
2026-04-07
2026-04-01
2026-03-31