认知解析链

wesgine 的 Cognitive Resolver 链——从请求到模型调用的路由与健康管理。


定位

Resolver 是引擎调用 LLM 的唯一出口。

它负责:


链式架构

Resolver 链按顺序组装:

AppRunRequest
  │
  ├─ CellChain(内层五层装配)
  │   ├─ HealthTracker(per-Cell 健康追踪)
  │   ├─ RateLimiter(per-Cell 速率限制)
  │   ├─ Retry(瞬时错误重试)
  │   ├─ Backoff(指数退避)
  │   └─ ImageRecovery(图片故障恢复)
  │
  └─ Provider.Stream(ctx, cellID, req)

per-Cell 健康追踪

每个 Cell 独立追踪其使用的 Provider 的健康状态。


per-Cell 速率限制

Cell 配额(CellQuotas.TokensPerMinute / TokensPerDay)在 Resolver 层执行。

超限时返回 429,不会传播到 Provider。


认知韧性

Retry(重试)

瞬时错误(网络超时、503)自动重试。

重试次数可配置,默认 3 次。

Backoff(退避)

连续失败触发指数退避。

防止对已知故障的 Provider 持续打击。

ImageRecovery(图片恢复)

当包含图片的请求失败时:

  1. 移除图片内容
  2. 用纯文本描述替代
  3. 重新发送请求

适用于不支持 Vision 的模型被错误路由的场景。


SequentialFallbackResolver

多 Provider 场景下的顺序回退:

  1. 尝试首选 Provider
  2. 首选失败 → 尝试下一个
  3. 所有 Provider 都失败 → 返回最后一个错误

BillingRequired Provider 的 JWT 过期后,自然 fallback 到 BYOK Provider。


BuildCellCognitive

cellchain.BuildCellCognitive 是内层五层装配的入口。

它从 CellSpec 和运行时状态构建完整的 Resolver 链。

每个 Cell 启动时执行一次。