Skip to content

应用服务器协议 — 代码走读

codex-rs/app-server-protocol/src/protocol/common.rs — 协议定义

协议的核心类型定义:

rust
// 认证模式
pub enum AuthMode {
    ApiKey,
    Chatgpt,
    ChatgptAuthTokens,
    AgentIdentity,
}

// 客户端请求(宏生成 60+ 变体)
pub enum ClientRequest {
    // 每个变体包含 request_id: RequestId 和 typed params
    // 宏自动生成序列化/反序列化代码
}

// 序列化作用域
pub enum ClientRequestSerializationScope {
    Global(&str),
    GlobalSharedRead(&str),
    Thread { thread_id: ThreadId },
    ThreadPath { path: PathBuf },
    CommandExecProcess,
    Process,
    FuzzyFileSearchSession,
    FsWatch,
    McpOauth,
}

codex-rs/app-server/src/lib.rs — 应用服务器

App Server 的模块组织:

模块职责
transport传输层(stdio/socket/TCP)
message_processorJSON-RPC 消息处理
request_processors请求处理器
thread_state线程状态管理
config_manager配置管理
in_process嵌入式模式
outgoing_message出站消息
command_exec命令执行
fuzzy_file_search文件搜索
fs_watch文件监控
mcp_refreshMCP 配置刷新
dynamic_tools动态工具
extensions扩展
models模型管理
skills_watcher技能监控

核心类型:

rust
pub struct MessageProcessor {
    // JSON-RPC 消息路由
}

pub struct OutgoingMessageSender {
    // 服务器推送通知
}

pub struct ConnectionState {
    // 客户端连接状态
}

pub struct ConfigManager {
    // 动态配置管理
}

codex-rs/core/src/client.rs — Backend Client(2254 行)

rust
pub struct ModelClient {
    state: Arc<ModelClientState>,
    prompt_cache_key_override: Option<String>,
}

pub struct ModelClientSession {
    client: ModelClient,
    websocket_session: Option<...>,
    turn_state: Arc<OnceLock<String>>,
}

// 自定义 HTTP 头常量
pub const X_CODEX_INSTALLATION_ID_HEADER: &str = "...";
pub const X_CODEX_TURN_STATE_HEADER: &str = "...";
pub const X_CODEX_TURN_METADATA_HEADER: &str = "...";
pub const X_RESPONSESAPI_INCLUDE_TIMING_METRICS_HEADER: &str = "...";

关键函数索引

函数/模块文件路径说明
ClientRequestapp-server-protocol/src/protocol/common.rs60+ JSON-RPC 请求变体
AuthModeapp-server-protocol/src/protocol/common.rs认证模式枚举
ClientRequestSerializationScopeapp-server-protocol/src/protocol/common.rs序列化作用域
MessageProcessorapp-server/src/message_processor.rsJSON-RPC 消息路由
OutgoingMessageSenderapp-server/src/outgoing_message.rs服务器推送
ConfigManagerapp-server/src/config_manager.rs动态配置管理
ThreadStateapp-server/src/thread_state.rs线程状态管理
transportapp-server/src/transport/传输层实现
in_processapp-server/src/in_process.rs嵌入式模式
ModelClientcore/src/client.rsLLM 后端客户端
ModelClientSessioncore/src/client.rsTurn 级会话
stream()core/src/client.rs流式 API 调用