输出 token 上限回答被截断:DeepSeek Harness 中英报错、继续指令与三次恢复
「已达到输出 token 上限回答被截断」和 output token limit reached 是同一件事:这次生成到了上限。 先判断还能不能继续,再决定调上限还是拆任务。
三句报错先对上
中文界面、英文日志、连续截断提示,三句话指向同一类问题。
| 提示 | 出现位置 | 含义 |
|---|---|---|
| 已达到输出 token 上限回答被截断…发送「继续」 | 中文界面 | 本次生成到上限,可尝试续写 |
| output token limit reached | 英文日志/界面 | 同上,底层分类 |
| response still truncated after two continuations | 英文日志 | 连续两次继续仍被截断 |
三句话的差别在「还能不能继续」。 前两句只说明截断,第三句说明继续已经无效;处理方式从「点继续」变成「拆任务」。
不要把它们当成三个不同的故障。 同一类原因,只是提示的位置与语言不同;按同一套顺序排查即可。
截断的四个原因
输出被截断,原因不止「上限太小」。 四类原因对应不同处理。
- 单轮输出达到模型上限。 任务本身要写很长,超过模型允许的最大输出;调大配置也只能到模型上限。
- 上下文压缩挤掉了输出。 压缩后旧内容变短,继续指令接不上;表现是「继续了但不连贯」。
- 输出结构导致重复生成。 要求模型逐条展开、反复自检,输出被自身结构撑满;表现是同一段内容反复出现。
- 请求参数限制了长度。 会话或模型配置里的输出上限设得偏小;表现是「每次都在同一位置断」。
四类的判断顺序:先看断点是否固定,再看上下文是否被压缩,最后看输出结构。 固定断点偏参数,断点漂移偏任务本身。
「上限」是能力边界,不是故障。 模型能生成的长度有限,超过就必须拆;继续只是延长时间,不改变边界。
恢复一:发送继续
最简单的一步是继续,但它有前提。 前文必须完整保留在上下文里。
- 确认界面上仍有完整输出,没有被折叠或裁掉。
- 发送「继续」,不要重复原问题;重复会把上下文再撑大。
- 检查续写是否接得上:语气、编号、结构应连续。
- 如果续写重复了前文,说明上下文已不完整,改用拆分任务。
继续适合「只差一点」的情况。 差一段总结、差一个收尾,继续最省事;差半篇内容,继续往往接不上。
继续不是无限次。 连续两次仍截断,说明任务本身超出单轮能力,继续只会产生更多碎片。
恢复二:调大上限
输出上限可以调,但要知道天花板在哪。
- 找到模型或会话的输出上限配置;不同入口位置不同,以当前版本为准。
- 先确认模型支持的最大输出,配置超过模型能力没有意义。
- 小步调整,不要一次拉满;拉满会挤占上下文,反而更容易压缩。
- 调整后新开一个会话验证,旧会话可能仍用旧参数。
- 记录调整前后断点位置,确认是否真的改善。
调上限的收益有上限。 模型最大输出是硬边界,配置只能逼近,不能突破;任务超过边界时,调参无效。
调大输出会挤占上下文。 上下文窗口是共享的,输出占得多,历史就压缩得快;长任务要同时考虑两端。
恢复三:拆分任务
任务超出单轮能力时,拆分是唯一稳定的解法。 两种拆法最常用。
- 按结构拆: 先让模型出大纲与章节标题,再逐章生成;每次只要求一章,避免一次写完整篇。
- 按输入拆: 把长材料分成几段,每段单独处理,最后合并;适合总结、审阅类任务。
- 按阶段拆: 先收集信息,再写初稿,最后修订;每阶段单独一轮,输出压力分散。
- 合并时留接口: 每段输出带固定字段或编号,合并时不用重新理解结构。
拆分的代价是衔接成本。 拆得越碎,合并越费劲;按结构拆通常比按字数拆更好衔接。
拆分后不要再用继续。 每段都是独立任务,继续会让模型把两段混在一起。
两次连续截断怎么办
看到「两次继续仍截断」,说明继续策略已经失败。 这时应该换方法。
- 停止继续,保留已有输出。
- 判断任务是否需要完整长文;如果只是要结论,改问「用 500 字总结」。
- 需要完整长文时,按章节拆分,逐段生成。
- 每段生成后立刻保存,避免上下文压缩把前文吃掉。
- 最后单独做一次合并与校对。
两段式生成是折中方案。 先出结构,再补内容;结构占的输出少,内容可以分段补。
不要靠反复点继续碰运气。 每次继续都增加上下文压力,越点越容易压缩,最后连前文都找不到。
什么时候不是上限问题
有些「截断」看起来像上限,其实不是。 三种情况要排除。
- 流式连接中断。 输出突然停住且没有上限提示,多半是传输问题;看日志里的传输错误。
- 模型主动停止。 模型判断任务完成而提前结束,不是被截断;看输出是否有完整收尾。
- 上下文压缩触发。 压缩提示出现时,输出变短是副作用;先处理压缩,再谈上限。
判断方法是看提示与日志。 有上限提示才是上限问题;没有提示的截断,先查传输与压缩。
不要把三种问题都归到「上限」。 归错类,调参、继续都不会有效。
下一步
先看提示属于哪一句,再决定继续、调参还是拆分。 想看单条报错的修复,看《DeepSeek Harness output token limit reached》;想处理上下文压缩,看《上下文压缩失败怎么办》;想区分传输中断,看《本轮运行失败 transport failed》。
常见问题
回答截断后发「继续」接不上,是因为继续依赖已有输出仍保留在 DeepSeek Harness 的对话上下文里。如果上下文被压缩、输出被裁掉或被新的系统提示覆盖,模型就接不上;先确认完整输出还在,再发送继续。
DeepSeek Harness 的输出上限通常在模型或会话配置里,按模型能力设置。调大能减少截断,但受模型最大输出限制,也受上下文窗口约束;超过模型上限,调配置无效。
出现 response still truncated after two output token limit continuations,意思是连续两次「继续」后仍然被截断。常见于任务本身超出单轮输出能力,或输出结构导致模型反复生成;应拆分任务,而不是继续点继续。
中文界面提示「回答被截断」与英文日志 output token limit reached 是同一个问题。中文是界面提示,英文是底层错误分类;两者都表示生成达到上限,处理方式一致。
相关术语
- 输出 token 上限
- 输出 token 上限是单次生成允许的最大输出长度,超过后生成被截断,界面提示回答未完成。— DeepSeek Harness 官方文档
- 继续
- 继续是让模型在已有输出之后接着生成的指令,依赖前文仍在上下文中,不能恢复被裁掉的输出。— DeepSeek Harness 官方文档
- 上下文压缩
- 上下文压缩是为腾出窗口把历史内容摘要或裁掉的过程,压缩后旧输出可能不再完整,继续指令会更难接上。— DeepSeek Harness 官方文档
- 两段式生成
- 两段式生成是把一个长任务拆成两次请求,先出结构再补内容,用来绕开单轮输出上限。— DeepSeek Harness 官方文档
来源
- DeepSeek Harness 官方文档· deepseek-harness
- dsh CLI README· deepseek-ai
- deepseek-harness 仓库· deepseek-ai