Skip to content

Backend Client 管理 Codex 与 LLM 后端的连接,处理 API 调用、认证和流式响应解析。

为什么需要 Backend Client

Codex 需要与 LLM 后端进行高频的 API 调用,涉及认证、连接管理、请求构建、流式响应解析等复杂逻辑。Backend Client 将这些通用功能封装为可复用的客户端,支持 WebSocket(首选)和 HTTP SSE(降级)两种传输方式,并通过 ModelClient(会话级)和 ModelClientSession(turn 级)的两层设计实现连接复用。

核心原理

  1. 两层客户端ModelClient(会话生命周期)管理连接池和认证,ModelClientSession(turn 生命周期)处理单次 API 调用
  2. WebSocket 优先:优先使用 WebSocket 连接(支持增量 delta,减少重复数据传输),失败时降级到 HTTP SSE
  3. 流式响应ResponseStream 以异步流方式返回 ResponseEvent,支持增量处理 LLM 输出
  4. 请求优化:支持请求压缩(enable_request_compression)、WebSocket 预热(prewarm_websocket)和缓存键覆盖

在源码中的实现

  • codex-rs/core/src/client.rs(2254 行)— ModelClientModelClientSessionResponseStreamModelClientState
  • codex-rs/core/src/session/mod.rs — Session 通过 ModelClient::new_session() 创建 turn 级会话
  • codex-rs/app-server/src/models/ — 模型信息管理和提供商选择

相关概念