Skip to content

配置系统 — 代码走读

codex-rs/config/src/lib.rs — 配置 crate 入口

配置 crate 的模块组织和公共导出:

rust
// 核心模块
pub mod cloud_config_bundle;
pub mod cloud_config_layers;
pub mod config_layer_source;
pub mod config_requirements;
pub mod config_toml;
pub mod constraint;
pub mod diagnostics;
pub mod fingerprint;
pub mod hook_config;
pub mod loader;
pub mod permissions_toml;
pub mod profile_toml;
pub mod schema;
pub mod skills_config;
pub mod types;

// 核心导出
pub use cloud_config_bundle::{CloudConfigBundle, CloudConfigBundleLoader};
pub use config_layer_source::ConfigLayerSource;
pub use constraint::{Constrained, ConstraintResult};
pub use config_requirements::ConfigRequirements;
pub use hook_config::{HookEventsToml, HooksToml, HookHandlerConfig};
pub use loader::LoaderOverrides;
pub const CONFIG_TOML_FILE: &str = "config.toml";

模块职责对照:

模块职责关键类型
loader配置加载与合并LoaderOverrides
config_tomlTOML 文件解析ConfigToml
cloud_config_bundle云端配置CloudConfigBundle, CloudConfigBundleLoader
cloud_config_layers云端配置层配置层定义
config_layer_source来源追踪ConfigLayerSource
constraint业务约束Constrained<T>, ConstraintResult
diagnostics错误诊断Diagnostics
fingerprint配置指纹变更检测
schemaSchema 验证类型约束
hook_config钩子配置HooksToml, HookHandlerConfig
permissions_toml权限配置权限定义
profile_tomlProfile 配置命名 profile
skills_config技能配置SkillsConfig

codex-rs/config/src/loader.rs — 配置加载器

Loader 负责从多个来源加载并合并配置:

rust
pub struct LoaderOverrides {
    pub model: Option<String>,
    pub sandbox: Option<SandboxablePreference>,
    pub approval_policy: Option<ApprovalPolicy>,
    // ... 其他 CLI 覆盖参数
}

加载流程:

  1. 读取全局 config.toml
  2. 读取项目 config.toml
  3. 加载云端配置(CloudConfigBundleLoader
  4. 按 CLI > Cloud > 项目 > 全局 > 默认 优先级合并
  5. 记录 ConfigLayerSource

codex-rs/config/src/constraint.rs — 约束系统

Constrained<T> 是配置约束的核心抽象:

rust
pub struct Constrained<T> {
    value: T,
    // 内部约束检查逻辑
}

pub enum ConstraintResult {
    Valid,
    Invalid(String),
    Warning(String),
}

codex-rs/config/src/hook_config.rs — 钩子配置

rust
pub struct HooksToml {
    pub hooks: HashMap<HookEventsToml, Vec<HookHandlerConfig>>,
}

pub struct HookHandlerConfig {
    // 钩子处理器配置
}

关键函数索引

函数/模块文件路径说明
Loaderconfig/src/loader.rs配置加载与合并
LoaderOverridesconfig/src/loader.rsCLI 参数覆盖
CloudConfigBundleLoaderconfig/src/cloud_config_bundle.rs云端配置加载
ConfigLayerSourceconfig/src/config_layer_source.rs配置值来源追踪
Constrained<T>config/src/constraint.rs带约束的配置值
Diagnosticsconfig/src/diagnostics.rs错误诊断
fingerprintconfig/src/fingerprint.rs配置变更检测
HooksTomlconfig/src/hook_config.rs钩子配置
SkillsConfigconfig/src/skills_config.rs技能配置
CONFIG_TOML_FILEconfig/src/lib.rs配置文件名常量
MtimeConfigReloadercore/src/network_proxy_loader.rs运行时配置重载