错误处理与恢复
wesgine 的错误分类、重试策略与降级恢复机制。
错误分类
不可重试错误
重试同样输入只会得到同样拒绝:
guardrail_blocked— 安全策略阻止content_filter_blocked— 内容过滤budget_exhausted— 预算用尽memory_limit_exceeded— 记忆上限panic_stop— 进程级崩溃vision_not_supported— 模型不支持视觉
可重试错误
错误原因是瞬时的,再发一次可能成功:
- Provider 503/429 — 上游临时不可用
cognitive_internal— 认知内部错误missing_terminal_event— 终端事件缺失conv_repo_error— 会话存储错误
Cognitive Resilience
internal/cognitive/resilience/ 提供认知层面的弹性机制:
Retry
LLM 调用失败后按策略重试。
Backoff
指数退避避免在 Provider 限流期间持续压力。
ImageRecovery
图片处理失败时降级到纯文本模式。
Cell 级故障策略
故障计数
Cell 跟踪故障次数,达到阈值时触发策略。
手动重置
hyp.Cells().ResetFaults(ctx, cellID)
HTTP 端点:POST /admin/cells/{id}/reset-faults
FaultPolicyOverride
CellSpec.FaultPolicyOverride 允许 per-Cell 策略定制。
用户中断
context_cancelled / interrupted 不渲染错误块。
在 createDoneReasonMapper 中返回 null,压制任何错误显示。
余额/欠费
action: 'none'。
Chat 气泡只报错,不画「前往充值」——结清入口在 BillingDebtBanner / 设置页 / 状态栏。