实测 DeepSeek V4 Pro:为什么它不适合直接接入 Codex,却可以通过 Claude Code 跑起来?

📅 2026/7/6 7:43:12
实测 DeepSeek V4 Pro:为什么它不适合直接接入 Codex,却可以通过 Claude Code 跑起来?
实测 DeepSeek V4 Pro为什么它不适合直接接入 Codex却可以通过 Claude Code 跑起来最近很多人会把一个问题问得很简单DeepSeek V4 Pro 能写代码那它能不能直接作为 Codex 的后端模型如果只看“模型会不会写代码”答案很容易被误判。真正决定 Codex / Claude Code 这类 coding agent 能不能稳定工作的不只是模型能力而是客户端和后端之间的协议合同。我在 2026-07-05 对deepseek-v4-pro做了一轮实际 API 测试。结论是deepseek-v4-pro可以作为 OpenAI-compatible chat 模型使用它在本轮测试中没有跑通 Codex 更依赖的/v1/responses它可以通过 Claude Messages 兼容层给 Claude Code 使用所以问题不是“DeepSeek V4 Pro 不会写代码”而是“它当前更适合 chat completions不适合被直接当作 Codex Responses 模型”。本文会按工程排查方式展开而不是只给一句结论。1. 测试环境测试时间2026-07-05Base URLhttps://cn.crazyrouter.com/v1测试模型deepseek-v4-pro测试覆盖了三个入口GET /v1/models POST /v1/chat/completions POST /v1/responses POST /v1/messages这三个 endpoint 是理解本文的关键Endpoint主要面向可以简单理解为/v1/chat/completions普通 OpenAI-compatible 应用发 messages拿 assistant 回复/v1/responsesCodex / OpenAI agent workflow发 input items拿 response items / tool events/v1/messagesClaude Code / Anthropic SDK发 Claude Messages拿 content blocks / tool_use很多“模型兼容性问题”的根源就在于把这三条路径混成了一条。2./v1/models里能看到 DeepSeek V4 Pro但这不等于 Codex 可用先看模型列表。GET /v1/models返回 HTTP 200其中deepseek-v4-pro的关键信息如下{id:deepseek-v4-pro,object:model,owned_by:custom,supported_endpoint_types:[openai],public_endpoint_types:[openai]}这里最值得注意的是supported_endpoint_types: [openai] public_endpoint_types: [openai]这通常表示它可以作为 OpenAI-compatible 模型使用尤其是/v1/chat/completions这一类接口。但不能从这里直接推导出它完整支持 /v1/responses 它适合作为 Codex agent runtime 后端 它能稳定处理 Codex 的工具调用和续写状态这是很多接入问题的第一个误区模型列表里出现了不等于所有 agent 协议都支持。3. 实测结果chat completions 可用responses 失败messages 可跑工具闭环本轮结果如下测试项EndpointHTTP结果模型列表GET /v1/models200能看到deepseek-v4-proendpoint type 为openai普通聊天小 token 预算POST /v1/chat/completions200只返回DSfinish_reasonlength普通聊天正常 token 预算POST /v1/chat/completions200返回DS_V4_PRO_CHAT_OKCodex-style ResponsesPOST /v1/responses400返回convert_request_failedClaude Messages 文本POST /v1/messages200返回 Claude 风格 text content blockClaude Messages 工具调用POST /v1/messages200返回tool_use get_city_timezone({city:Beijing})Claude 工具结果续写POST /v1/messages200接受tool_result并返回最终文本这个结果很清楚DeepSeek V4 Pro 在线 DeepSeek V4 Pro chat completions 可用 DeepSeek V4 Pro responses 本轮不可用 DeepSeek V4 Pro messages 兼容层可用如果只看第一行和第二行很容易得出“它能用于 Codex”的错误结论。真正关键的是第三行/v1/responses失败。4. 一个容易被忽略的细节reasoning tokens 会吃掉可见输出预算我第一次跑 chat completions 时设置了很小的输出预算{model:deepseek-v4-pro,messages:[{role:user,content:Return exactly: DS_V4_PRO_CHAT_OK}],max_tokens:30}结果 HTTP 200但可见内容只有DS响应里显示finish_reason: length completion_tokens: 30 reasoning_tokens: 28也就是说30 个 completion tokens 里有 28 个被 reasoning 消耗了可见正文空间几乎没剩下。把max_tokens提高到 128 后返回正常DS_V4_PRO_CHAT_OK finish_reason: stop这说明在接入 DeepSeek V4 Pro 时不能只判断 HTTP 200还要记录finish_reasonmessage.contentusage.completion_tokensusage.completion_tokens_details.reasoning_tokens可见输出是否为空或被截断在 coding agent 场景里这个问题会更明显。因为 agent 需要输出工具调用、解释、patch 或下一步计划如果 token 预算太小表面上请求成功实际可见输出已经不可用。5. 为什么 Codex 不能直接按 chat completions 来理解Codex 不是一个普通聊天客户端。普通聊天客户端大概是用户问题 - 模型回复文本 - 展示给用户Codex 的工作方式更接近用户任务 - 规划 - 读文件 - 生成工具调用 - 执行命令或编辑文件 - 接收工具结果 - 继续推理 - 再调用工具 - 形成最终修改和总结也就是说Codex 需要的是一个agent loop。这个 loop 里模型输出不能只是普通文本还要包含客户端能理解的结构化事件。一个 Codex custom provider 可能会这样配置model_provider custom model deepseek-v4-pro [model_providers.custom] base_url https://your-router.example/v1 wire_api responses重点是wire_api responses这意味着 Codex 会按 Responses API 语义请求后端而不是普通 chat completions 语义。在 Responses 语义里客户端可能期待这些东西Codex 需要的能力为什么重要response output items区分文本、工具调用、reasoning 等输出片段function/tool call item让客户端知道该调用哪个工具、参数是什么tool result continuation工具执行完后把结果接回同一轮 agent loopreasoning state多轮任务中延续推理状态streaming events客户端按事件顺序更新状态非空最终输出避免 HTTP 200 但没有可用答案如果后端只会返回 chat completion{choices:[{message:{role:assistant,content:...}}]}那它不一定能满足 Codex 需要的 Responses item 结构。这就是为什么“DeepSeek V4 Pro 能写代码”和“DeepSeek V4 Pro 适合直接作为 Codex 后端”是两件事。6. 本轮/v1/responses为什么能说明问题本轮 Responses 测试请求类似{model:deepseek-v4-pro,input:Return exactly: DS_V4_PRO_RESPONSES_OK,max_output_tokens:128}返回结果HTTP: 400 Error code: convert_request_failed Error type: new_api_error Message: Invalid request.这个结果不能证明 DeepSeek V4 Pro “能力差”但可以证明一件事在本轮测试窗口里deepseek-v4-pro 不能被当作可直接工作的 /v1/responses 模型。所以如果你把它直接配置给 Codex并且 Codex 使用wire_api responses就很可能遇到协议转换失败、工具调用异常、流式事件不匹配等问题。7. 为什么 Claude Code 反而可以跑起来Claude Code 的入口通常不是/v1/responses而是 Claude Messages 形态POST /v1/messagesClaude Messages 的核心结构是 content blocks例如{role:assistant,content:[{type:text,text:hello}]}工具调用也是 content block{type:tool_use,id:call_xxx,name:get_city_timezone,input:{city:Beijing}}如果中转网关支持 Claude Messages 兼容层它可以做这样的转换Claude Code - POST /v1/messages - 网关把 Claude Messages 转成 OpenAI-compatible chat request - DeepSeek V4 Pro 输出文本或 tool_calls - 网关把结果转回 Claude content blocks - Claude Code 接收 text / tool_use / tool_result本轮实测里这条路径是跑通的。文本测试返回DS_V4_PRO_MESSAGES_OK工具调用测试返回{type:tool_use,id:call_00_85VnDZJN9knCdt3l4aX67165,name:get_city_timezone,input:{city:Beijing}}随后把工具结果传回{type:tool_result,tool_use_id:call_00_85VnDZJN9knCdt3l4aX67165,content:Asia/Shanghai}模型继续返回The timezone for Beijing is Asia/Shanghai.这说明 Claude Code 兼容层至少完成了一个基础工具闭环。8. 但这不代表 Claude Code 原生支持 DeepSeek这里要避免另一个误区Claude Code 能跑 DeepSeek V4 Pro不等于Claude Code 原生支持 DeepSeek V4 Pro更准确的说法是网关把 Claude Code 的 /v1/messages 请求转换成 DeepSeek V4 Pro 能处理的 OpenAI-compatible chat 请求 再把 DeepSeek 的输出转换回 Claude Code 能理解的 content blocks。这个兼容层需要处理很多细节Claude Code 需要DeepSeek / OpenAI-compatible 侧可能返回网关要做的事textblockmessage.content转成 Claude text blocktool_useblocktool_calls映射工具名、参数、tool idtool_resultblocktool role message还原成下一轮 chat 上下文stop_reasonfinish_reason映射end_turn/tool_use/max_tokensusagetoken usage转成 Claude Code 可记录字段streaming eventsdelta chunks转成 Claude SSE event所以 Claude Code 能跑依赖的是网关适配质量。只测一句hello没意义至少要测工具调用和工具结果续写。9. 三种接入方式应该怎么选方式一普通 API 调用推荐路径POST /v1/chat/completions model: deepseek-v4-pro适合代码解释单文件重构建议SQL / shell / regex 辅助API 文档问答普通聊天应用。注意给足max_tokens不要用太小的输出预算。方式二Claude Code 兼容层推荐路径Claude Code - /v1/messages - gateway - /v1/chat/completions - deepseek-v4-pro适合轻量代码 agent工具调用可控的任务有日志、fallback、重试机制的环境想用 Claude Code 客户端但后端测试 DeepSeek 的场景。上线前至少验证文本输出非空tool_use能正确产生tool_result能正确续写长上下文不会丢工具状态usage / cache 字段记录正常超时重试不会打乱 tool id。方式三直接接 Codex不建议直接这样做Codex - /v1/responses - deepseek-v4-pro除非你已经完整验证/v1/responses 可用 response output items 格式正确 tool call item 格式正确 tool result continuation 可用 streaming events 顺序正确 reasoning state 能延续 多轮仓库任务能完成本轮实测里/v1/responses返回 400所以不应直接把它当成 Codex Responses 模型。10. 如果你已经接入失败应该怎么排查建议按下面顺序排查。第一步先查模型列表curlhttps://cn.crazyrouter.com/v1/models\-HAuthorization: Bearer YOUR_API_KEY看两个字段supported_endpoint_types public_endpoint_types如果只看到openai不要默认它支持/v1/responses。第二步单独测 chat completionscurlhttps://cn.crazyrouter.com/v1/chat/completions\-HAuthorization: Bearer YOUR_API_KEY\-HContent-Type: application/json\-d{ model: deepseek-v4-pro, messages: [ { role: user, content: Return exactly: DS_V4_PRO_CHAT_OK } ], max_tokens: 128 }不要只看 HTTP 状态要看choices[0].message.content choices[0].finish_reason usage第三步单独测 responsescurlhttps://cn.crazyrouter.com/v1/responses\-HAuthorization: Bearer YOUR_API_KEY\-HContent-Type: application/json\-d{ model: deepseek-v4-pro, input: Return exactly: DS_V4_PRO_RESPONSES_OK, max_output_tokens: 128 }如果这里失败就不要直接上 Codex。第四步单独测 Claude Messages如果你走 Claude Code 兼容层要测文本请求 tool_use 请求 tool_result 续写只测文本不够。Claude Code 的核心价值就是工具闭环不测工具就无法证明兼容层可用。11. 最容易踩的 6 个坑坑典型表现正确处理把 OpenAI-compatible 当成 Responses-compatiblechat 可用Codex 失败分别测试/chat/completions和/responses只看 HTTP 200请求成功但正文为空检查 content、finish_reason、usagemax_tokens太小只返回几个字符给 reasoning 模型留足输出预算没测工具续写工具调用后断掉跑tool_use - tool_result - final answer混淆 Claude Code 和 Claude 模型以为 Claude Code 原生支持 DeepSeek明确中间有网关转换没有 fallback长任务中途失败做 retry、fallback、空输出检测12. 最终结论本轮测试支持一个比较明确的工程结论DeepSeek V4 Pro 可以用作 OpenAI-compatible chat 模型。 DeepSeek V4 Pro 可以通过 Claude Messages 兼容层给 Claude Code 使用。 DeepSeek V4 Pro 不适合在当前状态下直接作为 Codex Responses 模型。核心原因不是模型不会写代码而是协议层不匹配。Codex 需要的是/v1/responses语义下的 agent loop包括 output items、工具调用、工具结果续写、reasoning state 和流式事件。DeepSeek V4 Pro 在本轮实测中没有跑通/v1/responses。Claude Code 能跑是因为网关可以把/v1/messages转换成 OpenAI-compatible chat再把结果转回 Claude content blocks。本轮测试里文本、tool_use、tool_result续写都成功因此这条路径有实用价值。如果你要在生产环境里接入建议按下面的优先级普通 API优先走 /v1/chat/completions Claude Code走 /v1/messages 兼容层并测试工具闭环 Codex不要直接接除非 /v1/responses 完整验证通过原始长文和测试记录https://crazyrouter.com/blog/deepseek-v4-pro-codex-claude-code-compatibility-2026?utm_sourcecsdnutm_mediumarticleutm_campaigndeepseek_v4_pro_codex_claude_code_20260705utm_contentcsdn_deepseek-v4-pro-codex-claude-code_20260705__canonicalutm_termDeepSeek%20V4%20Pro%20Codex%20Claude%20Code