Appearance
配置系统 — 代码走读
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_toml | TOML 文件解析 | ConfigToml |
cloud_config_bundle | 云端配置 | CloudConfigBundle, CloudConfigBundleLoader |
cloud_config_layers | 云端配置层 | 配置层定义 |
config_layer_source | 来源追踪 | ConfigLayerSource |
constraint | 业务约束 | Constrained<T>, ConstraintResult |
diagnostics | 错误诊断 | Diagnostics |
fingerprint | 配置指纹 | 变更检测 |
schema | Schema 验证 | 类型约束 |
hook_config | 钩子配置 | HooksToml, HookHandlerConfig |
permissions_toml | 权限配置 | 权限定义 |
profile_toml | Profile 配置 | 命名 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 覆盖参数
}加载流程:
- 读取全局
config.toml - 读取项目
config.toml - 加载云端配置(
CloudConfigBundleLoader) - 按 CLI > Cloud > 项目 > 全局 > 默认 优先级合并
- 记录
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 {
// 钩子处理器配置
}关键函数索引
| 函数/模块 | 文件路径 | 说明 |
|---|---|---|
Loader | config/src/loader.rs | 配置加载与合并 |
LoaderOverrides | config/src/loader.rs | CLI 参数覆盖 |
CloudConfigBundleLoader | config/src/cloud_config_bundle.rs | 云端配置加载 |
ConfigLayerSource | config/src/config_layer_source.rs | 配置值来源追踪 |
Constrained<T> | config/src/constraint.rs | 带约束的配置值 |
Diagnostics | config/src/diagnostics.rs | 错误诊断 |
fingerprint | config/src/fingerprint.rs | 配置变更检测 |
HooksToml | config/src/hook_config.rs | 钩子配置 |
SkillsConfig | config/src/skills_config.rs | 技能配置 |
CONFIG_TOML_FILE | config/src/lib.rs | 配置文件名常量 |
MtimeConfigReloader | core/src/network_proxy_loader.rs | 运行时配置重载 |