第四课:配置系统详解
深入理解 Codex CLI 的配置系统,掌握从基础配置到高级定制的完整知识体系。
1. 配置文件概述
1.1 配置文件位置
Codex CLI 使用 TOML 格式的配置文件,主要配置文件位于:
~/.codex/config.toml
完整路径示例:
- Linux/macOS:
/home/username/.codex/config.toml或/Users/username/.codex/config.toml - Windows:
C:\Users\username\.codex\config.toml
1.2 配置文件结构
配置文件采用 TOML 格式(Tom's Obvious, Minimal Language),具有清晰的层级结构:
# 全局设置
model = "codex-mini-latest"
model_provider = "openai"
sandbox = "workspace-write"
approval_policy = "on-request"
# TUI 界面配置
[tui]
alternate_screen = true
vim_mode_default = false
dark_mode = true
theme = "dark"
# MCP 服务器配置
[mcp_servers]
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
# 环境变量
[env]
NODE_ENV = "development"
DEBUG = "codex:*"
2. 六层配置优先级体系
Codex 采用六层配置优先级系统,从低到高依次为:
2.1 优先级层级(从低到高)
| 层级 | 配置来源 | 说明 | 示例 |
|---|---|---|---|
| 1️⃣ | 默认值 | Codex 内置的基础参数 | model = "codex-mini-latest" |
| 2️⃣ | 托管配置 | 系统级配置(管理员设置) | /etc/codex/config.toml |
| 3️⃣ | 全局用户配置 | 用户级配置 | ~/.codex/config.toml |
| 4️⃣ | Profile 配置 | 特定场景的配置集 | ~/.codex/profiles/work.toml |
| 5️⃣ | 项目级配置 | 项目目录下的配置 | .codex/config.toml |
| 6️⃣ | 命令行覆盖 | 运行时参数 | --model gpt-4 |
2.2 优先级解析示例
假设以下配置场景:
# 默认值(内置)
model = "codex-mini-latest"
# 用户配置 (~/.codex/config.toml)
model = "gpt-4"
# 项目配置 (.codex/config.toml)
model = "gpt-4-turbo"
# 命令行参数
# codex --model gpt-4o
最终生效的配置:model = "gpt-4o"(命令行覆盖优先级最高)
2.3 配置合并策略
Codex 使用深度合并策略:
# 用户配置
[tui]
theme = "dark"
vim_mode_default = false
# 项目配置
[tui]
alternate_screen = true
合并结果:
[tui]
theme = "dark" # 来自用户配置
vim_mode_default = false # 来自用户配置
alternate_screen = true # 来自项目配置
3. 关键配置项详解
3.1 模型配置
model
指定使用的 AI 模型:
# 推荐模型
model = "codex-mini-latest" # Codex 专用模型(默认)
model = "gpt-4" # GPT-4 模型
model = "gpt-4-turbo" # GPT-4 Turbo 模型
model = "gpt-4o" # GPT-4o 模型
模型选择建议:
- 日常开发:
codex-mini-latest(性价比最高) - 复杂任务:
gpt-4或gpt-4-turbo - 最新能力:
gpt-4o
model_provider
指定模型提供商:
model_provider = "openai" # OpenAI 官方(默认)
model_provider = "azure" # Azure OpenAI
model_provider = "ollama" # 本地 Ollama 模型
提供商配置示例:
# OpenAI 配置
[model_providers.openai]
base_url = "https://api.openai.com/v1"
api_key_env = "OPENAI_API_KEY"
# Azure 配置
[model_providers.azure]
base_url = "https://your-resource.openai.azure.com/"
api_key_env = "AZURE_OPENAI_API_KEY"
api_version = "2024-02-15-preview"
# Ollama 本地模型
[model_providers.ollama]
base_url = "http://localhost:11434/v1"
api_key = "ollama"
3.2 沙箱配置 (sandbox)
沙箱控制 Codex 执行命令的安全边界:
# 三种沙箱模式
sandbox = "read-only" # 只读模式
sandbox = "workspace-write" # 工作区写入模式(默认)
sandbox = "danger-full-access" # 完全访问模式(危险)
沙箱模式详解:
| 模式 | 文件读取 | 文件写入 | 命令执行 | 网络访问 | 适用场景 |
|---|---|---|---|---|---|
read-only | ✅ | ❌ | ❌ | ❌ | 代码审查、文档生成 |
workspace-write | ✅ | ✅(工作区) | ✅(受限) | ✅ | 日常开发 |
danger-full-access | ✅ | ✅(任意) | ✅(任意) | ✅ | 系统管理(慎用) |
安全建议:
# 生产环境推荐
sandbox = "read-only"
# 开发环境推荐
sandbox = "workspace-write"
# 仅在明确需要时使用
# sandbox = "danger-full-access"
3.3 审批策略 (approval_policy)
控制何时需要用户确认:
# 三种审批策略
approval_policy = "untrusted" # 不信任模式
approval_policy = "on-request" # 按需审批(默认)
approval_policy = "never" # 从不审批
审批策略详解:
| 策略 | 说明 | 安全级别 | 适用场景 |
|---|---|---|---|
untrusted | 所有操作都需要确认 | 🔒🔒🔒 最高 | 生产环境、敏感操作 |
on-request | 仅在需要时请求确认 | 🔒🔒 中等 | 日常开发(推荐) |
never | 从不请求确认 | 🔒 最低 | 自动化脚本、测试环境 |
配置示例:
# 开发环境配置
approval_policy = "on-request"
# 自动化测试配置
approval_policy = "never"
# 生产环境配置
approval_policy = "untrusted"
3.4 TUI 界面配置
Terminal User Interface(终端用户界面)配置:
[tui]
# 是否使用备用屏幕缓冲区
alternate_screen = true
# 是否默认启用 Vim 模式
vim_mode_default = false
# 是否启用深色模式
dark_mode = true
# 主题设置
theme = "dark" # 可选: "dark", "light", "auto"
# 自动滚动到底部
auto_scroll = true
# 显示行号
show_line_numbers = true
# 语法高亮
syntax_highlighting = true
Vim 模式快捷键:
i- 进入插入模式Esc- 返回普通模式dd- 删除当前行yy- 复制当前行p- 粘贴/pattern- 搜索
3.5 MCP 服务器配置
Model Context Protocol(MCP)服务器配置:
[mcp_servers]
# GitHub MCP 服务器
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_PERSONAL_ACCESS_TOKEN = "ghp_xxxx" }
# 文件系统 MCP 服务器
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
# PostgreSQL MCP 服务器
[mcp_servers.postgres]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-postgres"]
env = { DATABASE_URL = "postgresql://user:pass@localhost/db" }
# 自定义 MCP 服务器
[mcp_servers.custom]
command = "python"
args = ["-m", "my_mcp_server"]
env = { API_KEY = "xxx" }
MCP 服务器管理:
# 列出已配置的 MCP 服务器
codex mcp list
# 测试 MCP 服务器连接
codex mcp test github
# 重启 MCP 服务器
codex mcp restart github
3.6 环境变量配置
[env]
# Node.js 环境
NODE_ENV = "development"
DEBUG = "codex:*"
# Python 环境
PYTHONPATH = "/path/to/modules"
VIRTUAL_ENV = "/path/to/venv"
# 自定义变量
MY_API_KEY = "xxx"
CUSTOM_CONFIG = "value"
3.7 工具权限配置
[tools]
# 允许的工具
allow = ["terminal", "file_editor", "browser"]
# 禁止的工具
deny = ["dangerous_tool"]
# 终端配置
[tools.terminal]
# 允许的命令
allow_commands = ["git", "npm", "python", "pip"]
# 禁止的命令
deny_commands = ["rm -rf", "sudo", "chmod 777"]
# 命令超时时间(秒)
timeout = 300
4. Profile 管理
4.1 Profile 概述
Profile 允许你为不同场景创建独立的配置集:
# 使用 Profile 启动 Codex
codex --profile work
codex --profile personal
codex --profile testing
4.2 Profile 文件位置
~/.codex/profiles/
├── work.toml
├── personal.toml
├── testing.toml
└── production.toml
4.3 创建 Profile
方法一:手动创建
# 创建 Profile 目录
mkdir -p ~/.codex/profiles
# 创建工作 Profile
cat > ~/.codex/profiles/work.toml << EOF
model = "gpt-4"
sandbox = "workspace-write"
approval_policy = "on-request"
[tui]
theme = "dark"
vim_mode_default = true
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
EOF
方法二:从当前配置创建
# 导出当前配置为 Profile
codex config export --profile work
# 编辑 Profile
codex config edit --profile work
4.4 Profile 配置示例
work.toml(工作环境):
model = "gpt-4"
model_provider = "openai"
sandbox = "workspace-write"
approval_policy = "on-request"
[tui]
theme = "dark"
vim_mode_default = true
auto_scroll = true
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
[env]
NODE_ENV = "development"
DEBUG = "codex:*"
testing.toml(测试环境):
model = "codex-mini-latest"
sandbox = "workspace-write"
approval_policy = "never"
[tui]
theme = "light"
vim_mode_default = false
[env]
NODE_ENV = "test"
CI = "true"
production.toml(生产环境):
model = "gpt-4"
sandbox = "read-only"
approval_policy = "untrusted"
[tui]
theme = "dark"
vim_mode_default = false
[env]
NODE_ENV = "production"
4.5 Profile 管理命令
# 列出所有 Profile
codex profile list
# 查看 Profile 内容
codex profile show work
# 删除 Profile
codex profile delete testing
# 复制 Profile
codex profile copy work personal
# 设置默认 Profile
codex profile set-default work
5. 项目级配置
5.1 项目配置文件
在项目根目录创建 .codex/config.toml:
my-project/
├── .codex/
│ ├── config.toml # 项目配置
│ └── prompts/ # 项目提示词
│ └── code-review.md
├── src/
├── tests/
└── README.md
5.2 项目配置示例
# .codex/config.toml
model = "gpt-4-turbo"
sandbox = "workspace-write"
approval_policy = "on-request"
# 项目特定的 MCP 服务器
[mcp_servers]
[mcp_servers.project-db]
command = "python"
args = ["-m", "project_mcp_server"]
env = { DATABASE_URL = "sqlite:///./data/app.db" }
# 项目环境变量
[env]
PROJECT_ENV = "development"
LOG_LEVEL = "debug"
# 项目工具配置
[tools.terminal]
allow_commands = ["npm", "yarn", "git", "python"]
deny_commands = ["rm -rf /", "sudo"]
5.3 多级项目配置
Codex 支持多级项目配置,从当前目录向上查找:
/home/user/projects/
├── .codex/config.toml # 父项目配置
└── my-app/
├── .codex/config.toml # 子项目配置(优先级更高)
└── src/
优先级规则:
- 离当前工作目录最近的配置文件优先级最高
- 配置项采用深度合并策略
6. 常用配置示例
6.1 开发环境配置
# ~/.codex/config.toml
model = "codex-mini-latest"
model_provider = "openai"
sandbox = "workspace-write"
approval_policy = "on-request"
[tui]
theme = "dark"
vim_mode_default = true
auto_scroll = true
show_line_numbers = true
syntax_highlighting = true
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
[env]
NODE_ENV = "development"
DEBUG = "codex:*"
EDITOR = "vim"
6.2 自动化脚本配置
# ~/.codex/profiles/automation.toml
model = "codex-mini-latest"
sandbox = "workspace-write"
approval_policy = "never"
[tui]
theme = "light"
vim_mode_default = false
auto_scroll = false
[env]
CI = "true"
AUTOMATION = "true"
6.3 代码审查配置
# ~/.codex/profiles/review.toml
model = "gpt-4"
sandbox = "read-only"
approval_policy = "untrusted"
[tui]
theme = "dark"
vim_mode_default = false
show_line_numbers = true
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
6.4 多模型配置
# 支持多模型切换
[model_providers.openai]
base_url = "https://api.openai.com/v1"
api_key_env = "OPENAI_API_KEY"
[model_providers.anthropic]
base_url = "https://api.anthropic.com"
api_key_env = "ANTHROPIC_API_KEY"
[model_providers.ollama]
base_url = "http://localhost:11434/v1"
api_key = "ollama"
# 默认使用 OpenAI
model = "gpt-4"
model_provider = "openai"
7. 配置调试与诊断
7.1 /debug-config 命令
在 Codex 交互界面中使用 /debug-config 命令查看当前配置:
# 在 Codex 交互界面中输入
/debug-config
输出示例:
📋 Codex Configuration Debug Info
================================
🔧 Model Configuration:
Model: gpt-4
Provider: openai
Base URL: https://api.openai.com/v1
🔒 Security Configuration:
Sandbox: workspace-write
Approval Policy: on-request
🖥️ TUI Configuration:
Theme: dark
Vim Mode: true
Auto Scroll: true
🔌 MCP Servers:
- github: connected
- filesystem: connected
📁 Config Sources (priority high→low):
1. CLI args: --model gpt-4
2. Project: .codex/config.toml
3. Profile: work
4. User: ~/.codex/config.toml
5. System: /etc/codex/config.toml
6. Default: built-in
🌍 Environment Variables:
OPENAI_API_KEY: ***
NODE_ENV: development
7.2 配置验证命令
# 验证配置文件语法
codex config validate
# 检查配置冲突
codex config check
# 显示配置来源
codex config sources
# 导出当前配置
codex config export
7.3 常见配置问题排查
问题 1:配置未生效
# 检查配置优先级
codex config sources
# 查看最终生效的配置
codex config show
问题 2:MCP 服务器连接失败
# 测试 MCP 服务器
codex mcp test github
# 查看 MCP 服务器日志
codex mcp logs github
# 重启 MCP 服务器
codex mcp restart github
问题 3:权限问题
# 检查文件权限
ls -la ~/.codex/config.toml
# 修复权限
chmod 600 ~/.codex/config.toml
# 检查沙箱设置
codex config get sandbox
7.4 配置重置
# 重置为默认配置
codex config reset
# 重置特定配置项
codex config reset model
# 备份当前配置
codex config backup
# 从备份恢复
codex config restore
8. 最佳实践
8.1 配置管理原则
- 最小权限原则:只授予必要的权限
- 环境隔离:为不同环境使用不同配置
- 版本控制:将项目配置纳入版本控制
- 定期审查:定期审查和更新配置
8.2 安全配置建议
# 生产环境安全配置
sandbox = "read-only"
approval_policy = "untrusted"
# 限制工具权限
[tools.terminal]
deny_commands = ["rm -rf", "sudo", "chmod", "chown"]
# 敏感信息使用环境变量
[env]
API_KEY = "${OPENAI_API_KEY}" # 从环境变量读取
8.3 团队协作配置
# .codex/config.toml(提交到版本控制)
model = "gpt-4"
sandbox = "workspace-write"
approval_policy = "on-request"
# 团队共享的 MCP 服务器
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
# 个人配置使用 Profile
codex --profile personal
8.4 性能优化配置
# 性能优化配置
model = "codex-mini-latest" # 使用更快的模型
[tui]
auto_scroll = false # 禁用自动滚动
syntax_highlighting = false # 禁用语法高亮(可选)
# 限制 MCP 服务器数量
[mcp_servers]
# 只启用必要的 MCP 服务器
9. 高级配置技巧
9.1 条件配置
# 根据环境变量动态配置
[model_providers]
[model_providers.openai]
base_url = "${OPENAI_BASE_URL:-https://api.openai.com/v1}"
api_key_env = "OPENAI_API_KEY"
9.2 配置继承
# 基础配置
[base]
model = "gpt-4"
sandbox = "workspace-write"
# 继承并覆盖
[work : base]
approval_policy = "on-request"
[production : base]
sandbox = "read-only"
approval_policy = "untrusted"
9.3 配置模板
# 使用模板变量
[template]
project_name = "my-project"
environment = "development"
# 应用模板
[env]
PROJECT_NAME = "${template.project_name}"
NODE_ENV = "${template.environment}"
10. 总结
10.1 关键要点
- 配置文件位置:
~/.codex/config.toml - 六层优先级:默认值 → 托管配置 → 全局用户配置 → Profile 配置 → 项目级配置 → 命令行覆盖
- 关键配置项:model、sandbox、approval_policy、tui、mcp_servers
- Profile 管理:为不同场景创建独立配置集
- 调试命令:
/debug-config查看当前配置
10.2 配置检查清单
- 配置文件语法正确
- 安全设置符合要求
- MCP 服务器连接正常
- 环境变量配置正确
- Profile 配置完整
- 项目配置已版本控制
10.3 下一步学习
- 第 104 课:安全模型与权限管理
- 第 105 课:MCP 服务器高级配置
- 第 106 课:自定义工具开发
- 第 107 课:性能调优与监控
附录
A. 配置项完整参考
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
model | string | codex-mini-latest | AI 模型名称 |
model_provider | string | openai | 模型提供商 |
sandbox | string | workspace-write | 沙箱模式 |
approval_policy | string | on-request | 审批策略 |
tui.theme | string | dark | 界面主题 |
tui.vim_mode_default | boolean | false | Vim 模式默认状态 |
tui.auto_scroll | boolean | true | 自动滚动 |
B. 常用命令速查
# 配置管理
codex config show # 显示当前配置
codex config validate # 验证配置
codex config reset # 重置配置
# Profile 管理
codex profile list # 列出 Profile
codex profile show <name> # 查看 Profile
codex --profile <name> # 使用 Profile
# MCP 服务器
codex mcp list # 列出 MCP 服务器
codex mcp test <name> # 测试连接
codex mcp restart <name> # 重启服务器
# 调试命令
/debug-config # 查看配置详情
/debug-mcp # 查看 MCP 状态
/debug-tools # 查看工具状态
C. 配置文件模板
# Codex 配置文件模板
# 复制到 ~/.codex/config.toml 并根据需要修改
# 模型配置
model = "codex-mini-latest"
model_provider = "openai"
# 安全配置
sandbox = "workspace-write"
approval_policy = "on-request"
# 界面配置
[tui]
theme = "dark"
vim_mode_default = false
auto_scroll = true
show_line_numbers = true
syntax_highlighting = true
# MCP 服务器
[mcp_servers]
# [mcp_servers.github]
# command = "npx"
# args = ["-y", "@modelcontextprotocol/server-github"]
# 环境变量
[env]
NODE_ENV = "development"
# OPENAI_API_KEY = "your-api-key"
💡 提示:配置系统是 Codex CLI 的核心,合理的配置可以显著提升开发效率和安全性。建议从默认配置开始,逐步根据实际需求进行调整。
⚠️ 注意:修改配置后,建议使用
/debug-config命令验证配置是否生效。