一声棒喝,本不立文字
偏要著録,已是二义

X · 研究者一手

@karminski3 说目前使用 DeepSeek-V4 (pro/flash) 最需注意的问题:不算 bug,但很致命

@karminski3 给大家说下目前使用 DeepSeek-V4 (pro/flash) 的最需要注意的问题. 本身其实并不算 bug, 但是却很致命. 问…

二〇二六年五月八日 · 英文原文

DeepSeek-V4 (pro/flash) API 在 thinking mode 下进行 tool_call 时要求回传 reasoning_content 字段;若模型返回空字符串,一些 terminal coding agent 或 AI IDE 会过滤该字段,导致 HTTP 400 invalid_request_error。作者构建 POV 场景复现,空字符串出现概率为 59%。验证结果显示需在 context 中原样保留 reasoning_content: "",不能丢字段或传空对象。

给大家说一下目前使用 DeepSeek-V4 (pro/flash) 最需要注意的问题。它本身其实不算 bug,但影响很大。

问题大概是这样的:在请求 DeepSeek API,或者在 terminal coding agent(claude code、kimi cli 等)/ AI IDE(cursor 等)里使用 DeepSeek 时,偶尔会遇到报错:

HTTP 400 {"error":{"message":"The reasoning_content in the thinking mode must be passed back to the API.","type":"invalid_request_error","param":null,"code":"invalid_request_error"}}

这个报错的意思是,请求 DeepSeek API 时,必须在 tool_call 时回传 reasoning_content 这个字段。听起来没问题:既然开启了 thinking mode,那肯定要把 reasoning_content 作为 context 回传。

但问题来了:如果任务的这一步指定的 tool_call 过于显而易见,DeepSeek 返回的 reasoning_content 实际上会是空字符串。这就导致一些写代码的 IDE 直接过滤掉这个字段,不再回传,进而导致 DeepSeek API 报错,coding 任务或者 agent 就直接挂了。

DeepSeek-V4 API 会不会真的有时返回空字符串的 reasoning_content?答案是会。我专门构建了一个 POV 场景,复现概率高达 59%。

那么,当 reasoning_content 为空字符串时该怎么办?

经过验证,答案是必须原样传回去。也就是说,要在 context 中保留这个值为空字符串的字段。不能传空对象,也不能把字段丢掉。

那原样传回去不就行了?为什么还要说这么多?

关键在于,现有各种 terminal coding agent 或者 AI IDE 并不是默认这么做的。它们大多数的默认行为是直接把这个字段丢掉,导致 DeepSeek-V4 API 报错。

所以现在的解决方法是:要么等 IDE 官方修复,要么如果你用的 IDE 或 coding agent 是开源的,就自己 fork 一个版本改掉。

另外,如果你的 agent 项目要使用 DeepSeek-V4,也要注意这个坑,避免运行到一半直接报错退出。

还有,靠报错重试不太可行,因为在我这个 POV 场景里,DeepSeek-V4 有 59% 的概率会返回空字符串。如果重试次数是 3,偶尔也不够用。所以还是老老实实把问题解决掉比较好。

#deepseek #deepseekv4

译自 X · 研究者一手 · 录于 二〇二六年五月八日