使用 OpenClaw 和 DeepSeek 遇到的定时任务问题
OpenClaw 的定时任务很好用。但是几个月以来,总会时不时地遇到定时任务的 AI 接口请求超时的情况,出现类似的报错信息:
⚠️ Cron job "会员日折扣提醒" failed: The model did not produce a response before the model idle timeout. Please try again, or increase
models.providers.<id>.timeoutSecondsfor slow local or self-hosted providers. Ifagents.defaults.timeoutSecondsor a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.
或者:
⚠️ Cron job "会员日折扣提醒" failed: FailoverError: The provider returned an HTML error page instead of an API response. This usually means a CDN or gateway (e.g. Cloudflare) blocked the request. Retry in a moment or check provider status.
以前是偶尔出现,最近几乎每天都会报错,然后聊天框堆满了这样的错误信息。但是普通聊天的响应又是正常的,只有定时任务才会有问题。这里面一定有什么蹊跷,需要研究一下。
排查问题
借助之前搭的抓包服务,我抓到了普通聊天和 cron 触发的任务请求,发现除了用户提示词不一样之外,系统提示词和工具列表等等参数都是完全一致的。定时任务的用户提示词片段大概是这样:
1 | { |
提示词内只要包含这小部分内容,发送出去的请求就没有响应。继续把这个请求内容缩短进行测试,发现只要提示词开头包含
[cron: 的请求就会响应非常慢。
1 | { |
可以看到,连接建立得很快,但是 SSE 返回的只有用于保持连接的空内容,直到很长时间之后才开始返回推理内容。最长会等待 10 分钟,超过这个时间连接就直接关闭了。
为了继续验证猜想,我创建了一个 Uptime Kuma 监控项,发送给 DeepSeek API,内容就是上面那段请求。每隔 1 分钟发送一次,超时时间是 48 秒,监控了大约 1 天的时间。
Uptime Kuma 的预览图表比较小,我把它的数据提取出来,用 Python 重新画了一遍,另外还有一个把方括号替换成直角引号的对照组。
8 月 12 日晚 DeepSeek V4 Pro 发布了,所以 13 日的异常可能不太好说。不过总体的情况也可以说是惨不忍睹,每到整点和整半点几乎都不能访问。这里测试的模型是 V4-Flash-0731,前两个月我用的是 V4-Pro 预览版,也是报错很多。总之,我们大概可以得出结论:
- OpenClaw 的用户还是很多的,而且大家都喜欢把定时任务设置在整点
- DeepSeek 采用了某种缓存算法,对大量相同前缀的请求有特殊的处理方式,结果反而是适得其反了

解决办法
避开整点时间
这是最简单的办法,比如以前是 10 点整的提醒,就提前个几秒几分钟,例如 9 点 59 分。毕竟用 AI 做定时任务的,对执行时间的要求都不会很严格。事实也确实如此,把定时任务都提前几分钟后,基本上就没有报错出现了。
使用别的模型
换用别家提供商的模型。或者,OpenClaw 也支持单独给任务配置模型,只需要在创建任务的时候和 AI 说清楚就可以了。
替换请求内容
如果不想改定时任务时间,又还想继续用 DeepSeek
系列模型的话,可以通过自己安装的中转代理修改请求内容,把出现的
[cron: 字符串替换掉。我使用的 New API 有字符串替换功能,正好可以做这个事情。
在「渠道管理」的「参数覆盖」选项里面,可以直接粘贴这段代码来应用配置:
1 | { |
使用 OpenClaw 和 DeepSeek 遇到的定时任务问题
https://blog.beanbang.cn/2026/08/16/openclaw-deepseek-cron-issue/