用途
四种入口不是四套互相割裂的产品,而是同一个 Codex 代理的不同工作面:IDE 适合贴着代码探索和定位,CLI 适合可重复的命令与自动化,桌面 App 适合并行线程和可视化审查,Cloud 适合隔离、长时间运行和不占本机的任务。本页解决的不是“哪个入口最强”,而是“当前这件事应该在哪里开始、在哪里交接、由谁验收”。 看完本页,你应当能够:- 用一棵决策树在几分钟内选定入口;
- 比较四种入口的上下文、权限、网络、审查、并行和成本;
- 按“IDE 探索 -> CLI
exec验证 -> Desktop/Cloud 协同”的方式组织一项真实任务; - 为每次交接留下分支、diff、命令和验收证据;
- 在权限、密钥、网络和并行冲突出现时及时停下并恢复。
本页讨论的是工作方法,不把模型名称、套餐额度或界面按钮写死。命令和功能可能随版本变化,执行前以本地codex --help、对应子命令的--help、入口中的实际选项和官方文档为准。
先记住三个边界
入口改变的是工作面
IDE、CLI、桌面 App 的本地任务通常读取本机项目、使用本机工具链,并遵循项目中的AGENTS.md 与本地配置。它们的主要差别是操作界面和任务编排方式:IDE 把编辑器上下文放在手边,CLI 把命令和脚本放在手边,桌面 App 把线程、Worktree 和 Review 放在手边。
Cloud 则是在 OpenAI 的隔离环境里拉取 GitHub 仓库执行。它不自动拥有你本机的未提交文件、本机 MCP、本机缓存或本机环境变量;需要通过仓库、云端环境设置和明确的任务描述提供上下文。
入口不等于权限
“在 IDE 里”不代表一定只读,“在 Cloud 里”也不代表一定安全。能否修改文件、能否执行命令、能否联网,取决于当前的审批、沙箱和环境设置。任何入口都要先确认:入口不等于验收
Codex 的总结不是验收证据。验收至少包括目标文件、实际 diff、测试或构建退出码,以及没有越过授权边界。选择更方便的入口,不应减少人工审查;相反,任务越长、并行越多、权限越高,越要把交付证据写清楚。入口选择决策树
按下面的顺序回答问题。遇到“是”就沿箭头继续;没有特别理由时,从最靠近代码的入口开始。决策树的快速解释
六个维度的比较
总表
上下文:相关比更多重要
IDE 的优势是“我指给你看”:选中函数、引用@file、打开相关文件,适合从症状定位到实现。CLI 的优势是“命令就是记录”:可以先运行 git status、测试和搜索,把输出作为后续证据。Desktop App 的上下文以线程和项目为中心,适合保存多个任务的来回讨论。Cloud 只有它实际拉取到的仓库和配置,不能假定它知道本机聊天记录或未提交改动。
建议采用“上下文最小充分集”:目标文件、接口定义、相关测试、报错输出和约束都要给;无关目录、密钥、整库历史和大段日志不要一股脑塞进去。任务很长时使用 /compact,任务换题时新开线程。
权限:先收紧,再逐步放开
不要把
--yolo 或 Full Access 当作“速度开关”。它们会削弱重要的防线,只能在外部隔离、数据可丢失且任务边界明确的环境中临时使用。任务结束后恢复默认权限,并再次检查 diff。
网络:本地和 Cloud 是两套网络
本地入口访问的是你的网络,可能需要代理、VPN、内网权限或本地服务。Cloud 任务访问的是云端网络;浏览器能打开页面,不代表云端容器就能访问某个域名。 Cloud 的常见边界是:设置脚本阶段为安装依赖联网,Agent 阶段默认断网。确实需要访问外部服务时,从最小域名集合开始,并优先限制为GET、HEAD、OPTIONS。不要因为安装依赖失败就直接选择 unrestricted;先确认缺少的域名、脚本和版本。
把 API key、密码和内部令牌放进 Secrets,而不是普通环境变量或仓库文件。即使任务看似只读,也要把 Issue、网页、README、日志和依赖输出视为可能包含提示注入的非可信内容。
审查:入口越自动,交付越要可见
IDE 适合边看边应用;CLI 适合用/diff 和 /review 复核;Desktop App 适合在文件、hunk 和行级批注之间做选择;Cloud 适合先看任务 diff,再决定是否提 PR。四种入口都应保留以下证据:
并行:隔离比“同时打开几个窗口”重要
同一目录下同时让两个代理写文件,可能出现覆盖、测试结果错位和难以解释的 diff。需要并行时:- Desktop App 使用 Worktree,让每个线程拥有独立副本;
- CLI 用多个 Git Worktree 和多个终端;
- Cloud 让每个任务使用独立容器和分支;
- 不要让两个任务同时负责同一批文件;
- 合并前分别跑验证,合并后再跑一次集成验证。
.gitignore 中的 node_modules、.env 等内容。新 Worktree 需要设置脚本、依赖安装和非敏感配置;敏感配置应通过安全的本地或云端环境提供。
成本:算总任务成本,不只看单次响应
一次响应便宜,不代表整个任务便宜。返工、重复读库、失败重跑、并行重复安装和过高推理强度都会增加总成本。可以按以下顺序控制:- 先写清目标、范围、约束和验收,减少返工;
- 用
@file、选中代码和测试输出缩小上下文; - 简单任务用较低推理强度,复杂任务再提高;
- 长任务分成可独立验收的阶段;
- 只有值得后台运行的任务才放 Cloud;
- 并行前确认任务确实互不冲突;
- 用
/status或入口中的用量信息观察消耗,不把快速模式默认打开。
推荐协同工作流
下面是一条适合中等规模功能、缺陷修复和前端改动的默认流程:先在 IDE 探索,转到 CLIexec 做可重复验证,再按任务性质交给 Desktop App 或 Cloud 管理并行和长任务。它不是强制顺序;关键是每次交接都带着可验证的状态。
阶段一:IDE 探索与范围确认
在 IDE 中打开仓库,先不要修改。确认当前分支和工作区状态,在 Codex 中使用Chat 或只读模式,提供四段信息:
阶段二:IDE 小范围实现
确认方案后切换到日常 Agent 模式,只把必要文件加入上下文。让 Codex 先修改测试或实现,再说明“不要动哪些文件”。例如:阶段三:CLI exec 做可重复验证
实现后切到仓库根目录,用 CLI 执行不需要持续对话的检查。先观察当前状态:
exec 复核改动:
--json;不要假定不同版本的事件字段完全一致。验证完成后记录命令和退出码。
阶段三验收: git diff --check 通过;目标测试和必要检查通过;只读审查没有高严重度问题;输出已保存或可复现。
阶段四:交给 Desktop App 管理并行和审阅
当任务需要多个独立方向,打开 Desktop App,为每条线建立 Worktree。例如:
不要使用三个 Local 线程共享同一工作目录。每个线程启动时说明基线、非目标和验证命令。完成后在 Review 面板中按文件和 hunk 审查,必要时添加行级批注,让原线程小范围修正。
Desktop App 适合把“等待、切换、审查、交接”集中管理,但它不会替你解决合并冲突。每个 Worktree 独立通过测试后,才允许按顺序合并或 Handoff 回主工作目录。
阶段五:把长任务交给 Cloud
以下任务满足条件时,才适合 Cloud:- 仓库已经在 GitHub,权限和可见范围已确认;
- 任务不依赖本机未提交文件、内网服务或私有本地工具;
- 任务可以用明确的 diff 和测试结果验收;
- 允许在云端拉取代码,并接受云端运行时间与用量成本。
三个实际案例
案例一:陌生前端项目的空白页
问题: 接手一个没有文档的 React 项目,点击登录后偶发白屏。 选择: 先用 IDE。原因是需要打开组件、选中调用链并观察路由文件;此时上下文相关性比并行更重要。 步骤:- IDE
Chat模式读取入口组件、登录请求、路由和错误边界; - 要求输出调用链、复现条件和最小修改计划;
- 切到 Agent,只修改相关组件和回归测试;
- 在 IDE Review 中确认没有顺手重构状态管理;
- 用 CLI
exec以只读方式审查 diff,并运行前端测试和构建; - 若需要另一条线补测试,可在 Desktop App 的 Worktree 中单独完成。
案例二:每天审查提交并生成报告
问题: 每天早上审查前一天的提交,输出潜在 bug 和测试缺口。 选择: CLIexec。原因是任务输入和输出稳定、需要脚本化、可以用退出码判断失败,不需要持续的图形交互。
示例:
案例三:大仓库的依赖升级和长时间测试
问题: 升级一个 GitHub 仓库的依赖,安装、全量测试和修复可能需要很久,本机还要继续工作。 选择: 先在 IDE 或 CLI 确认升级范围和本地差异,再用 Cloud 执行隔离任务;若需要同时尝试两个版本,则为每个版本建立独立 Cloud 任务或 Desktop Worktree。 步骤:- 本地检查
AGENTS.md、包管理器、锁文件和测试命令; - 在 IDE
Chat中要求列出直接依赖、间接影响和回滚方式; - 把明确的分支、版本范围、禁止修改项写进 Cloud 任务;
- 云端设置脚本只负责安装依赖,Agent 网络保持关闭,除非明确需要访问白名单域名;
- 云端结束后审查锁文件、生产配置和测试日志;
- 通过 PR 交给人工 Review,合并前在 CI 再跑一次。
export 不会自动跨到 Agent 阶段;缓存导致旧依赖被误判为新结果。处理方式是固定运行时、把变量配置到正确的环境设置、必要时重置缓存,并在 CI 复验。
交接协议:换入口前写清四件事
入口之间切换时,不要只复制一句“继续做”。至少交接下面四项:
推荐交接模板:
验收清单
选择是否合理
- 入口选择由任务的上下文和运行位置决定,而不是由个人偏好决定;
- 需要本机文件或服务的任务没有误交给 Cloud;
- 需要脚本、SSH、CI 或机器可读输出的任务使用 CLI;
- 需要编辑器上下文的探索任务先在 IDE 完成;
- 需要并行时使用 Worktree 或独立云端容器;
- 成本、运行时间和用量边界已确认。
任务是否可交付
- 分支、commit、仓库路径和账号正确;
- diff 只包含目标文件和必要的测试/配置;
-
git diff --check通过; - 格式化、类型检查、测试或构建命令有实际结果;
- 失败检查没有被忽略或用“应该没问题”替代;
- 未提交、未推送、未创建 PR 的约束得到遵守;
- 关键边界、错误路径、权限拒绝和回滚方式已检查。
Cloud 额外验收
- GitHub 仓库和授权范围正确;
- 云端运行时、设置脚本和锁文件一致;
- Secrets 没有写入仓库、日志或普通环境变量;
- Agent 网络保持关闭,或白名单和 HTTP 方法足够具体;
- 云端 diff、测试日志和 PR 分支可追溯;
- 合并前仍在 CI 或本地干净环境复验。
风险处理与回滚
发现改错了
停止继续派发任务,保存当前 diff、错误输出和线程 ID。先判断改动里是否混入人工工作;若没有混入,可对明确的单个文件使用git restore -- <文件>,否则从补丁或独立 Worktree 恢复。不要用破坏性命令覆盖同事的未提交改动。
发现并行冲突
暂停相关线程,分别导出两个 Worktree 的 diff,确定哪条线拥有某个文件。不要让 Codex 在冲突未解释前自动合并。解决后先在合并结果上运行针对性测试,再运行完整检查。发现权限或网络过宽
立即停止任务,撤销不必要的批准,关闭 Full Access 或 unrestricted 网络。检查命令历史、输出、日志和生成文件中是否出现密钥或客户数据;必要时轮换已暴露凭据。后续任务改用只读、最小写入目录和明确白名单。Cloud 结果不可复现
保留任务 ID、仓库 commit、环境版本、设置脚本和测试日志。不要直接重跑很多次碰运气;先比较缓存、依赖锁文件、环境变量和网络白名单。确认差异后,再新建独立任务或重置缓存,并把原因写入 PR 说明。最小可执行流程
不确定从哪里开始时,照这个顺序走:最重要的判断不是“我喜欢哪个入口”,而是“这个入口能否提供任务所需的上下文,同时把权限、并行和验收保持在可控范围内”。先用 IDE 把问题说清楚,再用 CLI 把验证变成可重复证据,最后按运行时间和并行需要选择 Desktop App 或 Cloud,通常能得到稳定且可恢复的协作结果。参考资料:参考/codex/01-what-is-codex.md、07-desktop-app.md、08-cli.md、09-ide.md、10-cloud.md、31-speed.md。