Appearance
应用服务器协议 — 代码走读
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_processor | JSON-RPC 消息处理 |
request_processors | 请求处理器 |
thread_state | 线程状态管理 |
config_manager | 配置管理 |
in_process | 嵌入式模式 |
outgoing_message | 出站消息 |
command_exec | 命令执行 |
fuzzy_file_search | 文件搜索 |
fs_watch | 文件监控 |
mcp_refresh | MCP 配置刷新 |
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 = "...";关键函数索引
| 函数/模块 | 文件路径 | 说明 |
|---|---|---|
ClientRequest | app-server-protocol/src/protocol/common.rs | 60+ JSON-RPC 请求变体 |
AuthMode | app-server-protocol/src/protocol/common.rs | 认证模式枚举 |
ClientRequestSerializationScope | app-server-protocol/src/protocol/common.rs | 序列化作用域 |
MessageProcessor | app-server/src/message_processor.rs | JSON-RPC 消息路由 |
OutgoingMessageSender | app-server/src/outgoing_message.rs | 服务器推送 |
ConfigManager | app-server/src/config_manager.rs | 动态配置管理 |
ThreadState | app-server/src/thread_state.rs | 线程状态管理 |
transport | app-server/src/transport/ | 传输层实现 |
in_process | app-server/src/in_process.rs | 嵌入式模式 |
ModelClient | core/src/client.rs | LLM 后端客户端 |
ModelClientSession | core/src/client.rs | Turn 级会话 |
stream() | core/src/client.rs | 流式 API 调用 |