本页目标
桌面 App 的价值不只是把终端换成窗口,而是把多个 Codex 任务放在一个可观察、可审阅、可恢复的工作台里。本页围绕一条完整链路展开:先确认项目和线程,再选择运行位置;执行中检查权限;完成后审阅 diff、运行验证;最后处理分支、恢复和清理。 本页使用三个核心概念:- 项目(Project):一个本地代码目录或 Git 仓库,决定 Codex 的工作范围。
- 线程(Thread):一次有独立上下文的任务会话。一个线程应尽量只负责一个可验收目标。
- 运行位置(Environment):任务实际执行的地方,常见选项是
Local、Worktree和Cloud。
一、开始前检查
1. 确认项目目录和 Git 状态
在系统终端进入项目根目录,执行:git reset --hard、批量删除或覆盖同事的修改。
2. 读取项目规则
在 App 中添加项目后,先让 Codex 只读检查:3. 写清任务边界
建议每个线程都包含目标、范围、约束、验收和失败处理:二、项目与线程
项目不是普通聊天
绑定项目的线程拥有明确工作目录,可以读取仓库、运行项目命令并产生代码改动。没有绑定项目的普通聊天适合讨论概念或整理方案,不应当用来修改仓库。 添加项目时选择真实的项目根目录,不要选择包含多个无关仓库的上级目录。新线程打开后,应能看到项目路径、当前运行位置和分支信息。 常见故障处理:- 项目列表为空:检查登录账号、目录权限和目录是否存在;
- 只能聊天不能改代码:确认线程绑定项目,并检查是否为只读或 Cloud 任务;
- 显示路径不对:停止线程,重新选择项目根目录,不要要求代理自行猜目录。
一个线程一个目标
以下任务适合拆成独立线程:修一个缺陷、补一个模块的测试、做一次小范围重构、只读审查分支、生成定期摘要。需求澄清、架构重构、依赖升级和发布不应混成一个没有边界的线程。 并行时遵守三条规则:- 只读任务可以共享项目,但避免同时写入同一缓存或启动同一端口;
- 需要修改同一仓库的任务,优先使用
Worktree; - 有依赖关系的任务先完成上游并审阅,再创建下游线程。
Local 线程同时修改同一目录,会产生覆盖、混合 diff 和不可解释的测试结果。
三、Local、Worktree、Cloud
选择前先问:是否要直接修改当前目录,是否需要与其他任务隔离,是否需要脱离本机运行。
1. Local:直接改当前目录
适合工作区已确认、任务很小、需要马上在本地 IDE 或开发服务器中查看结果的情况。 操作步骤:- 打开正确项目并新建线程;
- 确认路径、分支和已有改动;
- 选择
Local; - 先发送只读计划;
- 确认计划后再允许写入;
- 完成后立即打开 Review 查看全量改动。
2. Worktree:隔离并行任务
Worktree 是本机独立的 Git 工作树。它共享 Git 元数据,但拥有独立文件副本;一个线程的改动不会直接覆盖另一个线程的目录。
操作步骤:
- 新建线程并选择
Worktree; - 选择起始分支或提交;
- 确认项目是 Git 仓库;
- 发送一个小任务让 App 创建工作树;
- 在内置终端运行
git worktree list; - 完成后创建功能分支、审阅 diff,再决定交接或清理。
.gitignore 忽略的 .env、依赖目录和本地缓存。
Worktree 不是备份,也不是权限隔离。它仍可能访问项目允许的文件、网络和工具;不要在其中放真实密钥,也不要因此跳过 Review。
3. Cloud:云端执行
Cloud 适合不需要本机编辑器、希望任务脱离本机继续运行的场景。使用前确认仓库内容、依赖、网络和凭据允许进入云端环境。 操作步骤:- 选择项目或关联的远程仓库;
- 新建线程并选择
Cloud; - 指定基础分支、任务范围和验收命令;
- 明确禁止访问的服务和文件;
- 提交任务后查看状态和日志;
- 收到结果后先审阅摘要和 diff,再决定取回、创建 PR 或放弃。
四、权限确认与安全边界
权限弹窗是检查命令影响面的机会,不是形式步骤。每次确认前检查:- 完整命令和当前工作目录;
- 是否写入项目外路径;
- 是否联网、上传文件或读取环境变量;
- 是否删除、覆盖、提权、安装或发布;
- 是否由项目脚本、依赖钩子或外部内容间接触发。
rm -rf、批量删除、覆盖目录;- 修改
.env、密钥、SSH 配置或凭据; - 安装未知依赖、执行下载内容;
- 访问生产数据库、生产 API 或真实客户数据;
git push、创建 PR、合并、发布和发送外部消息;- 修改权限、执行管理员命令或访问项目外文件。
五、Review 与 diff
Review 是每个修改线程的必经步骤。Codex 的总结不能代替 diff,测试通过也不能证明改动范围正确。1. 先确认比较范围
Review 常见范围包括:- 未提交改动:当前工作区相对当前提交的全部变化;
- 分支改动:当前分支相对基线的变化;
- 最近一轮改动:Codex 最近一次响应造成的变化;
- Staged 或 Unstaged:已暂存和未暂存的变化。
git status 和 git diff 分辨来源。
2. 逐文件逐块检查
按以下顺序审阅:- 文件是否都属于任务范围;
- 是否出现生成物、依赖目录、日志或密钥;
- 删除的代码是否有必要;
- 新逻辑是否处理错误、边界和空值;
- 测试是否验证真实行为,而非只让测试变绿;
- 配置、锁文件和迁移是否带来额外影响;
- 是否出现无关格式化噪声。
3. 接受、暂存和回滚
确认正确的块可以暂存,不需要的块可以回滚。操作前确认其中没有人工改动。git restore 可能覆盖未提交内容。执行前再次查看 diff,不能用整个仓库回滚解决单文件问题。
4. 提交前验证
package.json、Makefile、README 或项目脚本,不要盲目执行不存在的命令。
六、内置终端与 Actions
1. 先确认终端位置
打开线程内置终端后执行:pwd 不可用时使用 Get-Location。预期结果是终端目录与当前线程的 Local 或 Worktree 一致。
终端和 Codex 共享文件,但你自己输入的命令同样可能删除文件、联网或修改外部系统。
2. 按状态、差异、验证执行
3. 使用 Actions
Actions 可把测试、格式化和启动开发服务器等常用命令放到 App 中快速调用。配置前阅读项目脚本,确保不会把生产配置、真实数据或凭据写入日志。 预期结果:点击后终端显示完整命令和退出状态,失败时保留原始错误。Action 不是审批替代品,也不会自动判断命令安全。七、分支、Handoff 与合并
1. detached HEAD 与创建分支
App 创建的 Worktree 可能默认处于 detached HEAD,即指向某个提交但没有可推送的分支名称。 需要交付时,使用 App 中“在此创建分支”或等效功能,创建明确名称,例如fix/login-timeout。完成后用以下命令确认:
2. 同一分支不能同时检出
Git 不允许同一分支同时在两个工作树中检出。如果出现:3. Handoff
Handoff 用来在 Local 和 Worktree 之间转移线程位置。常见路径是:- 在线程 Worktree 中完成实现;
- 打开 Review 并记录问题;
- Handoff 到 Local;
- 在熟悉的 IDE、终端和本地服务中验收;
- 提交到明确的功能分支。
.gitignore 中的 .env、缓存和依赖不会自动移动。需要它们时使用安全的本地环境配置,不要把秘密值提交进仓库。
八、Automations
Automations 适合周期性、可重复、范围清晰的任务,例如每日提交摘要、定期巡检或持续跟踪一个长期线程。通常要求 App 运行、项目仍在磁盘上且电脑可执行任务。1. 先手动验证提示词
不要直接创建定时任务,先在普通线程中运行:2. 创建自动化
创建时明确说明:- 运行频率和时区;
- 使用的项目;
- 运行在 Local 还是 Worktree;
- 是否允许写文件、联网或创建分支;
- 没有值得报告的内容时如何处理;
- 输出进入哪里。
3. 独立自动化与线程自动化
独立自动化每次从新的运行开始,适合日报和巡检。线程自动化回到同一线程继续,适合跟踪一个长期任务;提示词必须说明每次唤醒如何判断进度、何时停止、何时需要人工确认。4. 验证和失败处理
创建后依次执行:- 在 Automations 列表确认频率、项目和运行位置;
- 手动触发一次;
- 检查日志和 diff;
- 观察前几次输出;
- 不再需要时及时归档。
九、任务恢复
1. 恢复仍在列表中的线程
重新打开原线程,先发送:2. App 或电脑中断
恢复后依次检查:3. Worktree 被清理
Codex 管理的临时 Worktree 可能因归档或数量上限被清理。线程记录通常仍在,App 可能提供恢复快照的入口。恢复前确认快照时间和基线分支,恢复后重新检查git status 和 Review。
重要成果应及时创建明确分支并提交,不要只留在可能被回收的临时 Worktree 中。
4. 结果不可信
若摘要与 diff 不一致、测试结果缺失或声称执行了看不到的命令:- 停止提交、推送和发布;
- 保存线程 ID、日志和 diff;
- 用终端重新运行只读检查;
- 要求 Codex 列出实际命令;
- 必要时在干净 Worktree 中复现。
十、清理与回滚
1. 正确的收尾顺序
- Review 确认范围;
- 运行测试、lint 或构建;
- 创建功能分支并提交;
- 按团队流程推送和创建 PR;
- 确认分支已合并或成果已保存;
- 归档线程;
- 删除不再需要的临时 Worktree;
- 检查
git worktree list和磁盘占用。
2. 清理 Worktree
优先使用 App 的归档或删除入口,因为它能同步线程记录和托管状态。需要检查 Git 时:.codex/worktrees 下的目录来绕过 App 状态。
长期环境应使用永久 Worktree 或明确分支,并约定负责人和清理时间。临时实验在确认结果已丢弃后及时归档,避免依赖和构建缓存长期占用磁盘。
3. 回滚
未提交的单文件改动可在 Review 中按文件或代码块回滚。终端回滚前先保存:十一、完整实战流程
下面演示“补充输入校验并增加测试”的可恢复流程,命令以项目实际脚本为准。第一步:创建隔离线程
打开 Git 仓库,确认路径和账号,创建线程,选择Worktree,从稳定分支开始。
预期结果:线程显示 Worktree,主目录保持原状。不能选择 Worktree 时,确认 git rev-parse --show-toplevel 成功,并检查是否有冲突工作树。
第二步:先要计划
第三步:限定修改
第四步:终端与 Review 双检
第五步:运行验证
运行项目已有的测试和 lint。失败时记录完整输出,区分实现错误、环境缺失和外部服务不可用。只修复与失败对应的范围;不要为了通过测试切换生产服务或放宽权限。 每次修复后重新看 diff,不要连续批准一串无法解释的命令。第六步:保存成果
确认结果后创建功能分支并提交,提交前检查 staged diff。推送和创建 PR 属于外部动作,应单独确认目标远端和 PR 内容。 预期结果:成果有明确分支和提交,主目录没有被污染,提交说明包含测试结果和已知限制。第七步:收尾或恢复
还要继续就保留线程和 Worktree;已合并且不再需要就归档线程并清理临时 Worktree。中断后重新打开原线程,先执行恢复检查,不要创建新线程重复操作。十二、故障速查
验收清单
完成后至少确认:- 项目路径和线程运行位置正确;
- 当前分支不是误用的主分支,或 Local 修改已获明确批准;
- Review 范围清楚,diff 只包含预期文件;
- 没有提交密钥、
.env、客户数据、缓存或无关生成物; - 测试、lint、构建或只读检查有实际输出和退出状态;
- Handoff、提交、推送、PR 和发布没有被误当成自动步骤;
- 自动化使用明确频率、最小权限和可清理的位置;
- 线程、分支、Worktree 和快照仍能在需要时恢复;
- 临时 Worktree 和自动化结果已按任务状态清理;
- 失败、未验证假设和下一步动作已记录。
小结
稳定的桌面 App 工作流是:确认项目和线程,选择运行位置;执行中核对权限;完成后用终端和 Review 验证;确认分支和结果后再提交;最后按状态恢复或清理。 日常小改动可用Local,同一仓库的并行任务优先用 Worktree,需要脱离本机运行时再评估 Cloud。运行位置不是安全边界,Codex 的总结也不能替代 diff 和测试。可交付结果必须范围可解释、改动可审阅、验证可复现、权限可追溯、失败可恢复。
参考资料:参考/codex/07-desktop-app.md、参考/codex/25-worktrees.md、参考/codex/27-automation.md。动态信息以当前桌面 App 的设置、权限提示和官方文档为准。