Codex App 深度指南:多智能体的指挥中心
Codex App 是专为多智能体并行工作设计的桌面客户端。与 CLI 的单线程交互不同,App 让你在一个窗口内同时管理多个项目、运行多条线程、配置后台自动化,并通过内置 Git 工具完成从编码到 PR 的完整闭环。
本篇将全面拆解 App 的每一项核心功能,帮助你把 Codex 从 "一个聊天窗口" 升级为 "编码团队的指挥中心"。
一、多项目管理:一个窗口,多个 Codebase
Codex App 支持在同一个窗口内添加多个项目(Project),每个项目对应一个代码仓库或目录。
如果你在一个 monorepo 中工作,建议将不同的 app / package 拆分为独立项目,这样每个项目的沙箱只包含相关文件,上下文更精准、执行更高效。
项目管理要点
| 操作 | 说明 |
|---|---|
| 添加项目 | 侧边栏点击 + 或 Cmd+O 打开文件夹 |
| 切换项目 | 侧边栏点击项目名称即可切换 |
| 项目隔离 | 每个项目拥有独立的线程列表、沙箱设置、Local Environment 配置 |
| Skills 共享 | 侧边栏 Skills 面板可浏览团队在不同项目中创建的技能 |
如果你用过 CLI,可以这样类比:一个 App 项目 ≈ 在某个目录下启动一次 codex 会话,但 App 允许你同时打开多个这样的"会话"。
二、线程模式:Local / Worktree / Cloud
每条线程(Thread)在创建时需要选择运行模式,这是 App 最核心的工作流决策之一:
| 模式 | 运行位置 | 适用场景 | 是否隔离 |
|---|---|---|---|
| Local | 当前项目目录(本地) | 需要直接修改工作区文件;前台交互任务 | ❌ 直接修改当前文件 |
| Worktree | Git Worktree 副本(本地) | 需要隔离的并行任务;后台探索性工作 | ✅ 独立工作树 |
| Cloud | 远程云环境 | 需要特定云端配置;不想占用本地资源 | ✅ 完全独立 |
模式选择决策树
Local 是"前台",Worktree 是"后台"。当你想一边自己编码一边让 Codex 在旁边跑任务时,永远选 Worktree。
三、Worktree 工作流:Git Worktree 隔离并行任务
Worktree 是 App 实现多智能体并行的基石。它利用 Git 的 worktree 机制为每条线程创建一份独立的文件副本,所有变更互不干扰。
3.1 Worktree 基本概念
| 术语 | 含义 |
|---|---|
| Local checkout | 你原始的本地仓库,即 git clone 创建的那个目录 |
| Worktree | 从 Local checkout 创建的 Git worktree,共享 .git 元数据但拥有独立文件 |
| Handoff | 在 Local 和 Worktree 之间移动线程的操作,Codex 自动处理底层 Git 操作 |
| Codex-managed worktree | Codex 自动创建的临时 worktree,默认保留最近 15 个 |
| Permanent worktree | 通过项目三点菜单手动创建的长期 worktree,不会被自动删除 |
3.2 创建 Worktree 线程
在 Composer 下方选择 Worktree
可选 main、feature 分支,甚至包含未提交变更的当前分支
为 worktree 自动运行依赖安装等脚本
Codex 创建 worktree 并以 detached HEAD 状态开始工作
3.3 两种 Worktree 工作路径
路径 A:完全在 Worktree 中完成
适合 worktree 中已安装好依赖(通过 Local Environment setup script),可以直接验证和提交:
- Codex 在 worktree 中完成编码
- 点击 Create branch here 将 detached HEAD 转为命名分支
- Commit → Push → 在 App 内直接创建 PR
- 使用 Open 按钮在 IDE 中打开 worktree 目录进一步检查
路径 B:Handoff 回 Local
适合需要在你日常的 IDE 环境和开发服务器中验证变更:
- Codex 在 worktree 中完成编码
- 点击线程头部的 Hand off → 移动到 Local
- 在你的本地 IDE 和开发环境中审查、测试
- 如果需要 Codex 继续后台工作,可以再次 Hand off 回 Worktree
Git 不允许同一分支同时在两个 worktree 中 checkout。如果你在 worktree 上创建了 feature/a 分支,就无法在 Local 中
checkout 同一分支。解决方案是使用 Handoff 而非手动 git checkout。
3.4 何时用 Worktree vs Local
| 场景 | 推荐模式 | 原因 |
|---|---|---|
| 让 Codex 修 bug,自己同时写另一个功能 | Worktree | 避免文件冲突 |
| 同时跑 3 条线程探索不同技术方案 | Worktree | 每条线程独立隔离 |
| 需要实时看到文件变更并手动调试 | Local | 直接修改可立即反映 |
| 快速原型:就改几行代码 | Local | 无需隔离开销 |
| 自动化(Automations)任务 | Worktree | 后台运行不干扰工作区 |
3.5 多智能体并行编码最佳实践
- 每条线程一个聚焦任务 — 不要在一条线程里塞多个不相关的需求
- 为并行线程选择 Worktree — 确保互不干扰
- 善用 Local Environment — 为 worktree 配置 setup script,确保依赖自动安装
- 定期清理 — Archive 完成的线程,Codex 会自动清理对应的 worktree
- 用 Skills 统一规范 — 多条线程引用相同的 Skill 可确保编码风格一致
3.6 Worktree 磁盘管理
Worktree 默认存放在 $CODEX_HOME/worktrees,每个 worktree 包含完整的文件副本和依赖,会占用不少磁盘空间。
- 自动清理:Codex 默认保留最近 15 个 Codex-managed worktree
- 不会被自动删除的:pinned 线程的 worktree、运行中的线程、permanent worktree
- 快照恢复:删除前 Codex 会保存快照,重新打开线程时可选择恢复
- 调整上限:在 Settings 中修改保留数量或关闭自动删除
四、内置 Git 工具:从 Diff 到 PR
App 内置了完整的 Git 工作流,无需切换到终端或外部 Git 客户端。
4.1 Diff 面板
通过 Cmd+Option+B 切换 Diff 面板,它反映的是 Git 仓库的真实状态——不仅是 Codex 的变更,还包括你自己手动修改的文件和所有未提交变更。
查看范围可切换为:
- Uncommitted changes(默认)— 所有未提交的变更
- All branch changes — 与 base branch 的完整 diff
- Last turn changes — 仅最近一轮 Codex 的变更
- Unstaged / Staged — 在 Local 模式下可切换
4.2 内联评论(Inline Comments)
直接在 Diff 中对特定行留下反馈,Codex 能精准理解上下文:
- 打开 Review 面板
- 悬停在目标行 → 点击出现的 + 按钮
- 写下你的修改意见并提交
- 完成所有评论后,回到线程发送消息(如 "Address the inline comments")
4.3 Stage / Revert
在 Review 面板中可以在三个粒度上操作:
| 粒度 | 操作 |
|---|---|
| 整个 Diff | 顶部 Stage all / Revert all |
| 单个文件 | 文件级 Stage / Unstage / Revert |
| 单个 Hunk | 代码块级 Stage / Unstage / Revert |
4.4 Commit、Push 与创建 PR
对于 Local 和 Worktree 线程,你可以直接在 App 内:
- Commit 已暂存的变更
- Push 到远程仓库
- Create Pull Request — 直接在 GitHub 上创建 PR
在 Settings → Git 中,你可以自定义分支命名规则、是否允许 force push,以及让 Codex 自动生成 commit message 和 PR description 的 prompt。
五、Automations(自动化)
Automations 是 App 独有的功能——让 Codex 在后台定时或按触发条件自动执行任务,结果放入 Inbox 供你审阅。
5.1 工作原理
- 自动化在 Codex App 运行时后台执行(App 需要保持打开)
- 对于 Git 仓库,可选择在 Local 或 Worktree 中运行
- 结果分为两类:有发现(进入 Triage 收件箱)或无发现(自动归档)
- 可自定义模型和推理力度(reasoning effort),或使用默认值
5.2 自动化 + Skills 组合
使用 $skill-name 语法在自动化中显式调用 Skill:
Run $recent-code-bugfix on recent commits and report findings.这使得自动化可以复用团队共享的 Skill 定义,保持一致性。
5.3 常见自动化场景
| 场景 | 自动化 Prompt 示例 | 推荐频率 |
|---|---|---|
| 近期 Bug 自动修复 | 结合 $recent-code-bugfix skill 查找本人近一周引入的 bug | 每日一次 |
| 代码库变更周报 | 总结过去一周的主要变更、新增 API、破坏性改动 | 每周一次 |
| 自动创建新 Skills | 分析代码库并生成有用的新 Skill 定义 | 按需 |
| CI/CD 失败分析 | 检查最近的 CI 失败日志,分析根因并尝试修复 | 每次构建失败后 |
5.4 自动化安全模型
自动化使用你的默认沙箱设置,需要特别注意权限:
| 沙箱模式 | 自动化行为 | 建议 |
|---|---|---|
| Read-only | 修改文件、网络访问等操作会失败 | 适合纯分析/报告类自动化 |
| Workspace-write | 可修改工作区内文件,外部访问仍受限 | ✅ 推荐,用 rules 白名单放行特定命令 |
| Full access | Codex 可修改文件、运行任意命令、访问网络 | ⚠️ 风险较高,建议降级为 workspace-write |
自动化默认使用 approval_policy = "never"(除非管理员通过 requirements.toml 禁止)。
5.5 测试与维护建议
- 先手动测试 — 在普通线程中运行自动化的 Prompt,确认效果
- 审查前几次输出 — 刚调度的自动化,前几次运行要仔细检查
- 及时归档 — Archive 不需要的运行记录,若使用 Worktree 模式会同时清理磁盘
- 避免过高频率 — 频繁调度 + Worktree 模式 = 大量磁盘占用
六、Review 模式:App 内的代码审查
App 的 Review 功能基于 Git 仓库,提供可视化的代码审查体验。
6.1 触发方式
- 在 Composer 中输入
/review - 或直接打开 Review 面板查看 Diff
6.2 审查范围
| 范围 | 说明 |
|---|---|
| Uncommitted changes | 默认视图,显示所有未提交变更 |
| All branch changes | 与 base branch 的完整差异 |
| Last turn changes | 仅 Codex 最近一轮的变更 |
| Unstaged / Staged | Local 模式下可切换查看 |
6.3 审查工作流
/review触发 Codex 自动审查代码- Codex 的审查意见以内联评论形式显示在 Diff 面板中
- 你可以对具体行添加自己的评论,补充修改要求
- 回到线程发送 "Address the inline comments" 让 Codex 修改
- 满意后 Stage → Commit → Push → Create PR
点击文件名可在外部编辑器中打开文件;按住 Cmd 点击具体行号可跳转到编辑器中的对应行。默认编辑器可在 Settings 中配置。
七、Local Environments:环境配置即代码
Local Environments 解决了一个关键问题:Worktree 是全新目录,缺少 node_modules 等未被 Git 追踪的依赖。
7.1 Setup Scripts(启动脚本)
当 Codex 创建新 Worktree 时自动执行的脚本,用于安装依赖和构建:
npm install
npm run build- 配置路径:项目根目录
.codex/文件夹 - 可区分平台:分别为 macOS / Windows / Linux 定义不同脚本
- 可提交到 Git:团队成员共享相同的环境配置
7.2 Actions(快捷操作)
Actions 定义常用任务,显示为 App 顶栏的快捷按钮:
| Action 名称 | 脚本内容 | 图标 |
|---|---|---|
| Run Dev Server | npm start | ▶️ |
| Run Tests | npm test | 🧪 |
| Lint | npm run lint | 🔍 |
| Build | npm run build | 🔨 |
- Actions 在 App 的集成终端中执行
- 同样支持平台特定脚本
- 每个 Action 可选择关联图标以便识别
八、Commands:键盘快捷键与斜杠命令
8.1 键盘快捷键
| 分类 | 操作 | 快捷键(macOS) |
|---|---|---|
| 通用 | 命令面板 | Cmd+Shift+P 或 Cmd+K |
| 通用 | 设置 | Cmd+, |
| 通用 | 打开文件夹 | Cmd+O |
| 通用 | 切换侧边栏 | Cmd+B |
| 通用 | 切换 Diff 面板 | Cmd+Option+B |
| 通用 | 切换终端 | Cmd+J |
| 通用 | 清空终端 | Ctrl+L |
| 通用 | 放大 / 缩小字体 | Cmd+= / Cmd+- |
| 线程 | 新建线程 | Cmd+N 或 Cmd+Shift+O |
| 线程 | 线程内搜索 | Cmd+F |
| 线程 | 上一个 / 下一个线程 | Cmd+Shift+[ / Cmd+Shift+] |
| 线程 | 语音输入 | Ctrl+M |
注意:Cmd+K 在 App 中打开的是命令面板而非清空终端。清空终端请使用 Ctrl+L。
8.2 Slash Commands
在 Composer 中输入 / 调出命令列表:
| 命令 | 功能 |
|---|---|
/review | 启动代码审查,审查未提交变更或对比 base branch |
/plan-mode | 切换计划模式,用于多步骤规划 |
/status | 显示线程 ID、上下文使用量和速率限制 |
/mcp | 查看已连接的 MCP 服务器状态 |
/feedback | 打开反馈对话框,可附带日志提交 |
此外,已启用的 Skills 也会出现在斜杠命令列表中。你也可以用 $skill-name 语法直接调用 Skill。
8.3 Deeplinks
Codex App 注册了 codex:// URL scheme,支持从外部直接打开特定功能:
| Deeplink | 打开内容 |
|---|---|
codex://settings | 设置面板 |
codex://skills | Skills 面板 |
codex://automations | 自动化创建模式 |
codex://threads/<uuid> | 指定线程 |
codex://new?prompt=...&path=... | 新线程(可预填 prompt 和目录) |
九、集成终端、浮动窗口、语音输入与 IDE 同步
9.1 集成终端
每条线程包含一个内置终端,作用域限定在当前项目或 Worktree 目录:
- 切换:
Cmd+J或顶栏终端图标 - 清空:
Ctrl+L - Codex 可读取终端输出 — 它能查看运行中的 dev server 状态或失败的构建日志
常见用法:
git status
git pull --rebase
npm test
npm run lint9.2 浮动窗口(Pop-out Window)
将活跃的线程弹出为独立浮动窗口,可以拖到屏幕任意位置:
- 非常适合前端开发:浮动窗口放在浏览器旁边,实时迭代
- 支持 Always on top — 始终置顶显示
9.3 语音输入
按住 Ctrl+M(Composer 可见时)开始语音输入,松开后 Codex 自动转录。你可以编辑转录文本后再发送。
9.4 IDE 同步
如果你同时安装了 Codex IDE Extension,且 App 和 IDE 在同一个项目中:
- 自动同步 — 两端自动建立连接
- Auto context — App 自动追踪你在 IDE 中正在查看的文件,可以用 "What's this file about?" 这样的模糊引用
- 线程互通 — App 中的线程在 IDE Extension 中可见,反之亦然
- 开关控制 — 如果不确定 App 是否包含了 IDE 上下文,可以关闭 Auto context 后重新提问对比结果
十、设置详解
通过 Cmd+, 打开 Settings 面板。
10.1 设置分类总览
| 设置分类 | 关键配置项 |
|---|---|
| General | 文件打开方式、命令输出长度、Cmd+Enter 多行模式、防休眠 |
| Notifications | 任务完成通知时机:从不 / 后台时 / 总是 |
| Agent Configuration | 审批策略、沙箱模式 — 与 CLI / IDE Extension 共享 config.toml |
| Appearance | 主题选择、强调色 / 背景色 / 前景色、UI 字体 / 代码字体、可分享自定义主题 |
| Git | 分支命名规则、force push 开关、commit message / PR description prompt |
| Integrations & MCP | MCP 服务器管理(推荐服务器 / 自定义服务器),配置共享至 CLI 和 IDE |
| Personalization | 人格选择(Friendly / Pragmatic / None)、自定义指令(编辑 AGENTS.md) |
| Archived Threads | 已归档线程列表,可 Unarchive 恢复 |
10.2 审批与沙箱
审批(Approvals) 控制 Codex 何时暂停等待你的许可。你会看到 "approve once" 或 "approve for this session" 等选项——不确定时,选最窄的范围。
沙箱(Sandbox) 控制 Codex 可以访问哪些目录和网络。默认限定在当前项目范围内。如果任务需要跨仓库,建议开多个项目或使用 Worktree,而非放开沙箱。
10.3 防休眠
由于 Codex 任务可能运行较长时间,Settings 中提供了 "Prevent sleep while running" 开关——启用后 App 会阻止电脑进入休眠状态,确保后台线程和自动化不被中断。
十一、其他实用功能
图片输入
- 拖拽图片到 Composer 作为上下文(按住
Shift拖入) - 可以让 Codex 查看系统截图——结合截图工具,Codex 能验证前端 UI 的输出效果
Web 搜索
Codex 内置 Web 搜索工具:
- Local 任务:默认使用搜索缓存
- Full access 沙箱:默认使用实时搜索结果
- 可在
config.toml中禁用或切换搜索模式
MCP 支持
App、CLI、IDE Extension 共享 MCP 配置。在任一端配置的 MCP 服务器自动对其他端生效(配置存储在 config.toml 中)。
Windows 原生沙箱
在 Windows 上,Codex 可以原生运行在 PowerShell 中,使用 Windows 原生沙箱,无需 WSL 或虚拟机。
十二、实战工作流:从 Issue 到 PR 的完整闭环
以下是一个典型的多智能体并行工作流,展示如何利用 App 的各项功能完成一个真实的开发任务。
场景:同时修复 Bug 和开发新功能
- 线程 A(修 Bug):选择 Worktree 模式,基于
main分支 - 线程 B(新功能):选择 Worktree 模式,基于
main分支
两条线程独立运行,互不干扰。
线程 A 的 Prompt:
Fix the authentication timeout bug in src/auth/session.ts.
The session expires after 5 minutes instead of 30.
Run the auth tests to verify the fix.线程 B 的 Prompt:
Implement the user profile avatar upload feature.
Add a new endpoint POST /api/users/avatar.
Include file validation (max 5MB, jpg/png only).切换到线程 A,打开 Diff 面板审查修复:
- 查看变更 → 对不满意的行添加内联评论
- 回到 Composer 发送 "Address the inline comments and keep the fix minimal"
- Codex 修改后再次审查
同样切换到线程 B 审查新功能代码。
如果需要在你的开发环境中手动测试:
- 在线程 A 中点击 Hand off → Local
- 在集成终端中运行
npm test - 验证通过后,继续下一步
- Stage 满意的变更 → Commit → Push
- 在 App 内直接 Create Pull Request
- 线程 B 重复同样的流程
两个 PR 独立提交,互不影响。
十三、App 功能速查
- 多项目 → 一个窗口管理多个 Codebase,侧边栏切换
- 三种线程模式 → Local(前台)/ Worktree(后台隔离)/ Cloud(远程)
- Worktree → Git Worktree 隔离 + Handoff 双向切换
- 内置 Git → Diff 面板 + 内联评论 + Stage/Revert + Commit/Push/PR
- Automations → 后台定时任务 + Skills 组合 + Triage 收件箱
- Review →
/review自动审查 + 内联评论反馈 - Local Environments → Setup scripts + Actions 快捷按钮
- Commands → 键盘快捷键 + Slash 命令 + Deeplinks
- 集成终端 →
Cmd+J,Codex 可读取输出 - 浮动窗口 → Pop-out + Always on top
- 语音输入 →
Ctrl+M按住说话 - IDE 同步 → 自动同步 + Auto context + 线程互通
- 设置 → 审批 / 沙箱 / 通知 / 防休眠 / 主题 / Git / MCP