---
template: sheet
theme: shadcn
title: 标题生成为什么报 DeepSeek 400
subtitle: SiliconFlow 超时 + 兜底路由丢了 provider id
source: ~/.hermes/logs/agent.log · 2026-10-27 11:12:26
cols: 3
---
Lead: 配置里没有用 deepseek 做辅助模型。是 SiliconFlow 超时后兜底到主模型,兜底把 provider 降级成裸 custom,请求因此落到 DeepSeek 官方端点。

## A 结论

```callout err 不是"用错了模型"
title_generation 钉的是 custom:siliconflow / Qwen3-8B。日志 11:12:26 显示它先向 api.siliconflow.cn 发了请求,30 秒没回来。
```

超时落在关键路径上,框架跳过同 provider 重试,直接切主模型兜底。这一步把 provider 从 `custom:liangrekui-ds` 写成了裸 `custom`。

## B 四行日志的因果链

```sequence
client -> SiliconFlow: POST api.siliconflow.cn/v1
SiliconFlow --> client: 30.0s 超时,无响应
client -> DeepSeek: 兜底 main-agent(custom) deepseek-v4.1-flash
DeepSeek --> client: 400 模型名不在白名单
```

## C 为什么落到了 DeepSeek 官方

| 环节 | 实际值 | 后果 |
|---|---|---|
| 配置的主 provider | custom:liangrekui-ds | 主对话正常,走 api.liangrekui.com |
| 兜底时读到的 provider | custom | 丢了 liangrekui-ds 这个 id |
| 裸 custom 分支 | 取不到 base_url 与 key | 继续落到 auto 探测 |
| auto 探测命中 | DEEPSEEK_API_KEY 存在 | 走官方 api.deepseek.com |
| 官方白名单 | deepseek-flash、deepseek-v4-pro | deepseek-v4.1-flash 被拒 |

```callout info 同一模型两种命运
主对话能跑,是因为走中转 Liangrekui DS。报错那条走的是官方端点,官方没这个型号。
```

## D 已改与实测

标题任务换到非推理的小模型,并加了自己的兜底链,不再落到主模型。

| 项 | 改前 | 改后 |
|---|---|---|
| model | Qwen/Qwen3-8B | Qwen/Qwen2.5-7B-Instruct |
| timeout | 30 | 60 |
| fallback_chain | 无 | custom:siliconflow / Qwen3-8B |

```limits
Qwen3-8B 起标题耗时 | 13.4 | 秒
Qwen2.5-7B 起标题耗时 | 0.6 | 秒
```

```callout ok 验证
Qwen2.5-7B 用 strict json_schema 实测返回 200,内容为合法 JSON 标题。备份在 /root/backups/config.yaml.bak.20261027_115800。
```
