Codex: Codex 非交互模式与跨平台
最后更新:2026-08-31
非交互模式让 Codex 适合脚本和自动化,Windows 和 Worktrees 则需要特殊配置。
📋 前置知识:了解 Codex CLI 基本操作
1. 你将学到
- 非交互模式详解
- Windows 环境配置
- Git Worktrees 集成
- 跨平台注意事项
2. 非交互模式
(1) 启动方式
BASH
# 直接传入任务,执行完退出
codex "修复所有 lint 错误"
# 静默模式,减少输出
codex --quiet "生成 API 文档" > api-docs.md
# JSON 输出,适合程序解析
codex --json "列出所有 TODO" > todos.json
# 完全自动化
codex --full-auto --approval-policy approve "运行所有测试并修复失败的"
(2) 管道输入
BASH
# 从 stdin 读取
echo "解释这段代码" | codex --quiet
# 从文件读取
cat error.log | codex --quiet "分析错误根因"
# 结合 git
git diff main | codex --quiet "审查变更"
(3) 退出码
| 退出码 | 说明 |
|---|---|
| 0 | 任务成功完成 |
| 1 | 任务失败 |
| 2 | 参数错误 |
| 130 | 用户中断(Ctrl+C) |
▶ 示例 1: Alice 的自动化脚本
BASH
#!/bin/bash
# auto-fix.sh - 每日自动修复脚本
# 拉取最新代码
git pull origin main
# 修复 lint
codex --full-auto --quiet "修复所有 lint 错误"
# 生成缺失测试
codex --full-auto --quiet "为没有测试的源文件生成单元测试"
# 运行测试
npm test
if [ $? -eq 0 ]; then
git add -A
git commit -m "chore: daily auto-fix"
git push origin main
echo "✅ Auto-fix completed and pushed"
else
echo "❌ Tests failed, skipping push"
fi
3. Windows 环境
(1) 安装方式
POWERSHELL
# 方式一:npm(需要 Node.js)
npm install -g @openai/codex
# 方式二:WSL(推荐)
wsl
# 在 WSL 中按 Linux 方式安装
(2) PowerShell 配置
POWERSHELL
# 设置 API Key
$env:OPENAI_API_KEY = "sk-你的密钥"
# 永久配置
[System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "sk-你的密钥", "User")
# 设置 Base URL(DeepSeek)
$env:OPENAI_BASE_URL = "https://api.deepseek.com"
(3) 常见问题
| 问题 | 解决方案 |
|---|---|
| 路径分隔符不同 | 使用 path.join() 或正斜杠 |
| 中文编码问题 | 设置 $OutputEncoding = [System.Text.Encoding]::UTF8 |
| 权限受限 | 以管理员运行 PowerShell |
| 命令不存在 | 检查 PATH 环境变量 |
(4) WSL 推荐
BASH
# 在 WSL 中安装和使用 Codex
sudo npm install -g @openai/codex
export OPENAI_API_KEY="sk-xxx"
codex
4. Git Worktrees 集成
(1) 什么是 Worktrees
Git Worktrees 让你在同一个仓库中同时检出多个分支到不同目录,适合并行开发。
BASH
# 创建 worktree
git worktree add ../feature-auth feature/auth
git worktree add ../feature-payment feature/payment
(2) Codex + Worktrees
每个 Worktree 可以运行独立的 Codex 实例:
BASH
# Terminal 1: 在 auth feature 上工作
cd ../feature-auth
codex "实现 JWT 认证"
# Terminal 2: 在 payment feature 上工作
cd ../feature-payment
codex "添加 Stripe 支付"
▶ 示例 2: Bob 的并行开发
BASH
# Bob 用 Worktrees 并行开发
git worktree add ../fix-bug-123 fix/bug-123
git worktree add ../new-feature new/feature-x
# Terminal 1
cd ../fix-bug-123
codex --full-auto "修复 Issue #123"
# Terminal 2
cd ../new-feature
codex "实现功能 X"
# 两个任务并行执行,互不影响
(3) Worktrees 清理
BASH
# 查看所有 worktrees
git worktree list
# 删除 worktree
git worktree remove ../feature-auth
# 清理失效 worktree
git worktree prune
5. 跨平台注意事项
| 注意点 | macOS/Linux | Windows |
|---|---|---|
| 路径分隔符 | / |
\(建议用 /) |
| 换行符 | LF | CRLF |
| 环境变量 | export KEY=value |
$env:KEY = "value" |
| Shell | bash/zsh | PowerShell/WSL |
| 权限 | chmod |
属性对话框 |
❓ 常见问题
Q 非交互模式能用 Computer Use 吗?
A 不能。Computer Use 需要图形界面和交互确认,非交互模式不支持。
Q Windows 原生和 WSL 哪个更好?
A WSL 更好。Codex CLI 在 Linux 环境下兼容性最好,WSL 提供原生 Linux 体验。
Q Worktrees 中的 Codex 实例会冲突吗?
A 不会。每个 Worktree 是独立目录,Codex 实例互不干扰。但不要在两个实例中修改同一分支的同一文件。
Q 非交互模式如何处理确认请求?
A 需要
--approval-policy approve 或 --full-auto,否则会卡住。建议只读操作用 deny,需要修改用 approve。Q Windows 上的中文乱码怎么办?
A 设置 PowerShell 编码为 UTF-8:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8。📖 小节
- 非交互模式:适合脚本集成和自动化
- Windows:推荐 WSL,PowerShell 需配置编码
- Git Worktrees:多分支并行开发,每个 Worktree 独立 Codex
- 跨平台:注意路径、换行符、环境变量差异
📝 作业
- 基础题(难度⭐):用非交互模式执行一次代码审查,输出到文件。
- 进阶题(难度⭐⭐):编写一个自动化脚本,用非交互模式完成 lint 修复 + 测试 + 提交。
- 挑战题(难度⭐⭐⭐):用 Git Worktrees 设置并行开发环境,两个 Codex 实例同时工作在不同分支上。