# CodexGuide 完整内容索引 本文件汇总 CodexGuide 的可公开阅读内容,适合需要完整上下文的 AI 助手。专题入口会直接指向正文页面。 ## 内容入口 - Codex 总入口: https://codexguide.io/codex - 入口选择: https://codexguide.io/compare - 学习路线: https://codexguide.io/paths - 快速上手: https://codexguide.io/quickstarts - 进阶教程: https://codexguide.io/advanced - 故障排查 FAQ: https://codexguide.io/guides/faq - 验证流程: https://codexguide.io/codex/validation - 实战案例: https://codexguide.io/cases ## Codex 专题 ### 安装 Codex:先完成第一次启动 URL: https://codexguide.io/codex/install 从 App、CLI 或 IDE 入口开始安装 Codex,完成登录、打开项目和第一次只读检查。 #### 先选与你环境匹配的入口 第一次使用时,不需要同时安装所有版本。先根据工作环境选择 App、CLI 或 IDE,再完成一次最小可验证启动。 - 桌面任务优先考虑 App。 - 脚本、批处理和 Git 工作流优先考虑 CLI。 - 需要持续查看代码上下文时考虑 IDE。 #### 安装后先做四项检查 确认账号已登录、项目目录正确、Git 状态可读,并让 Codex 先只读项目说明和测试入口。 如果仍未决定使用哪种入口,先阅读[App、CLI、IDE 与 Cloud 怎么选](/compare)。 #### 完成标准 你能说清当前项目、当前分支、启动命令和第一项可回滚任务,且工作区没有意外修改。 ### Codex 从哪里进入:App、CLI、IDE 与 Cloud URL: https://codexguide.io/codex/entry-points 按任务类型、运行位置和权限边界选择 Codex 入口,直接进入下一篇对应教程。 #### 先看任务,不看能力等级 App、CLI、IDE 和 Cloud 不是从低到高的等级,而是不同的工作边界。先判断任务在哪里运行、是否需要脚本、是否需要异步隔离。 #### 快速结论 - 第一次使用或希望可视化管理任务:App。 - 熟悉 Git、脚本和可重复命令:CLI。 - 边看代码边修改、测试和审查:IDE。 - 需要异步、远程或隔离执行:Cloud。 #### 下一步 如果你还没有安装,进入[首次安装与项目检查](/codex/install);如果已经选好入口,进入[完成一个可回滚的真实任务](/codex/workflows)。 ### 登录与认证:先确认账号和凭据边界 URL: https://codexguide.io/codex/auth 理解 ChatGPT 登录、API Key 和本地凭据的使用边界,定位认证失败而不泄露敏感信息。 #### 使用哪种认证方式 按照当前入口支持的方式完成 ChatGPT 账号登录或 API Key 配置。认证信息只保存在凭据管理器或本机受控位置,不写入提示词、仓库和截图。 #### 认证失败时保留证据 - 记录完整错误、当前入口和操作系统。 - 确认系统时间、网络和账号状态。 - 检查 auth.json、.env 和 token 是否被错误提交。 #### 完成标准 登录成功后先进行一次只读项目检查,再进入[权限与安全边界](/codex/permissions),不要直接执行高风险修改。 ### 权限与安全边界:先限制影响面 URL: https://codexguide.io/codex/permissions 掌握 Codex 的工作区、网络、审批和敏感信息边界,用最小权限完成可回滚任务。 #### 把权限当作任务约束 默认从受控工作区和最小权限开始。只有当任务明确需要联网、写入工作区外或执行高风险命令时,才扩大范围并要求人工确认。 #### 执行前检查 - 先运行 git status,确认已有改动不会被覆盖。 - 不要把 token、auth.json、.env 或客户数据放进提示词和提交。 - 生产、数据库和删除操作必须由人确认。 #### 失败后的处理 把权限问题与代码问题分开,保留命令、路径和错误,再按[权限、Git 与验证失败排查](/guides/faq#permissions)逐项隔离。 ### 修改后如何验证:从 diff 到回归检查 URL: https://codexguide.io/codex/validation 建立 Codex 修改后的验证顺序,覆盖 Git diff、测试、构建、页面检查和无法验证的部分。 #### 验证顺序 - 先看 git diff 和 git status,确认范围没有扩大。 - 运行与任务对应的最小测试或检查。 - 需要时再运行构建、页面验证或更宽范围回归。 - 记录成功、失败和无法验证的部分。 #### 故障分类矩阵 先按可观察证据分类,再选择修复动作。不要用扩大权限、删除缓存或大范围重构来掩盖根因。 症状 | 优先检查 | 证据 | 下一步 命令被拒绝 | 工作区、sandbox、审批 | 命令与权限提示 | 缩小范围或请求明确批准 Git diff 为空 | 路径、分支、worktree | git status --short --branch | 回到实际修改的工作区 测试失败 | 基线、依赖、代码 | 完整命令和错误 | 最小复现并比较基线 构建通过但页面错误 | 路由、浏览器、交互 | 页面行为和控制台 | 补做浏览器验证 环境命令不存在 | 终端、PATH、版本 | 版本输出和当前目录 | 统一执行环境后重试 #### 不要只看 Codex 的完成提示 完成提示不是验收结果。验收必须有命令输出、页面行为、测试结果或人工检查证据。 #### 验证失败怎么办 先保留失败现场,不要立刻删除缓存或改成 Full access。进入[权限、Git 与验证失败 FAQ](/guides/faq#validation)查看对应分支。 ### Codex 工作流:从任务到可回滚结果 URL: https://codexguide.io/codex/workflows 用目标、上下文、约束、计划、最小修改和验证组成一条可重复的 Codex 工作流。 #### 一条可靠流程包含什么 - Goal:要完成什么。 - Context:项目入口、相关文件和未知信息。 - Constraints:允许修改的范围、权限和禁止事项。 - Done when:用什么证据判定完成。 #### 执行时保持最小范围 先让 Codex 调查并提出计划,再执行最小修改。中途检查 diff,不把多个目标混进同一个任务。 #### 结束前完成闭环 运行测试或构建,查看 diff 和工作区状态,确认没有敏感文件或无关重构,再提交或回滚。需要更深的项目规则时阅读[AGENTS.md 项目协作规则](/advanced/agents-md)。 如果验证失败,先按[测试与验证 FAQ](/guides/faq#validation)保留基线和错误证据,再决定是否继续修改。 ## 故障排查 FAQ ### 登录与认证 #### Codex 登录失败怎么办? 先保留完整错误、当前入口和操作系统,确认网络、系统时间与账号状态,再重新完成认证。 解决步骤: https://codexguide.io/codex/auth keywords: 登录失败, 认证失败, Codex 登录 #### ChatGPT 登录和 API Key 应该怎么选? 按当前入口和账号能力选择。Cloud 使用 ChatGPT 登录;本地脚本或可信 CI 才考虑 API Key,并单独确认计费与权限。 解决步骤: https://codexguide.io/codex/auth keywords: ChatGPT 登录, API Key, 认证方式 #### auth.json、Token 或 .env 可以发给 Codex 吗? 不要把凭据放进提示词、截图、Issue 或 Git 提交。只让 Codex 检查凭据是否存在,不要输出真实值。 解决步骤: https://codexguide.io/codex/auth keywords: auth.json, Token, .env, 凭据 #### 登录成功后第一步应该做什么? 先只读检查项目、工作目录和 Git 状态,确认入口和环境正确后,再进入权限设置或修改任务。 解决步骤: https://codexguide.io/codex/install keywords: 登录后, 首次检查, 只读检查 ### 权限与审批 #### Codex 没有权限修改文件怎么办? 先确认文件是否在工作区内、任务是否需要写入范围外,再检查审批策略;不要为了绕过错误直接切换到 Full access。 解决步骤: https://codexguide.io/codex/permissions keywords: permission denied, 文件权限, 工作区 #### 为什么 Codex 要求网络或命令审批? 网络、工作区外写入和高风险命令会扩大影响面。先确认用途、目标和读写范围,再逐项批准。 解决步骤: https://codexguide.io/codex/permissions keywords: 网络审批, 命令审批, 批准 #### sandbox 限制和 approval policy 有什么区别? sandbox 决定执行环境能访问什么,approval policy 决定哪些动作需要人工确认;两者共同构成任务边界。 解决步骤: https://codexguide.io/advanced/config-toml keywords: sandbox, approval policy, 审批策略 #### 什么时候可以使用 Full access? 只有在任务明确需要更大范围,并且已经确认目标、备份、凭据和回滚方式时才考虑扩大权限。 解决步骤: https://codexguide.io/codex/permissions keywords: Full access, 权限扩大, 回滚 ### Git 与工作区 #### Codex 修改后 Git diff 看不到怎么办? 先运行 git status --short --branch,确认当前目录、分支和文件是否正确,再排查是否修改了另一个工作区。 解决步骤: https://codexguide.io/codex/validation keywords: git diff, 看不到修改, 工作区 #### 已有未提交修改时能让 Codex 开始吗? 先确认这些修改是谁做的、是否需要保留以及是否会与任务冲突;不要为了得到干净状态而删除或覆盖它们。 解决步骤: https://codexguide.io/codex/workflows keywords: 未提交修改, git status, 覆盖修改 #### 如何避免 Codex 把无关文件一起改了? 在任务中限定允许修改的目录,执行中查看 diff,结束后检查未跟踪文件、锁文件和配置文件是否超出范围。 解决步骤: https://codexguide.io/codex/workflows keywords: 无关文件, 修改范围, diff 审查 #### 多个 worktree 或分支导致结果不一致怎么办? 分别记录当前路径、分支和提交,确保 Codex 与你查看 diff 使用的是同一个工作区。 解决步骤: https://codexguide.io/codex/validation keywords: worktree, 分支, 结果不一致 ### 测试与验证 #### 测试通过了,为什么还不能算完成? 还要确认 diff 范围、页面行为、构建结果和未验证部分;Codex 的完成提示不是验收证据。 解决步骤: https://codexguide.io/codex/validation keywords: 测试通过, 验收, 完成提示 #### 验证失败后应该先做什么? 保留失败命令、完整错误、路径和当前分支,先区分环境、权限、依赖、Git 和代码问题。 解决步骤: https://codexguide.io/codex/validation keywords: 验证失败, 错误排查, 失败证据 #### 项目修改前就已经测试失败怎么办? 先记录基线错误,不要把它和本次修改混在一起;修改后用同一条命令比较结果。 解决步骤: https://codexguide.io/codex/validation keywords: 基线失败, 测试基线, 回归 #### 构建通过但页面仍然不对怎么办? 补做浏览器或页面行为检查,确认路由、交互、移动端布局和控制台错误,而不是只依赖构建退出码。 解决步骤: https://codexguide.io/codex/validation keywords: 构建通过, 页面错误, 浏览器验证 ### Windows 与 WSL #### Windows 和 WSL 路径不一致怎么办? 统一 Git、Node、包管理器和 Codex 的运行环境,确认工作目录、换行符、编码和执行权限。 解决步骤: https://codexguide.io/advanced/windows keywords: Windows, WSL, 路径 #### 命令在终端可用,在 Codex 中却找不到怎么办? 确认 Codex 使用的终端、PATH 和项目目录与人工验证时一致,再记录版本和完整命令。 解决步骤: https://codexguide.io/advanced/windows keywords: 命令不存在, PATH, 终端 ## 实战案例 ### Codex 新手第一个任务:修改本地网页并检查结果 URL: https://codexguide.io/cases/wan-cheng-di-yi-ge-zhen-shi-ren-wu 适合已经安装并登录 Codex App 或 CLI 其中一种、能够访问练习文件夹,但还没有独立完成过一次可核对修改的读者。不要求同时安装两种入口,也不声称所有系统和客户端都已实测。 # Codex 新手第一个任务:修改本地网页并检查结果 > 难度:基础 > > 类型:首次实操 > > 本文提供一套不需要 Node、数据库、插件或第三方 SDK 的共同练习。它不代表 Codex 模型可以完全离线运行。 ## 这篇文章适合谁 适合已经安装并登录 Codex App 或 CLI 其中一种、能够访问练习文件夹,但还没有独立完成过一次可核对修改的读者。不要求同时安装两种入口,也不声称所有系统和客户端都已实测。 ## 准备什么 - 一台已安装并登录 App 或 CLI 的电脑。 - 下方提供的本课练习包,无需克隆仓库或向维护者索取文件。 - 一个独立测试目录。不要使用 CodexGuide 正式网站、私人仓库或含敏感信息的目录。 - 可以打开本地 HTML 文件的浏览器。 练习只包含简单 HTML、CSS 和说明文件,不调用外部业务 API、不收集个人信息、不部署。 ## 本课练习材料 使用一个简单的本地网页,练习修改标题与简介,并检查原有链接和样式是否保留。 [下载练习包(ZIP)](../练习材料/Codex首次任务-本地网页练习包.zip) 文件名:`Codex首次任务-本地网页练习包.zip`,大小:3,435 字节。包内包含未修改的 HTML/CSS、任务说明、检查清单和独立的参考差异,不需要安装 Node、数据库或插件。 解压后的目录如下: ```text 首次任务-本地网页/ ├── README.md ├── 任务说明.md ├── 检查清单.md ├── 起始文件/ │ ├── index.html │ └── styles.css └── 参考差异/ └── 参考差异.md ``` 手机上可以阅读教程和找到下载入口;实际练习需要在能够操作项目目录、已安装并登录 Codex App 或 CLI 的电脑上完成。手机浏览器不能直接执行本课的本地 Codex 任务。 只在练习副本中操作,不要打开真实业务项目、生产网站或含凭据的私人目录。参考差异用于完成后的比较,不是起始文件。 ## 取得并打开正确目录 1. 点击上方“下载练习包(ZIP)”,把文件保存到电脑,再解压到一个新文件夹。 2. 将解压后的 `首次任务-本地网页/起始文件/` 整个复制为新的工作目录,例如 `codex-first-task-test/`。保留原始 `起始文件/` 不改动;`任务说明.md` 和 `检查清单.md` 位于它的上一级。 3. 先在浏览器中打开工作目录里的 `index.html`,应看到“晨间读书角”、一段简介和“查看阅读清单”按钮。 4. 在 App 中通过选择项目文件夹的入口打开 `codex-first-task-test/`;具体按钮名称以当前客户端为准。不要打开解压包的最外层或 `参考差异/`。 5. 使用 CLI 时,在终端进入同一个工作目录,确认直接包含 `index.html`、`styles.css` 后运行 `codex`。macOS/Linux 可用 `pwd`、`ls`,PowerShell 可用 `Get-Location`、`Get-ChildItem` 核对目录。 如果 App 或 CLI 还不能正常使用,先回到[安装与首次使用](../01-安装与首次使用/README.md)和[第一次使用前要准备什么](./06-第一次使用前要准备什么.md)。 ## 给 Codex 的指令 把下面的指令发给 Codex: ```text 请先阅读 index.html 和 styles.css,不要修改文件。 然后只做这两处文字修改: 1. 将主标题改为“我的第一个 Codex 练习”; 2. 将简介改为“先看清修改,再确认页面结果。”。 请保留按钮文字、https://example.com 链接、其他 HTML 内容和全部 CSS 样式。 完成后告诉我修改了哪些行,并不要运行部署或安装命令。 ``` 先让它阅读再修改,是为了确认目录和范围。看到权限请求时,只允许服务于本次练习的读取和编辑动作;不要为这个练习开启外部写入、部署或安装操作。 ## 预期修改与检查 预期只有 `index.html` 的两处文字变化: ```diff -
用十分钟记录今天读到的一段话,慢慢建立自己的阅读清单。
+先看清修改,再确认页面结果。
``` 按[练习检查清单](../练习材料/首次任务-本地网页/检查清单.md)完成文件、链接、范围和浏览器检查。直接打开 `index.html`,确认标题、简介、按钮和样式都能看到;人工浏览器检查与 Codex 的文字总结是两件事。 ## 出错怎么办 - 找不到文件:重新检查 App/CLI 打开的路径,用 `pwd`、`ls` 确认目录。 - 修改了 CSS 或按钮链接:停止继续编辑,从原始 starter 重新复制到新目录,再重试。 - 页面文字正确但样式异常:比较 `styles.css` 是否被改动,并从原始 starter 重来。 - 不确定是否完成:查看 diff,与上面的参考差异逐行比较。 - 登录、权限或客户端入口异常:查看[安装登录常见问题](../01-安装与首次使用/13-安装登录常见问题.md)和[故障排查目录](../15-故障排查与常见问题/README.md)。 重新练习时,重新解压或复制 `起始文件/` 到新的目录;不要清空真实工作区,也不要执行破坏性 Git 重置。 ## 这次练习之后 完成一次小修改后,先阅读[完成第一次修改并检查结果](../01-安装与首次使用/09-完成第一次修改并检查结果.md),再按需要进入[核心概念与任务方法](../02-核心概念与任务方法/README.md)或[项目理解与上下文](../03-项目理解与上下文/README.md)。原仓库中的历史案例仍保留在本文后半部分和[真实案例复盘](../14-真实案例复盘/README.md),它们是独立案例,不能当作本次练习的亲测记录。 ## 来源与验证边界 安装、登录和首次任务的官方参考:[OpenAI Codex Quickstart](https://learn.chatgpt.com/docs/quickstart)、[Codex CLI](https://learn.chatgpt.com/docs/codex/cli) 和[Authentication](https://learn.chatgpt.com/docs/auth)。本练习材料和本文是本仓库维护者编写的教学内容。2026-09-20 已在 macOS 15.6、Codex CLI 0.154.0 的现有认证环境中,用本课原始提示词通过 `codex exec` 完成一次练习副本修改。独立文件比对确认只有主标题与简介改变,CSS、按钮文字和链接未变;通过本机临时 HTTP 预览检查了真实生成的页面。此记录只覆盖 CLI 非交互执行、文件比对和页面检查,不覆盖 App、交互式 CLI 界面、直接双击 HTML 或其他系统;安装与登录过程没有在本次重新测试。 --- ## 原文章中的历史案例(保留原文) 以下内容来自本仓库此前发布版本,记录维护者当时的真实知识库维护案例。它不是上面统一练习的实测记录,也不要求首期读者操作该仓库。 # 完成第一个真实任务:从任务描述到验证提交的完整闭环 > 难度:基础 > > 类型:首次实操 ## 这篇文章适合谁 这篇文章写给已经打开 Codex,也准备好一个安全项目,却还没有独立完成过真实任务的读者。 这里的“完成”,指一个真实项目产生了可检查的变化,并且这些变化经过验证、审查和提交。只得到一段看起来合理的回答,还没有走完任务。 ## 你会学到什么 本文会完整走一遍下面的过程: 1. 选择一个适合第一次完成的真实任务。 2. 检查项目和 Git 起始状态。 3. 写清目标、上下文、限制和完成条件。 4. 观察 Codex 调查、编辑和运行命令。 5. 在权限请求和中途偏离时做判断。 6. 查看文件差异并独立验证结果。 7. 提交和推送确认通过的修改。 示例使用 Markdown 知识库,读者不需要编程基础。开发者可以把同一套流程换成修 Bug、补测试或修改页面。 ## 本文使用的真实任务 本文没有临时创建一个“Hello World”项目。案例来自维护这个 Codex 中文知识库时真实发生的一次任务: > 在 `00-从这里开始` 栏目中新增第 07 篇文章《完成第一个真实任务》,更新栏目目录和更新日志,加入必要的官方配图,并在发布前检查链接、图片、敏感信息和 Git 差异。 这个任务会修改四类内容: | 文件 | 作用 | |---|---| | `00-从这里开始/07-完成第一个真实任务.md` | 新增正文 | | `00-从这里开始/README.md` | 把第 07 篇加入阅读顺序 | | `更新日志.md` | 记录本次内容发布 | | `图片素材/00-从这里开始/07-完成第一个真实任务/` | 存放与正文直接相关的图片 | 它的范围不大,但包含真实项目里常见的多个步骤:读现有规范、研究资料、创建文件、维护导航、处理图片、运行检查和提交 Git。 ## 先理解完整闭环 一次 Codex 任务可以拆成下面八个环节: ```mermaid flowchart LR A["确认起点"] --> B["描述任务"] B --> C["调查项目"] C --> D["计划修改"] D --> E["编辑文件"] E --> F["运行验证"] F --> G{"结果通过?"} G -->|"否"| H["分析问题并修正"] H --> E G -->|"是"| I["审查 diff"] I --> J["提交与推送"] ``` 很多第一次使用的问题,都源于流程只走到了“编辑文件”,后面的验证、diff 和提交没有完成。 ## 第一步:确认任务开始前的状态 打开项目后,不要马上发出修改请求。先确认 Codex 进入了正确的文件夹。 如果项目使用 Git,可以检查: ```bash git status --short --branch git log -1 --oneline ``` 第一条命令用来查看当前分支和未提交修改,第二条命令确认最近的回退点。 在本案例开始时,需要确认: - 当前仓库是 `codex-handbook`。 - 当前分支是准备发布内容的分支。 - 前六篇文章已经提交。 - 工作区没有来源不明的未提交修改。 - 目标目录和图片规范文件能够正常读取。 如果工作区已经有修改,不要默认它们可以覆盖。先让 Codex 列出状态,说明哪些文件与本次任务相关,哪些是任务开始前就存在的内容。 ### 可以怎样对 Codex 说 ```text 先不要修改文件。请检查当前项目、Git 分支和未提交变化,阅读仓库根目录的 AGENTS.md 以及“00-从这里开始/README.md”,然后告诉我这次任务应该修改哪些文件。 ``` 这一步只需要确认双方正在同一个项目、同一个范围里工作,不需要让 Codex 写一份长报告。 ## 第二步:把一句话需求补成可执行任务 用户最初可能只会说: ```text 《07-完成第一个真实任务》接下来写这一篇。 ``` 如果同一个任务里已经有前文、仓库规则和连续的文章上下文,Codex 可以据此继续工作。但读者第一次独立使用时,不应该假设它已经知道你的全部要求。 按照上一篇介绍的 Goal、Context、Constraints 和 Done when,可以把任务补充成下面这样: ```text 请在 codex-handbook 的“00-从这里开始”栏目新增第 07 篇文章。 目标:写一篇《完成第一个真实任务》,用一个真实的 Markdown 知识库维护案例,讲清从任务描述、执行、验证到 Git 提交的完整流程。 上下文:先阅读 AGENTS.md、图片素材/README.md、栏目 README,以及第 05、06 篇文章,保持现有知识库风格。 限制: 1. 不要写成公众号文章。 2. 不要编造实操截图、测试结果或用户反馈。 3. 官方结论必须引用 OpenAI 官方资料。 4. 实操截图由维护者亲自操作后补充;没有截图时使用官方图或流程图解释。 5. 不修改与本篇无关的目录和文章。 完成条件: 1. 新建文章并更新栏目目录和更新日志。 2. 图片路径、相对链接和官方链接可以访问。 3. 检查敏感信息、Markdown 基础格式和 Git diff。 4. 完成后先汇总修改和验证结果,不要在我审查前提交。 ``` 这段任务说明并不追求所谓“完美提示词”。它只是把容易产生分歧的地方提前说清楚。 ## 第三步:让 Codex 先调查,再开始修改 一个项目通常已经有自己的结构和规则。Codex 在修改前应该先阅读与任务直接相关的文件,而不是凭空创建一套新格式。 本案例需要调查: - `AGENTS.md` 中的内容和图片规则。 - `00-从这里开始/README.md` 的编号和标题风格。 - 第 05、06 篇的文章结构和引用方式。 - `图片素材/README.md` 中的命名、脱敏和来源要求。 - 当前 Git 状态和最近提交。 你不需要要求 Codex 阅读整个仓库。范围越准确,调查速度越快,也越不容易把无关内容带进任务。 ### 怎样判断它是否读对了 开始写之前,Codex 至少应该说清楚: - 准备新增什么文件。 - 需要更新哪些导航或索引。 - 本篇使用哪类图片,来源是什么。 - 哪些事实需要查官方资料。 - 打算如何验证文章和仓库变化。 如果它准备修改大量无关文件,应该在编辑前缩小范围。 ## 第四步:观察过程,但不要逐行遥控 Codex 开始执行后,通常会经历搜索文件、读取规则、查资料、编辑和验证几个阶段。 你需要关注的是方向和边界: - 它是否仍在处理同一个目标。 - 新发现是否改变了原来的计划。 - 是否要访问新的目录、网络或外部服务。 - 是否出现无法验证的事实或截图。 - 是否准备执行不可逆操作。 不需要对每一次文件读取都下指令。过度干预会打断连续调查,也会让任务记录充满重复确认。 ### 什么时候应该马上纠偏 出现下面情况时,直接告诉 Codex 停下并重新确认: - 开始重写已经完成的前六篇文章。 - 为了“内容丰富”准备添加无关 AI 图片。 - 把尚未实操的过程写成已经成功完成。 - 使用没有来源的套餐、功能或性能结论。 - 准备删除、移动或重命名现有文件。 - 发现工作区中存在用户原有修改,却打算直接覆盖。 纠偏时说明哪里偏了、正确边界是什么,不必从头重发整个任务。 例如: ```text 先停一下。前六篇文章不要改,本次只新增第 07 篇,并更新栏目 README 和更新日志。实操图片还没有由我亲自截图,不要创建或描述不存在的实操结果。 ``` ## 第五步:认真处理权限请求 Codex 可能请求编辑文件、运行命令、访问网络或执行 Git 操作。第一次任务继续使用 `Ask for approval` 更容易看清每个动作的边界。  > 图片来源:[OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes)。本图与第 03、06 篇共用,用来说明首次实操中的审批边界。 看到权限请求时,可以按下面的顺序判断: 1. 这个动作是否服务于当前任务? 2. 它会影响哪个目录和哪些文件? 3. 命令是读取、创建、覆盖还是删除? 4. 网络访问的目标是否是已知官方来源? 5. 执行失败后是否容易恢复? 读取仓库文件、检查 Git 状态和访问 OpenAI 官方文档,通常容易判断。删除文件、安装系统软件、修改仓库权限、推送远端和使用 Full access,需要更谨慎。 批准命令不是在确认“Codex 一定做得对”,只是允许它执行这一个动作。结果仍然需要后续检查。 ## 第六步:让 Codex 提供验证证据 编辑完成后,不要只接受“文章已经写好”这样的总结。要求它运行与完成条件对应的检查。 本案例需要验证: | 检查项 | 证据 | |---|---| | 文章文件已创建 | 文件存在,标题和编号正确 | | 栏目目录已更新 | README 中第 07 项链接指向新文章 | | 更新日志已更新 | 当天记录包含本篇发布内容 | | 图片有效 | 文件存在、格式与扩展名一致、正文路径正确 | | 相对链接有效 | 链接目标文件或目录实际存在 | | 官方链接有效 | 请求返回成功状态,并落在 OpenAI 官方域名 | | Markdown 无明显格式问题 | `git diff --check` 没有空白错误,表格和代码块闭合 | | 没有敏感信息 | Token、私钥和常见凭据模式扫描无结果 | | 修改范围正确 | Git 状态中只有本篇相关文件 | ### 一组基础 Git 检查 ```bash git status --short git diff --stat git diff --check ``` - `git status --short` 显示哪些文件发生变化。 - `git diff --stat` 显示修改规模。 - `git diff --check` 检查多余空格和部分基础格式问题。 这些命令不能证明文章内容一定正确,但能快速发现文件遗漏、意外修改和格式问题。 ### 验证失败时怎么办 验证失败不是任务结束,而是下一轮输入。 不要只说“再检查一下”,应该把失败证据交给 Codex: ```text 相对链接检查显示图片路径不存在: 图片素材/00-从这里开始/07-完成第一个真实任务/01-官方App内置Git工具.png 请先确认真实文件位置,只修复这个路径,然后重新运行链接和图片检查。不要改写正文其他内容。 ``` 错误信息、失败命令和预期结果比“好像不对”更容易让 Codex 准确修复。 ## 第七步:自己审查 diff Codex 运行完检查后,轮到你查看它到底改了什么。 OpenAI 的本地环境文档说明,ChatGPT 桌面 App 的 diff 面板可以查看当前修改、对具体行留下反馈、暂存或恢复单个区块,也可以提交、推送和创建 Pull Request。  > 图片来源:[OpenAI Local environments](https://learn.chatgpt.com/docs/environments/local-environment#use-built-in-git-tools)。页面展示了 App 中查看 Changes、分支、提交、推送和创建 Pull Request 的入口。 ### 审查新文章 重点看: - 标题是否和目录一致。 - 内容是否真的回答了文章主题。 - 官方事实是否有来源。 - 示例是否能让读者照着操作。 - 有没有把建议写成官方硬性要求。 - 有没有编造截图、测试和用户体验。 ### 审查目录和更新日志 重点看: - 编号是否连续。 - 链接路径和文件名是否完全一致。 - 是否误改其他文章标题。 - 更新日志是否只记录已经完成的内容。 ### 审查图片 重点看: - 图片能否解释正文中的具体信息。 - 官方图是否标明来源页面和链接。 - 文件格式和扩展名是否一致。 - 是否出现账号、邮箱、私有路径或 Token。 如果发现问题,可以直接在 diff 中指出具体行,也可以在任务中引用文件路径和段落标题让 Codex 修正。 ## 第八步:提交前再做一次独立确认 Codex 的完成说明是线索,不是最终验收结论。 在本案例中,维护者至少要亲自完成下面几项: - 打开新文章,快速通读一次。 - 点击栏目 README 中的新链接。 - 确认两张图片能够显示。 - 查看 Git diff 中是否有无关文件。 - 核对官方来源和引用说明。 - 确认没有私密计划、聊天记录或凭据进入公开仓库。 代码项目还要增加人工页面检查、关键功能复现或测试结果复核。不要因为命令显示绿色,就跳过用户真正会看到的效果。 ## 第九步:提交和推送 只有在内容和验证都通过后,才进入提交阶段。 可以让 Codex 先给出提交范围和建议的提交信息: ```text 请再次确认 Git 状态,只暂存本次第 07 篇文章、栏目 README、更新日志和对应官方图片。提交前运行 git diff --cached --check,并把暂存文件列表给我确认。 ``` 确认无误后再提交,例如: ```text docs: add first real task walkthrough ``` 推送完成后,还要比较本地和远端分支的最新提交。看到 GitHub 页面中出现新文章,并不一定代表所有文件都上传正确;提交哈希一致才是更直接的证据。 ### 推送后检查什么 - 本地工作区是否干净。 - 本地 `HEAD` 与远端目标分支哈希是否一致。 - GitHub 中的文章链接是否可以打开。 - 图片在 GitHub 页面中是否正常显示。 - 目录链接是否跳转到正确文章。 ## 一份合格的任务结束报告 Codex 最后的报告应该短,但需要包含证据。 例如: ```text 已完成第 07 篇文章,并更新栏目 README 和更新日志。 新增: - 00-从这里开始/07-完成第一个真实任务.md - 图片素材/00-从这里开始/07-完成第一个真实任务/01-官方App内置Git工具.png 更新: - 00-从这里开始/README.md - 更新日志.md 已检查:相对链接、官方链接、图片格式、敏感信息和 Git diff。 提交推送后,本地与远端 main 提交一致。 ``` “完成了”这三个字没有多少信息。文件、检查命令和远端状态才方便读者判断任务是否真的结束。 ## 任务中途发现需求没说清怎么办 真实任务很少从第一句话开始就完全明确。发现缺口时,可以让 Codex 暂停编辑并列出需要决策的地方。 例如: ```text 先暂停修改。请列出目前仍然不确定的内容、每个选择会影响哪些文件,以及你的建议。等我确认后再继续。 ``` 如果只是局部问题,直接补充约束即可;如果目标本身发生变化,最好结束当前任务或建立新的分支,不要让一个任务不断扩张。 ## 任务做坏了怎样处理 先停止继续修改,再根据 Git 状态判断影响范围。 - 只有少量错误时,在 diff 中逐行指出并让 Codex 修正。 - 某个文件整体方向错误时,确认没有用户原有修改后,再使用 App 的恢复功能或 Git 恢复该文件。 - 已经提交但还没有推送时,可以在保留历史的前提下继续提交修正。 - 已经推送并被他人使用时,不要擅自重写共享历史,优先创建修复提交或 Pull Request。 不要在不清楚后果时执行 `git reset --hard`、批量删除或覆盖目录。回退动作同样需要审查。 ## 把这套流程迁移到代码任务 知识库案例和代码任务的文件不同,闭环并没有变化。 | 知识库任务 | 代码任务 | |---|---| | 新增文章 | 实现功能或修复 Bug | | 阅读栏目规则 | 阅读项目架构和编码规范 | | 检查链接和图片 | 运行测试、Lint、类型检查和构建 | | 人工通读文章 | 手动复现功能或查看页面 | | 审查 Markdown diff | 审查源代码和测试 diff | | 更新目录和日志 | 更新文档、变更记录或迁移说明 | | 推送文章提交 | 推送分支并创建 Pull Request | 第一次代码任务也应该范围小、结果可见、容易回退。修复一个能稳定复现的问题,通常比“帮我重构整个项目”更适合建立正确习惯。 ## 第一次真实任务自查表 - [ ] 我确认了正确项目、目录和 Git 分支。 - [ ] 我知道任务开始前有哪些未提交修改。 - [ ] 任务包含目标、上下文、限制和完成条件。 - [ ] Codex 修改前读了相关项目规则。 - [ ] 权限请求都在本次任务范围内。 - [ ] 我在方向偏离时及时补充了约束。 - [ ] Codex 运行了与完成条件对应的验证。 - [ ] 我亲自查看了所有相关文件的 diff。 - [ ] 提交中没有无关文件、敏感信息或虚构结果。 - [ ] 推送后本地和远端提交一致。 十项都能回答清楚,这次任务才形成了真正可复用的经验。 ## 下一步学习 完成第一次真实任务后,下一篇会总结 Codex 新手最常见的误区,包括任务范围过大、上下文堆得太多、盲目开放权限、只看回答不看 diff,以及把插件数量当成能力水平。 想练习不同入口的安装和首次运行,可以进入 [安装与首次使用](../01-安装与首次使用/)。需要系统学习任务拆分、计划和纠偏,可以进入 [核心概念与任务方法](../02-核心概念与任务方法/)。 ## 参考资料 - [Codex Best Practices](https://learn.chatgpt.com/guides/best-practices) - [OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes) - [OpenAI Local environments](https://learn.chatgpt.com/docs/environments/local-environment) - [Codex CLI](https://learn.chatgpt.com/docs/codex/cli) - [Codex Code Review](https://learn.chatgpt.com/docs/code-review) - [Git worktrees](https://learn.chatgpt.com/docs/environments/git-worktrees) - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) Codex 的界面、权限名称、Git 工具和可用入口可能随版本与工作区设置变化。 ### 用一个 Skill 做出可发布的食物广告 URL: https://codexguide.io/cases/yong-skill-zuo-shi-wu-guang-gao 这次实战从一杯还没有名字的概念奶茶开始。我想先把广告图做出来,再回头看这件事能不能整理成一套下次还用得上的 Skill。 # 用一个 Skill 做出可发布的食物广告 这次实战从一杯还没有名字的概念奶茶开始。我想先把广告图做出来,再回头看这件事能不能整理成一套下次还用得上的 Skill。 下面写到的产品信息、画面要求和版本记录,都来自这次对话。广告文章最怕把猜出来的内容写得像真的,所以不确定的信息就不替品牌做决定。 ## 先看结果 目前拿到的是一张 3 比 4 竖版奶茶广告图。透明杯、圆形封口盖、冰块和少量珍珠都在,背景压得比较暗,杯子放在中间偏下的位置,HIAPI Logo 也还认得出来。  这张图由 image_gen 生成,先做 v1,再按检查结果改到 v2。v2 是 1086 × 1448,比例为 3 比 4。最后还要在实际阅读页面看一遍,确认平台压缩后 Logo 不糊,杯口和边缘也没有被裁掉。 ## 先把一句话说清楚 我没有一上来就说“帮我做一张好看的奶茶广告”。先让 food-advertising Skill 把 brief 问清楚,这一步有点慢,却省掉了后面反复猜的时间。  看起来像填表,其实是在拦住广告里最容易出错的地方。产品名、品牌名、投放渠道、卖点依据、必须出现的文案和禁止元素要分开写。价格、规格、日期还没确认,就先写成待定,别让模型替人做决定。 这次 brief 后来补成了下面这些内容。 | 项目 | 已确认内容 | | --- | --- | | 产品 | HIAPI 品牌概念奶茶 | | 广告目的 | 做一张年轻、清爽、有创意的品牌视觉,用于内容平台和社交媒体 | | 画面主体 | 透明塑料杯、圆形封口杯盖、奶茶渐变、冰块、奶泡、少量珍珠 | | 构图 | 3 比 4 竖版,杯子居中偏下,略微俯视,上方留出约 20% 空间 | | 风格 | 高端商业饮品摄影,带一点 AI 科技品牌气质 | | 色彩 | 焦糖棕、奶油白、青绿色 Logo、深色简洁背景 | | 文字 | 不添加标题、口号、价格、参数或其他宣传文字 | | 禁止事项 | 不出现其他品牌、人物、无关商品、廉价塑料感和复杂科技线条 | 我后来一直盯着 Logo 看。图里的字少,杯子和 Logo 就得自己撑住画面。模型可以把杯子做得很像,Logo 却可能在下一张图里变形,所以它必须单独验。 ## 第二步,把判断写进 Skill 一条提示词能做出一张图,换个产品就未必了。所以我把这次用到的流程、参考模板和检查清单整理进 food-advertising Skill,方便下次从同一个起点开始。它的顺序很简单,先读 brief 和品牌素材,提炼主卖点,再确定主体、构图、光线、色彩和文字层级,最后按发布渠道检查,把需要人工确认的地方记下来。 ## 第三步,先让模型提出方向 brief 确认后,Skill 给了三个方向。截图里每个方向都写了卖点、主体、光线、适用渠道和风险。这样看起来比较费字,却比“科技感”“清爽感”这种风格标签好选得多。  三个方向分别偏向深色科技棚拍、清爽冷感实验室和焦糖奶泡动态瞬间。最后我选了方向 C。飞溅和珍珠能让静态图有一点动作,放在文章首图里也不至于太安静。 这个方向也有麻烦。飞溅和珍珠一多,画面很快就像海报特效,奶茶反倒退到后面。提示里得写清数量和状态,只说“更有冲击力”基本等于没说。  截图里的约束后来都放进了生成提示。杯子要在清晰的正面区域,Logo 不能被奶泡和飞溅挡住,背景留暗,画面不放标题、价格和参数。比起“高级一点”“更有质感”,这种话更能让结果往正确的方向走。 ## 一次生成六张候选 方向确定以后,才开始生成。HIAPI 调用三个模型,每个模型出两张,一共六张。画布统一用 3 比 4 竖版,原始 HIAPI Logo 作为参考图上传。  六张图放在一起,差异就很明显了。GPT Image 2 的奶茶质感、冰块和冷凝水比较自然,v2 的飞溅和珍珠却多了些。Seedream 5.0 Pro 的 Logo 几何形状保持得更好,v2 的构图也更干净。Nano Banana 2 两版的 Logo 都错了,还带出额外文字和错误颜色,我不会拿它们直接发。  自检最后推荐 Seedream 5.0 Pro v2。判断时看的是 Logo、构图、奶茶质感和禁用元素,单看哪张图最漂亮不够。后面还得人工看一遍,尤其是 Logo 是否原样、珍珠有没有过量、飞溅有没有挡住杯身。 这次还做了一轮模型接力。Nano Banana 2 的原始图片背景和杯子状态不错,Logo 却出了问题。于是我拿 Seedream 5.0 Pro v2 里正确的 Logo 当参考,让 Nano Banana 2 只修 Logo 和错误文字,保留原来的背景、光线和构图。  修复后的两张图都是 1086 × 1448,错误图形、错误颜色和多出来的文字已经去掉,杯身只留下青绿色分段 Logo。 这也正是我觉得 HIAPI 好用的地方。用 HIAPI 可以对比多个模型,如果某个模型的背景不错但是有瑕疵,可以用另一个模型弥补。一个模型把背景做得好,另一个模型把 Logo 修得准,合起来往往比强求一个模型一次完成更省事。前提是每次只改明确的问题,别让修图模型顺手把整张图也换掉。  ## 第四步,从 v1 改到 v2 候选图先过一轮自检,再进入 v1 到 v2 的修改。问题还是飞溅和珍珠。它们一多,杯身上的 Logo 就容易被挡,视线也会从奶茶滑到四周的装饰上。 第二版只动必要的地方。飞溅和珍珠减下来,杯子、冰块、奶泡、渐变色和青绿色 Logo 保留,再看一遍 3 比 4 画布里的主体位置。  我最后按这几项检查。 - 使用了上传的 HIAPI Logo 素材 - 画布为 1086 × 1448,比例为 3 比 4 - 画面没有标题、口号、价格、参数、人物或其他品牌标识 - Logo 位于杯身正面,主体细节没有被飞溅遮挡 - 奶茶、冰块、冷凝水和珍珠保留了商业摄影质感 这次 Skill 更像一张检查单。选哪张图,Logo 能不能发,最后还是我自己看。这样挺好,至少不会只凭第一眼的感觉交稿。 ## 这次实战留下的经验 我现在更愿意把 Skill 理解成一张工作单。它提醒我先问什么、比较什么、哪一步要停下来人工看。下次换成别的食物,至少不用从一句“做得好看点”重新开始。 模型负责把画面方向摊开,产品事实和品牌边界还是得由人确认。图片生成完也不等于可以发布,手机端的 Logo、渠道裁切和最后那点细节,都要有人亲自看。 ### 用 HIAPI 中文图标 Skill,做一套真正统一的产品图标 URL: https://codexguide.io/cases/hiapi-zhong-wen-tu-biao-skill 单独做一枚图标不算难,难的是让一组图标看起来像同一套。主体大小、视角、材质和留白只要有一项没对齐,摆在一起就容易显得散。 # 用 HIAPI 中文图标 Skill,做一套真正统一的产品图标 单独做一枚图标不算难,难的是让一组图标看起来像同一套。主体大小、视角、材质和留白只要有一项没对齐,摆在一起就容易显得散。 这篇文章用 [HIAPI 中文图标 Skill](https://github.com/HiAPIAI/hiapi-icon-skills) 走一遍完整流程:先确定风格和色板,再做 2×2 试稿,接着把同一张参照图交给三个模型,比较它们对图标语义、材质和体积感的处理。文中的提示词可以直接复制,再按你的产品改图标名称和颜色。 ## 一、安装 Skill 在 Codex 终端中运行: ```powershell npx -y github:HiAPIAI/hiapi-icon-skills -y --codex ``` 安装完成后重启 Codex,确认技能列表里已经出现 `hiapi-icon-skills`。如果没有看到,先检查安装命令是否报错,再确认 Skill 是否安装到了当前 Codex 使用的技能目录。 截图时不要带上 API Key、个人目录或账号信息。 ## 二、先选方向,不急着出图 第一次对话没有直接生成图片,只让 Codex 从 Skill 中推荐风格和色板。 ```text HIAPI 中文图标技能,我准备制作一套功能图标。帮我推荐一个适合中文风格的,顺便说明选择理由。 ``` Codex 推荐的是“墨线跳色”风格和“薄荷清晨”色板。前者用水墨线条收住轮廓,后者以薄荷绿、雾蓝和杏色为主,适合中文产品界面的功能图标。  ## 三、用 2×2 试稿验证整套风格 方向确定后,我让 Codex 先做搜索、消息、日历和云端四枚图标,并排成一张 2×2 的图。四个主体的轮廓差别很大,用来检查整套风格是否统一很合适。 ```text 就按这个方向来。先做搜索、消息、日历、云端这 4 个图标,排成一张 2×2 的图。四个图标要像同一套产品里的,主体大小、视角、材质、光线和留白统一。不要文字、字母、Logo、复杂背景。 ```  ## 四、同一张参照图,同时比较三个模型 第一版的内容和配色已经确定。接下来,我把这张图作为参照,同时调用三个模型生成更立体的 Q 版图标。三次生成使用同一张参照图和同一组要求,结果更方便比较。 ```text 参考这张图,把四个图标改成更 Q、更立体的 3D 风格,保持原来的 2×2 排版和薄荷绿配色。使用本地 HIAPI_API_KEY 调用 Nano-Banana-2、Seedream 5.0、GPT Image 2.0 生成模型,各生成一版方便选择。 ``` 截图中的实际模型 ID 是 `seedream-5.0-pro/image-to-image`、`gpt-image-2/image-to-image` 和 `nano-banana-2`。前两个模型保留了搜索、消息、日历和云端,Nano-Banana-2 却生成了钟表、灯泡、齿轮和星星,图标含义已经变了。  ## 五、放大看两个可用候选 先看 Seedream 5.0 Pro。搜索、消息、日历和云端都没有被换掉,2×2 排版也与参照图一致。画面使用薄荷绿、白色和浅蓝色,四枚图标都有清晰的立体厚度和投影。  图五是 GPT Image 2 基于同一张参照图独立生成的结果,不是对图四的二次修改。它同样保留了四个图标的含义和位置,不过主体更大,圆角更明显,投影也更重。  这次对比最先要看的不是哪张更漂亮,而是模型有没有保留原来的四个功能。Nano-Banana-2 的画面也有 3D 效果,但内容已经不是搜索、消息、日历和云端,不能作为这一轮的候选,这也是用HIAPI的好处,一次性多模型多产出,选择更多不怕废片。 ## 六、环境变量要这样处理 项目约定的环境变量名是 `HIAPI_API_KEY`,中间有下划线,不是 `HIAPIAPIKEY`。 如果本地已经配置过 Key,可以让 Codex 只检查它是否存在: ```text 我本地应该已经配置了 HIAPI_API_KEY。你只检查这个环境变量是否存在,不要输出 Key 的值,也不要创建付费任务。告诉我检查结果即可。 ``` Windows PowerShell 临时设置示例: ```powershell $env:HIAPI_API_KEY = "你的 Key" ``` 不要把真实 Key 截进图片、写进文章、提交到仓库,或放进公开的 `.env` 文件。环境变量存在,也不等于已经授权 Codex 调用付费接口。涉及外部计费时,先确认模型、预算和调用次数,再开始生成。 ## 七、这套流程为什么更稳 这次测试的步骤很简单:先用 2×2 试稿确定图标内容,再把同一张参照图交给三个模型。因为输入条件相同,主体大小、投影和材质上的差别一眼就能看出来。挑选结果时先核对图标含义,确认没有跑题,再比较视觉效果。 如果你也想用这套流程做产品图标,可以先去 [HIAPI](https://www.hiapi.ai/en/register?aff=AR3h) 注册账号,再安装上面的中文图标 Skill。 HIAPI 中文图标 Skill 开源仓库:[https://github.com/HiAPIAI/hiapi-icon-skills](https://github.com/HiAPIAI/hiapi-icon-skills) ## 相关链接 - [HIAPI 中文图标 Skill](https://github.com/HiAPIAI/hiapi-icon-skills) ### Codex 协助客座文章外链实验 URL: https://codexguide.io/cases/codex-guest-post-case 这篇记录一次由 Codex 协助完成的客座文章外链实验,重点是它怎样整理筛选条件、检查提交字段和复核发布结果。 # Codex 协助客座文章外链实验 这篇记录一次由 Codex 协助完成的客座文章外链实验,重点是它怎样整理筛选条件、检查提交字段和复核发布结果。 之前我对客座文章这种外链方式只停留在概念上,知道它大概是找一个相关网站,发布一篇带链接的文章,用来给目标页面增加相关性和权重。 这次是第一次实际操作,Codex 帮我把流程跑了一遍。 平台怎么用,筛选条件怎么设,哪些网站看起来指标好但不值得买,文章该怎么写,提交前有哪些必填内容... Codex 很适合做这种平台的实操,替我把大量细节先梳理清楚,替我操作。 ## 先用小预算熟悉平台 这次选的是一个提供客座文章发布服务的平台,先用小预算熟悉流程。 第一次进入这类平台,最容易被一堆指标绕晕。价格、域名权重、自然流量、国家、语言、分类和链接属性都要看。 Codex 先给了我筛选条件。针对自己的网站情况,我们先把语言限定为英文,把分类限定在 Software development 和 Technology,再给价格设一个上限。 目标很明确,先把范围缩小到和自己的网站更相关、预算还能接受的网站,不追求找到全平台最强的网站。 **这一步里,人要做的是定边界。**  比如我知道这次是给 Codex 工具站做外链,不想买太泛娱乐、金融、生活方式的站。Codex 做的是把这些边界翻译成平台上的筛选条件,再帮我解释每个指标代表什么。 ## 看指标,也看这个站像不像真的相关 筛出来以后还有几百个网站,这时候平台的推荐排序就不够用了。 Codex 帮我做了一轮筛选。它会看每个站的价格、流量、域名指标和链接属性,也会继续搜索这个站有没有开发工具和软件开发相关内容。 这个过程里,我学到一个很实用的判断方法。 **一个站不能只看指标,还要看它平时发什么内容。如果一个站满屏都是 crypto、loan、casino、trading 这类高商业化内容,即使 DR 看起来很高,也要谨慎。** 它可能更像一个卖链接的内容农场。 这一步里,人要判断业务价值。Codex 可以帮我把 900 多个候选缩成几个优先级,但最后为什么选一个站,还是要回到项目目标上。我们的网站聚焦 Codex 教程和使用决策,不应该为了一个便宜链接去买完全不相关的网站。 ## 文章不是随便写一篇就行 确定网站以后,下一步是准备 guest post。 这次的承接页是一篇 Codex 开发者教程,所以客座文章也围绕开发者如何判断 Codex 是否适合自己的工作流来写。 Codex 帮我写了一篇英文文章,主题是从真实工作流出发判断编码助手是否适合自己,并把重点落到 Codex 的使用场景。 我不想让这篇文章看起来像硬塞链接,所以锚文本直接描述承接页内容,并把 Codex 放在正文语境里自然出现。 文章写完后,Codex 又帮我检查了几个细节。 目标 URL 要和正文里的链接一致,锚文本要和平台字段一致,正文要满足平台要求的最低字数,Special requirements 要写清楚,希望发布在 software development 或 developer tools 相关栏目里。 Codex 的作用很具体。它会写文章,也会做提交前检查。很多新手第一次买客座文章时,大方向可能已经想清楚了,最后容易栽在这些小字段上。 URL 填首页还是承接页,锚文本有没有和正文一致,图片位置是不是放错了,浏览器翻译插件有没有把中文残留混进正文。  我最后让 Codex 把提交页逐项复核了一遍。  这次文章还加了一张配图。图是为了让文章看起来更完整,也减少发布方随便配一张不相关图的概率。 配图这件事其实也有一套小流程。 先判断是否需要配图,再生成一张和文章主题一致的图,然后上传到图床,最后把图片地址插到文章里。 提交前我又让 Codex 检查了一次正文。最后它通过浏览器把源码里的正文清理了一遍,确认没有明显问题后,才建议我提交订单。 ## 人负责判断,Codex 负责执行和检查 人和 Codex 应该怎么分工。 人负责判断目标。为什么要买这条外链,预算是多少,能接受什么风险,什么类型的网站和我们的产品相关,自己心里要有一个判断。 Codex 适合负责流程执行。它可以帮我读平台、解释字段、设计筛选条件、初筛候选网站、检查内容相关性、写文章、生成配图、上传图床、复核提交字段,还能控制浏览器把一些重复操作走完。 在这个过程中,Codex 会把平台里零碎、容易漏的步骤整理出来,然后一项项执行。 有 Codex 辅助能降低上手成本,也能减少因为不熟平台而犯的低级错误。 最后,客座文章有没有效果,不能看提交完了就结束,而是要等文章发布后继续跟踪。后面还要记录发布 URL、是否 Dofollow、是否收录,以及 Codex 承接页的曝光、点击和平均排名有没有变化。 提交成功后,钱会先进入 Reserved,不是立刻最终完成。 任务会出现在平台的任务列表里,这个页面后面就是验收入口,等文章发布后,还要从这里回来看发布 URL 和任务状态。  ## 发布后还要做一次验收 这件事还没有真正结束。等对方发布文章以后,我还要做一次验收。 第一步是在平台里拿到发布 URL,打开页面确认它能正常访问。页面要返回 200,文章内容不能变成拼接稿,标题、配图、段落结构也要基本正常。然后检查 Codex 相关承接页的链接是否还在,锚文本和目标地址是否正确。 第二步是看链接属性。平台里显示的是 Dofollow,但最终还是要以发布页实际 HTML 为准。需要检查链接有没有被改成 nofollow、sponsored,或者被跳转链接包了一层。如果链接被删了、锚文本被改了、目标页被改错了,就要回到平台任务里沟通修改。 第三步是看这篇文章是否有基本的收录可能。可以先看页面是不是 noindex,再过几天搜索文章标题或使用 site 查询,看它有没有被搜索引擎发现。这个阶段不要急着看排名,因为外链从发布到被发现,再到可能影响目标页,通常需要时间。 4 到 8 周后,再看 Codex 承接页的数据。重点是比较曝光、查询词和平均排名的变化。 如果数据完全没变化,也不代表这条外链一定没用,但至少说明它不是短期明显有效的动作。如果发布页质量一般、没有收录、没有带来任何相关查询变化,后续就不应该继续批量买同类站。反过来,如果发布页正常收录,目标页开始出现更多相关查询,这条实验就值得记录下来,后面可以用类似方法继续找更相关的网站。 这次实验也说明,Codex 可以把外链筛选、提交检查和后续验收串起来,但发布后的数据仍然需要人工持续观察。 ### 在 Codex 中连接 Notion:把调研结果写入数据库 URL: https://codexguide.io/cases/codex-notion-plugin-workflow 这篇教程适合已经能在 Codex 桌面端创建任务,并希望把调研结果直接整理到 Notion 的读者。完成后,你会连接 Notion 插件、验证页面读取权限,并把一组结构化资料写入两个数据库。 # 在 Codex 中连接 Notion:把调研结果写入数据库 这篇教程适合已经能在 Codex 桌面端创建任务,并希望把调研结果直接整理到 Notion 的读者。完成后,你会连接 Notion 插件、验证页面读取权限,并把一组结构化资料写入两个数据库。 示例只使用测试工作区。不要用客户资料、内部知识库或个人页面做第一次连接测试。 ## 本教程环境 以下环境核验于 2026 年 8 月 13 日。Notion 插件运行在 Codex 桌面端的 Plugins 界面中,不要求通过 IDE 或 Codex CLI 操作。 | 项目 | 本教程使用版本 | 获取方式 | 备注 | |---|---|---|---| | 操作系统 | Windows 11 专业版 64 位,构建 `26100` | Windows 系统信息 | 本机实测环境 | | Codex 桌面端 | `26.803.10989.0` | Windows 应用包信息 | 本教程的插件宿主 | | Notion 插件 | 目录托管版本,界面未展示独立版本号 | Codex Plugins 目录 | 以当前插件详情为准 | | Notion Connector | Web 托管版本,界面未展示独立版本号 | Notion 授权界面 | 可用权限受工作区设置影响 | | Codex CLI | `0.146.1` | `codex --version` | 本教程不在 CLI 中执行 | 界面、插件入口和授权范围可能随 Codex、Notion 或工作区策略调整。操作时以当前页面为准。 ## 先说结论 这套流程分成四步:安装插件、限制授权范围、用测试页面验证读取、确认字段后再写入数据库。 真正需要谨慎的是授权和写入。第一次连接时只开放测试页面;批量创建或更新内容前,先让 Codex 列出准备执行的操作。  ## 1. 安装 Notion 插件 启动 Codex 桌面端,在左侧导航栏打开“插件”。如果没有这个入口,先确认当前版本和工作区支持 Plugins,再检查组织管理员是否限制了插件安装。  进入插件目录,在搜索框输入 `Notion`。核对名称和说明后点击安装。  安装过程中,Windows 可能询问是否允许网页打开 ChatGPT。确认地址和来源无误后再继续。不希望系统以后自动跳转,就不要勾选“始终允许”。  ## 2. 限制 Notion 授权范围 连接窗口会列出 ChatGPT 与 Notion 之间共享的数据。先检查申请的权限,再确认选中的 Notion 工作区。 本教程没有保留工作区选择页,因为原画面包含个人空间名称。制作自己的操作记录时,也应隐藏邮箱、成员名单、内部页面名称和授权令牌。  建议新建一个只含公开示例内容的测试页面,并只把这个页面开放给连接。等读取和写入都验证完成,再根据实际任务扩大范围。 ## 3. 用测试页面验证连接 新建 Codex 任务,在输入框键入 `@notion`,从候选列表中选择 Notion 插件,然后写清楚要读取的测试页面。插件必须加入当前任务,Codex 才能在这轮对话中调用它。  第一次只做只读验证。可以使用下面的任务描述: ```text 请读取 Notion 中的测试页面“Notion-Codex demo”,只返回页面标题、正文是否为空和当前可见的属性。不要创建、修改或删除任何内容。 ``` 本次示例返回的页面只有标题,没有正文。这说明连接已经建立,Codex 也能访问指定页面。  如果提示找不到页面,先检查页面是否属于已授权工作区、当前账号是否有访问权限,以及授权时是否选中了正确页面。不要为了绕过错误直接开放整个工作区。 ## 4. 调研资料并确认字段 连接验证通过后,再提交正式调研任务。本次示例整理主流 AI 图片与视频生成模型,要求优先使用官网、官方文档、公告和定价页,并记录: - 模型名称、厂商、发布时间和版本。 - 核心参数、可用状态和价格。 - 优点、限制、推荐场景和官方来源。 - 官网没有公开的字段标为“暂未公开”,不补猜测值。 Codex 完成检索后,先在任务中检查结构化结果,不要立刻写入 Notion。截图中的调研基准日是 2026 年 8 月 12 日;模型状态和价格变化较快,复用这套表格时需要重新核对。  检查时重点看字段是否一致、每条记录是否有来源、未知信息是否被明确标出。发现无来源的价格或参数,先删除或补证据。 ## 5. 写入 Notion 数据库 确认内容后,再让 Codex 创建一个总览页,并把图片模型和视频模型分别放进两个子数据库。总览页保留调研日期、使用说明和数据库入口。  图片模型数据库使用厂商、可用状态、计费方式、优势标签、推荐场景和官方来源等字段。标签适合筛选,官方来源用于后续复核。  视频模型数据库沿用同一套字段。图片和视频分开后,各自的版本、状态和价格更容易维护。  ## 如何验收 写入完成后,不要只看 Codex 的完成提示。回到 Notion 逐项检查: 1. 总览页和两个数据库位于预期的测试页面下。 2. 数据库字段名称、类型和选项一致。 3. 每条记录都有可打开的官方来源,未知字段没有被猜测值填满。 4. 没有覆盖同名页面,也没有修改授权范围之外的内容。 5. 测试结束后,Notion 连接设置中的访问范围仍符合预期。 如果结果不对,先停止后续写入。记录出错的字段或页面,再让 Codex 只修正这一小部分。 ## 权限与限制 - 插件能看到什么,取决于 Notion 账号、工作区策略和授权页面范围。 - 批量写入前先要求 Codex 列出目标页面、数据库和字段,不要把确认步骤省掉。 - 价格、地区可用性和 Preview 状态会变化,资料库应保留来源与核验日期。 - 不再使用的测试连接可以撤销;测试页面应与正式知识库分开。 - 本教程只验证了页面读取、页面创建和数据库写入,没有验证团队级权限管理或大批量更新。 ## 参考资料 - [Notion 官方网站](https://www.notion.com/) - [OpenAI Codex 文档](https://developers.openai.com/codex/) ### 用开源 img-convert Skill 批量压缩图片 URL: https://codexguide.io/cases/img-convert-pi-liang-ya-suo-tu-pian 整理文章配图时,我经常重复做几件事。限制图片宽度,转成 WebP,控制文件大小,最后确认原图没有被覆盖。这个流程已经有人做成了开源工具和 Skill,没必要从零写一套。 # 用开源 img-convert Skill 批量压缩图片 整理文章配图时,我经常重复做几件事。限制图片宽度,转成 WebP,控制文件大小,最后确认原图没有被覆盖。这个流程已经有人做成了开源工具和 Skill,没必要从零写一套。 这篇实战使用 [dutchbase/img-converter](https://github.com/dutchbase/img-converter) 提供的 `img-convert` Skill。目标是把指定文件夹中的图片统一限制在 1200px 宽,转成质量 85 的 WebP,并把结果放进新目录。 > 测试环境为 Windows 11 24H2(26100.4652)、Codex Desktop 26.810.7004.0、Codex CLI 0.147.0、Node.js 22.22.3、skills 1.5.22 和 img-convert 1.0.4,2026-08-17 核验。 > 开源项目、Skill 与 CLI 安装、dry-run、三图批量转换和原图/输出目录对比均已于 2026-08-17 实测并截图。 ## 一、先看这个开源 Skill 能做什么 `img-convert` 基于 Sharp,仓库使用 MIT 许可证。项目同时提供命令行工具、Node.js API、MCP 服务和一份现成的 `SKILL.md`。这篇只使用最简单的组合,让 Codex 按 Skill 中的规则判断,再调用 CLI 处理本地图片。 它支持 JPEG、PNG、WebP、AVIF、GIF 和 TIFF 输出,也能调整尺寸、压缩质量、旋转、裁边和读取图片信息。批量任务既可以传入 glob 路径,也可以使用 JSON 清单。  安装前可以先让 `skills` 命令读取仓库,确认其中确实有 `img-convert`。 ```powershell npx -y skills add https://github.com/dutchbase/img-converter --list ``` 命令应显示一个名为 `img-convert` 的 Skill。不要只凭第三方介绍页安装,仓库中的 [SKILL.md](https://github.com/dutchbase/img-converter/blob/main/SKILL.md) 才是实际内容。   ## 二、安装 Skill 和命令行工具 先把 Skill 安装到 Codex 的全局技能目录。 ```powershell npx -y skills add https://github.com/dutchbase/img-converter ` --skill img-convert ` --agent codex ` --global ` --yes ``` Skill 只负责告诉 Codex 怎样使用工具,并不会自动安装 `img-convert` 命令。还要安装仓库发布的 npm 包。 ```powershell npm install -g @dutchbase/img-convert ``` 本次安装成功,但 npm 同时提示其依赖的 `glob@10.5.0` 已弃用。这个警告不影响本文测试。在生产目录或自动化流水线使用前,应重新检查包版本、依赖审计结果和仓库更新情况,先用可恢复的图片副本测试。 这个工具要求 Node.js 18 或更高版本。安装完成后检查命令是否可用。 ```powershell node --version img-convert --help img-convert info --help img-convert batch --help ```   ## 三、把处理规则说清楚 这次使用下面这组参数。 | 项目 | 设置 | | --- | --- | | 输入 | 指定目录中的 JPG、JPEG、PNG 和 WebP | | 输出目录 | 新建 `output` 目录 | | 最大宽度 | 1200px | | 输出格式 | WebP | | 图片质量 | 85 | | 原文件 | 保留,不覆盖、不删除 | `img-convert` 默认保持宽高比,也默认禁止放大小图。宽度超过 1200px 的图片会等比缩小,小于 1200px 的图片保持原尺寸。 输出目录必须和原图目录分开。这样即使命令参数写错,原文件也还在。 ## 四、先预演,不急着写文件 假设原图位于 `D:\images\original`,先运行 `--dry-run` 查看将要处理的文件。 ```powershell img-convert "D:/images/original/**/*.{jpg,jpeg,png,webp}" ` --format webp ` --width 1200 ` --quality 85 ` --output "D:\images\output" ` --dry-run ` --json ``` 这里把 glob 路径放在引号中,让 `img-convert` 自己展开文件列表。Windows 下的 glob 要使用正斜杠 `/`,反斜杠会被当成转义符,可能导致一张图片都找不到。预演后要核对文件数量和输出目录,还要检查两个不同格式的同名文件会不会写成同一个 `.webp`。  ## 五、确认后再批量转换 预演没有问题,就去掉 `--dry-run`。 ```powershell img-convert "D:/images/original/**/*.{jpg,jpeg,png,webp}" ` --format webp ` --width 1200 ` --quality 85 ` --output "D:\images\output" ` --json ``` `--json` 会返回每张图片的输入大小、输出大小、压缩比例、尺寸和保存路径。文章后面可以直接根据这些结果统计总共节省了多少空间,不需要手工逐张计算。  截图中用 `compact-json.js` 只调整真实 JSON 的换行,字段和值没有改动。三张图片全部转换成功,失败数为 0。 如果不同图片需要不同尺寸或格式,可以让 Codex 先生成 JSON 清单,再运行下面的命令。 ```powershell img-convert batch jobs.json --json ``` 简单的统一转换用 glob 就够了,不必先做清单。 ## 六、直接让 Codex 调用 Skill 安装并重启 Codex 后,可以这样说。 ```text 使用 img-convert Skill,先检查 D:\images\original 中会被处理的 JPG、JPEG、PNG 和 WebP 图片。 把宽度限制为 1200px,保持比例,不放大小图,统一转成质量 85 的 WebP,输出到 D:\images\output。 保留所有原文件。先 dry-run 并汇报文件数量和命名冲突,确认没有问题后再执行,最后给出处理成功数、失败数和总压缩比例。 ``` 这段要求把检查、预演、执行和汇报写在了一起。Skill 还会提醒 Codex 先读取陌生图片的信息,尤其注意透明通道和动画图片。 ## 七、用三张公开图片验证 测试集包含一张 1800×1200 JPG、一张 560×560 PNG 和一张 550×368 WebP。大图被等比缩到 1200×800;两张小图仍保持原尺寸,说明设置 `--width 1200` 不会把小图放大。 结果也说明“统一转 WebP”不等于每张都会更小。JPG 减少 48.8%,PNG 减少 14.2%,但原本已经压缩过的 WebP 重新编码后反而增大 19.7%。批量任务结束后必须检查负压缩率,不能只看成功数量。 ## 八、记录批量处理结果 | 项目 | 处理前 | 处理后 | | --- | --- | --- | | 图片数量 | 3 | 3 | | 总文件大小 | 237,357 字节 | 144,698 字节 | | 最大宽度 | 1800px | 1200px | | 文件格式 | JPG/PNG/WebP | WebP | | 失败数量 | - | 0 | 总大小减少 92,659 字节,整体压缩率约 39.0%。原图目录没有被覆盖,三个 WebP 都写入独立的 `output` 目录。 下图直接使用三张公开测试原图拼接,标签列出对应的输出尺寸和文件大小变化。  ## 九、最后检查这些情况 - 原图数量、名称和内容没有变化 - 输出图片都位于单独目录 - 横图和竖图保持原始比例 - 小于 1200px 的图片没有被放大 - 透明区域没有意外变黑 - 动画图片没有在不知情的情况下只保留第一帧 - 同名输入不会静默覆盖同一个 WebP 文件 - 失败文件及原因已经单独列出 ## 十、项目链接 - GitHub [dutchbase/img-converter](https://github.com/dutchbase/img-converter) - Skill 源文件 [SKILL.md](https://github.com/dutchbase/img-converter/blob/main/SKILL.md) - npm 包 [`@dutchbase/img-convert`](https://www.npmjs.com/package/@dutchbase/img-convert) - 许可证 [MIT License](https://github.com/dutchbase/img-converter/blob/main/LICENSE) ## 快速上手 ### 修改本地网页并检查结果 URL: https://codexguide.io/quickstarts#quickstart-first-local-web-task 用独立的 HTML/CSS 练习完成首个小修改,保留按钮链接与样式,再查看 diff 和浏览器页面。 - 尚未准备好:先阅读安装与首次使用、登录和打开本地项目;已经能使用 App 或 CLI:直接复制练习包中的起始文件到新的测试目录。 - 在 Codex App 或 CLI 中打开复制出的目录,确认其中直接包含 index.html 和 styles.css;不要直接修改原始 starter。 - 让 Codex 只把主标题改为“我的第一个 Codex 练习”,把简介改为“先看清修改,再确认页面结果。”,保留按钮链接、其他 HTML 和全部 CSS。 - 查看 diff,再在浏览器打开 index.html,确认标题、简介、按钮和样式;不运行安装或部署命令。 验收: 只有 index.html 的标题和简介改变,按钮仍指向 https://example.com,styles.css 未变,浏览器页面与目标文字一致。 ### 首次安装、登录并打开项目 URL: https://codexguide.io/quickstarts#quickstart-install-login-open-project 用最少的配置完成第一次 Codex 本地启动,确认账号、工作目录和 Git 状态都可用。 - 从 OpenAI Codex 官方入口选择 App、CLI 或 IDE extension,并按当前系统完成安装。 - 使用 ChatGPT 账号或 API Key 登录;不要把 token、auth.json 或 .env 提交到仓库。 - 打开一个范围清楚、可以回退的项目目录,先运行 git status --short --branch。 - 让 Codex 只读 README、依赖文件和测试目录,先回报项目用途、启动命令和未知信息。 验收: 你能说明当前项目、当前分支、启动命令和第一项可回滚任务,且工作区没有意外修改。 ### 完成一个可回滚的真实任务 URL: https://codexguide.io/quickstarts#quickstart-complete-reversible-task 从清晰目标开始,经过读取上下文、最小修改、验证和 diff 审查,走完一次完整闭环。 - 选择一个十几分钟到一小时内能验收的小任务,例如修复可复现的 Bug、补一条测试或更新一段文档。 - 写清 Goal、Context、Constraints 和 Done when,指定允许修改的目录与禁止触碰的内容。 - 让 Codex 先调查并提出计划,再执行最小范围的修改;中途检查 diff,不把多个结果混在一个任务里。 - 运行与任务对应的测试、构建或页面检查,记录成功、失败和无法验证的部分。 - 审查 git diff 与 git status,确认没有敏感文件或无关重构,再提交或回滚。 验收: 任务有可复现的完成标准,验证命令有输出,diff 只包含目标改动,并且能在需要时恢复到起点。 ### 排查权限、Git 或验证失败 URL: https://codexguide.io/quickstarts#quickstart-troubleshoot-permission-git-verification 遇到批准弹窗、工作区冲突、命令失败或测试不稳定时,按证据定位问题,不靠重复重试。 - 先保存失败命令、完整错误、当前路径和 git status,不要先删除缓存或覆盖现有修改。 - 检查请求是否越过工作区、是否需要网络,以及命令会读写哪些文件;高风险操作使用 Ask for approval。 - 确认失败属于环境基线、权限策略、依赖缺失、Git 冲突还是本次代码修改,并逐项隔离。 - 用最小复现重新运行验证;若仍失败,记录已验证的范围和不能验证的原因。 - 检查 diff、依赖锁文件和配置,避免用 Full access 或大范围重构掩盖根因。 验收: 你能把失败归类到明确原因,提供一条可复现命令和下一步动作,而不是只报告“Codex 已完成”。 ## 进阶专题 ### config.toml 配置指南:exec、沙箱与审批策略 URL: https://codexguide.io/advanced/config-toml 从默认配置到项目级覆盖,理解 Codex 的 config.toml 如何影响模型、沙箱、审批策略和命令行工作方式。 #### 先从最小配置开始 配置文件应只保留团队确实需要固定的选项。先完成一次可回滚的任务,再根据重复出现的偏好补充配置。 把个人偏好放在用户级配置,把仓库协作约定放在项目说明文件中,避免把机器路径和密钥提交到 Git。 - 默认从受控工作区、最小权限和 Ask for approval 开始。 - 修改前保留原文件并查看 diff。 - 敏感值使用环境变量或凭据管理器。 - 每次改动后用一个小任务验证实际生效。 #### exec 与 interactive 怎么选 两种方式的差异在于任务是否需要持续的人机确认。exec 更适合可重复的命令和 CI,interactive 更适合调查、修改和逐步排障。 维度 | exec | interactive 输入方式 | 一次性命令或脚本 | 持续对话 输出形式 | 退出码、日志和结果 | 对话、diff 和人工确认 审批设计 | 预先定义策略 | 执行中逐项确认 适用场景 | 自动化、批处理、CI | 调查、修改、逐步排障 完成证据 | 命令输出、测试结果 | diff、测试和人工检查 #### sandbox、permissions 与 approval policy sandbox 决定执行环境可访问的资源,permissions 描述任务允许触碰的范围,approval policy 决定哪些动作需要人工确认。它们不是同一个开关,调整前先明确要解决的具体阻塞。 遇到文件被拒绝、网络审批或 Full access 疑问时,可以直接查看[权限与审批 FAQ](/guides/faq#permissions)。 - 文件写入失败:先检查工作区和路径。 - 网络或工作区外操作:确认目标后再批准。 - 高风险命令:保留备份和回滚点,不用扩大权限掩盖根因。 #### slash commands 速查 斜杠命令属于交互入口,具体可用项会随当前 Codex 版本和入口变化。使用前先在当前环境查看帮助,不要把旧版本命令写入自动化脚本。 - 先查看当前入口提供的帮助和命令列表。 - 把重复且稳定的流程沉淀到 AGENTS.md 或 Skill。 - 命令执行后仍需查看 diff 和验证结果。 #### 与快速上手衔接 如果还没有稳定的本地工作流,先完成[首次安装、登录并打开项目](/quickstarts#task-quickstarts-title),再逐项调整配置。 #### 交叉阅读 需要收紧权限时阅读[权限与安全边界](/codex/permissions);需要判断配置是否生效时阅读[从 diff 到回归检查](/codex/validation);遇到具体错误时进入[权限与验证 FAQ](/guides/faq#permissions)。 ### AGENTS.md 项目协作规则 URL: https://codexguide.io/advanced/agents-md 用 AGENTS.md 给 Codex 提供可检查、可继承的项目上下文,让修改范围和验收标准保持一致。 #### 写清楚四件事 一份有效的 AGENTS.md 至少说明项目用途、常用命令、目录边界和完成标准。规则要具体到可以执行或验证,而不是只写风格口号。 - 允许修改哪些目录,禁止碰哪些文件。 - 安装、开发、测试和构建命令。 - 提交前必须运行的检查。 - 生成文件、迁移和生产操作的审批要求。 #### 先验证再扩大范围 可以先按[完成一个可回滚的真实任务](/quickstarts#task-quickstarts-title)验证规则是否足够,再把稳定做法沉淀回 AGENTS.md。 ### 权限与安全边界 URL: https://codexguide.io/advanced/permissions-security 掌握 Codex 的工作区、网络、审批和敏感信息边界,降低自动化修改带来的误操作风险。 #### 把权限当作任务约束 权限越大,错误操作的影响面越大。默认从受控工作区和最小权限开始,遇到需要联网、写入工作区外或执行高风险命令时再明确审批。 - 先看 git status,确认已有改动不会被覆盖。 - 不要把 token、auth.json、.env 或客户数据放入提示词和提交。 - 生产、数据库和删除操作必须由人确认。 #### 遇到失败如何排查 保留完整错误、路径和当前分支,按[权限、Git 与验证失败 FAQ](/guides/faq#permissions)的顺序隔离环境问题与代码问题。 ### MCP 外部工具接入 URL: https://codexguide.io/advanced/mcp 理解 MCP 服务器、工具权限和数据边界,安全地把外部资料或服务接入 Codex 工作流。 #### 先定义数据边界 接入 MCP 前先确认服务器来源、会发送哪些数据、是否会写入外部系统,以及失败时能否撤销。只启用当前任务需要的工具。 - 优先使用只读工具验证连接。 - 为每个服务器记录用途、权限和负责人。 - 不要把生产凭据直接写进仓库配置。 #### 从一次小任务开始 先用[首次安装与项目检查](/quickstarts#task-quickstarts-title)确认本地工作区和 Git 状态,再接入一个可验证、可回滚的 MCP 操作。 ### 自动化与定时任务 URL: https://codexguide.io/advanced/automation 把重复的 Codex 工作拆成有边界的自动化任务,设计触发条件、日志、失败处理和人工闸门。 #### 自动化任务的四个组成部分 一个可维护的自动化任务应明确输入、输出、执行权限和验收方式。任务越接近生产,越需要人工批准和可追溯日志。 - 触发:定时、提交或手动运行。 - 范围:固定目录、分支和资源。 - 验证:测试、构建或报告。 - 失败:停止、通知和恢复路径。 #### 先把流程跑通 建议先按[完成一个可回滚的真实任务](/quickstarts#task-quickstarts-title)手动跑通,再迁移到 CI 或定时任务,避免自动化放大未验证的流程。 ### Windows 与 WSL 使用要点 URL: https://codexguide.io/advanced/windows 在 Windows 和 WSL 环境中配置 Codex 的路径、终端、Git 与权限,减少跨系统命令和文件编码问题。 #### 先统一工作目录 明确项目是在 Windows 文件系统还是 WSL 文件系统中运行,并尽量让 Git、Node、包管理器和 Codex 使用同一套环境。跨边界访问会带来路径、权限和性能差异。 - 使用 git status --short --branch 检查分支和工作区。 - PowerShell 与 Bash 命令不要混用未验证的路径语法。 - 确认换行符、文件编码和执行权限符合项目约定。 #### 快速验证环境 可以从[首次安装、登录并打开项目](/quickstarts#task-quickstarts-title)开始,先完成只读检查,再执行一个小修改并查看 diff。遇到 PATH、终端或跨系统路径问题时,进入[Windows 与 WSL FAQ](/guides/faq#environment)。 ## 入门教程 ### Codex 是什么:能力、工作方式与使用边界 URL: https://codexguide.io/guides/codex-shi-shen-me 如果你刚接触 Codex,还不确定它和普通 AI 对话有什么区别,可以从这里开始。 # Codex 是什么:能力、工作方式与使用边界 > 难度:基础 > > 类型:概念与入门 ## 这篇文章适合谁 如果你刚接触 Codex,还不确定它和普通 AI 对话有什么区别,可以从这里开始。 这篇文章不讲安装和复杂配置,只回答几个最先遇到的问题:Codex 是什么,它怎样完成任务,哪些事情适合交给它,以及为什么它修改了文件之后仍然需要人工检查。 ## 先说结论 Codex 是面向软件开发任务的 AI 编程助手。它可以在你提供的项目和权限范围内读取文件、理解代码、修改内容、执行命令,并通过测试或其他检查验证结果。 把它理解成“可以在项目里动手的编程助手”,比把它理解成“更会写代码的聊天机器人”准确。 两者最大的差别不在于回答得多聪明,而在于 Codex 可以围绕一个真实项目采取行动。行动也意味着风险,所以工作目录、沙箱、审批和版本控制都很重要。  > 图片来源:[OpenAI Codex 官方文档](https://developers.openai.com/codex/)。 ## Codex 是怎样完成任务的 一次比较完整的 Codex 任务通常会经过下面这些步骤。 ```mermaid flowchart LR A["接收目标和限制"] --> B["读取项目与规则"] B --> C["分析问题和制定步骤"] C --> D["修改文件或调用工具"] D --> E["运行测试与检查"] E --> F["汇报结果、风险和剩余问题"] ``` 这张图是工作方式示意,不代表每个任务都必须严格走完六步。一个只读问题可能在分析后直接回答;一个功能开发任务则可能多次往返于修改和测试之间。 Codex 会同时处理对话和项目材料,包括项目文件、命令行输出、测试结果以及你为仓库设置的规则。 ### 1. 接收目标和限制 Codex 首先需要知道你想完成什么。只有一句“帮我优化一下”通常不够,因为“优化”可能指性能、结构、文案或界面。 更清楚的任务会说明目标、允许修改的范围,以及怎样才算完成。例如:只修改登录页面,不改后端接口;完成后运行现有测试,并说明还有哪些情况没有覆盖。 ### 2. 读取项目和规则 Codex 可以读取你允许它访问的文件夹。它通常会先查看 README、依赖文件、目录结构、相关源码和测试,判断项目使用什么技术,以及应该从哪里动手。 仓库中的 `AGENTS.md` 也可以保存长期规则,比如常用命令、代码风格、禁止修改的目录和验证要求。 ### 3. 修改文件或调用工具 确认方向后,Codex 可以编辑文件、执行终端命令、搜索代码,或者调用已经配置的工具。它能做多少,取决于当前使用入口和权限设置。 本地环境中的 Codex 通常在受控工作区里操作。访问工作区之外的目录、使用网络或执行风险较高的动作时,可能需要额外审批。 ### 4. 验证结果 文件发生变化并不代表任务已经完成。可靠的结果还需要测试、构建、类型检查、页面检查或其他与项目匹配的验证方式。 如果项目没有测试,也要让 Codex说明它实际检查了什么。没有验证条件时,结论应当写成“已完成修改,但尚未经过完整验证”,而不是直接说问题已经解决。 ## Codex 和普通 AI 对话有什么不同 | 对比项 | 普通 AI 对话 | Codex 任务 | |---|---|---| | 主要上下文 | 当前对话和你上传的内容 | 对话、项目文件、仓库规则和工具结果 | | 常见输出 | 解释、建议、代码片段 | 文件修改、命令结果、测试结果和说明 | | 是否能直接行动 | 通常以回答为主 | 可以在授权范围内操作项目 | | 完成标准 | 回答是否有帮助 | 项目是否被正确修改并通过验证 | | 需要关注的风险 | 信息是否准确 | 信息准确性、文件改动、权限和外部操作 | 这个区别也解释了为什么使用 Codex 时应该保持 Git 工作区清楚。你需要能够查看它改了哪些文件,必要时撤销修改,而不是只看最终回复写得是否顺畅。 ## Codex 可以完成哪些任务 Codex 比较适合目标明确、结果可以检查的软件开发任务,例如: - 阅读陌生项目并整理结构和运行方式。 - 实现一个范围清楚的小功能。 - 根据报错和日志查找 Bug 原因。 - 修改代码后运行测试、构建或类型检查。 - 补充测试、文档、脚本和配置。 - 阅读代码差异,检查明显的错误和风险。 - 协助完成 Git、Issue、Pull Request 等开发流程。 它也可以参与文档、研究和内容工作流,但那类任务更接近 ChatGPT Work 或文件处理场景。本知识库会把软件开发相关内容放在主线,把外部工具和非开发场景放到独立栏目。 ## 哪些事情不能直接相信 Codex Codex 能行动,并不等于它天然知道正确答案。 下面几类任务尤其需要谨慎: - 需求本身含糊,却要求它自行决定产品逻辑。 - 没有测试和运行环境,却要求确认 Bug 已经修复。 - 直接操作生产环境、线上数据库或重要账号。 - 项目中存在密钥、客户数据或未脱敏文件。 - 大范围重构,但没有版本控制和回滚方案。 - 涉及安全、合规和业务责任的最终判断。 比较稳妥的做法是先限制范围,让 Codex说明计划,再查看差异并运行验证。权限不是开得越大越好,够当前任务使用即可。 ## Codex 有哪些使用入口 OpenAI 当前提供桌面 App、CLI、IDE 扩展和云端等入口。它们面对的是不同工作习惯。  > 图片来源:[OpenAI Quickstart](https://learn.chatgpt.com/docs/quickstart)。 - 桌面 App 适合在项目、文件和多个任务之间切换,也方便查看执行过程。 - CLI 适合习惯终端、希望紧贴本地仓库工作的开发者。 - IDE 扩展适合一边阅读和编辑代码,一边让 Codex 处理当前项目。 - 云端任务适合把工作交给托管环境执行,具体能力取决于账号和环境配置。 第一次使用不需要同时掌握所有入口。先选择一个和日常工作最接近的方式,完成一次小任务,再考虑是否切换。 ## 第一次可以这样使用 第一次打开项目时,我更建议先让 Codex 做只读理解,不要立刻要求它重构整个仓库。 可以从一个真实而克制的任务开始: ```text 请先阅读这个项目的 README、依赖文件和主要目录,不要修改任何文件。 告诉我: 1. 这个项目解决什么问题; 2. 使用了哪些主要技术; 3. 本地应该怎样启动; 4. 如果我要修改首页,最可能涉及哪些文件; 5. 目前还有哪些信息无法确认。 ``` 这不是所谓的万能提示词。它只是把第一次进入陌生项目时真正需要弄清楚的事情说完整了。 拿到回答后,可以自己打开 README 和依赖文件核对。确认 Codex 对项目的理解基本正确,再交给它一个小修改,例如改一段文字、修复一个可以复现的样式问题,或者补充一条测试。 ## 新手常见误解 ### Codex 会自动知道整个项目 不会。它需要读取文件,也会受到上下文、权限和时间限制。大型项目更应该告诉它先看哪些模块。 ### Codex 修改了文件,任务就完成了 不一定。至少要查看差异,并运行与任务相关的测试或检查。 ### 给足权限,Codex 就会做得更好 权限只决定它能访问和执行什么,不保证判断更正确。过大的权限反而会扩大误操作影响。 ### 新手应该先安装很多插件 没有必要。先学会描述任务、检查修改和验证结果。等你发现某个流程反复出现,再学习 Skills、MCP 和插件会更自然。 ## 下一步学习 接下来可以进入 [安装与首次使用](../01-安装与首次使用/),选择适合自己的入口,并完成第一个可验证的小任务。 如果已经安装好 Codex,可以继续阅读本目录后续文章,先弄清楚自己适合怎样使用,再进入项目实战。 ## 参考资料 - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) - [OpenAI Quickstart](https://learn.chatgpt.com/docs/quickstart) - [OpenAI Prompting](https://learn.chatgpt.com/docs/prompting) - [Agent approvals and security](https://learn.chatgpt.com/docs/agent-approvals-security) - [Sandbox](https://learn.chatgpt.com/docs/sandboxing) Codex 更新较快,界面、入口和权限设置可能随版本调整。 ### Codex 适合哪些人:判断标准、典型场景与学习起点 URL: https://codexguide.io/guides/codex-shi-he-na-xie-ren 这篇文章写给正在判断“我有没有必要学 Codex”的读者。 # Codex 适合哪些人:判断标准、典型场景与学习起点 > 难度:基础 > > 类型:概念与选择 ## 这篇文章适合谁 这篇文章写给正在判断“我有没有必要学 Codex”的读者。 你可能是一名开发者,也可能只写过一点代码;还可能平时主要维护网站、GitHub 仓库、Markdown 文档或自动化脚本。职业名称不能直接决定你是否适合使用 Codex,日常任务的形态更有参考价值。 ## 先说结论 Codex 最适合这类任务:有明确的项目或文件作为上下文,需要实际修改或执行操作,并且结果能够被检查。 判断自己是否适合使用 Codex,可以先看三个条件: 1. 任务是否依赖代码、文件、配置或仓库。 2. 是否希望 AI 采取行动,而不只是给出建议。 3. 是否有办法检查修改是否正确。 三个条件都满足,Codex 通常是合适的工具。只需要聊天、查一个概念,或者完成纯研究和文档交付时,Chat 或 ChatGPT Work 可能更直接。  > 图片来源:[OpenAI Quickstart](https://learn.chatgpt.com/docs/quickstart)。 OpenAI 当前在 Quickstart 中给出的分工很清楚:研究、分析以及文档、演示文稿、电子表格等交付物可以选择 ChatGPT Work;需要代码库上下文和开发工具的软件开发任务选择 Codex;快速问题或普通对话使用 Chat。 这个分法比“程序员用 Codex,其他人不用”更实用。有人虽然不是职业开发者,但每天都在维护网站、脚本和 GitHub 仓库;也有开发者只是想问一个语法问题,没有必要为此启动完整的 Codex 任务。 ## 先看任务,再看身份 下面这张表可以帮助你快速判断。 | 任务特征 | 更适合的入口 | 原因 | |---|---|---| | 需要阅读和修改代码仓库 | Codex | 需要项目上下文、文件操作和开发工具 | | 需要修 Bug、写测试或检查代码差异 | Codex | 结果可以通过测试、构建或 Review 验证 | | 需要整理资料并生成报告、表格或演示文稿 | ChatGPT Work | 重点是研究、分析和交付物 | | 只是询问一个概念或讨论想法 | Chat | 不需要访问项目或执行工具 | | 任务既有文档又有代码 | 根据主要产物选择 | 主要交付物是代码就优先 Codex,主要交付物是报告就优先 Work | 工具选错后,任务仍可能完成,只是沟通和检查成本会更高。把主要交付物想清楚,通常就能做出选择。 ## 专业开发者 专业开发者是 Codex 最直接的用户群体,因为日常工作天然具备项目、工具和验证条件。 适合交给 Codex 的任务包括: - 阅读陌生仓库并定位功能入口。 - 实现范围清楚的小功能。 - 根据报错、日志和测试定位问题。 - 修改代码后运行测试、Lint、类型检查和构建。 - 补充测试、文档和开发脚本。 - 阅读分支差异,检查明显的错误和风险。 开发者使用 Codex 的实际收益,常常来自连续完成搜索、修改、执行和初步验证。人负责需求判断、架构选择和最终审查。 这类读者可以从 [项目理解与上下文](../03-项目理解与上下文/) 开始,再进入 [代码修改与开发实战](../04-代码修改与开发实战/)、[Git协作与代码审查](../05-Git协作与代码审查/) 和 [测试调试与质量保障](../06-测试调试与质量保障/)。 ## 正在学习编程的人 编程初学者也可以使用 Codex,但要避免把“任务完成”误当成“自己已经理解”。 比较适合的用法是: - 让 Codex 解释项目入口和文件之间的关系。 - 对照一段真实代码说明语法和运行过程。 - 完成一个很小的修改,再查看具体差异。 - 为现有函数补一条测试,并解释测试验证了什么。 - 根据报错整理排查顺序,而不是直接索要最终答案。 初学者最容易遇到的问题是,代码看起来能运行,但自己说不清它为什么这样写。遇到这种情况,应该继续追问修改原因、替代方案和验证方法,而不是马上进入下一个功能。 第一次任务可以只让 Codex 阅读项目,不修改文件。确认它对项目的解释与 README、代码和运行结果一致后,再交给它一个可以在十几分钟内核对的小改动。 ## 独立开发者和个人创作者 独立开发者往往同时负责产品、设计、代码、部署和文档。Codex 适合帮助处理那些边界清楚、但会打断工作节奏的任务。 例如: - 给现有页面增加一个表单或响应式布局。 - 修复一个已经能够复现的问题。 - 为项目补充部署说明和环境变量示例。 - 把重复的手工步骤改成脚本。 - 检查上线前的代码差异和测试结果。 它不适合替你决定产品是否值得做,也不能代替真实用户反馈。需求优先级、产品取舍和发布责任仍然在人。 这类读者可以先完成 [代码修改与开发实战](../04-代码修改与开发实战/) 中的小任务,再学习 [自动化与高级工作流](../11-自动化与高级工作流/)。 ## 技术负责人和团队管理者 技术负责人不一定需要让 Codex 亲自写完每一段代码。它在团队中的价值更多体现在规则、审查和重复流程上。 适合的场景包括: - 根据仓库规则检查 Pull Request。 - 让 Codex 汇总修改范围、测试结果和剩余风险。 - 把常用命令和验证要求写入 `AGENTS.md`。 - 把重复的代码审查、发布检查或安全检查做成 Skill。 - 为新成员整理项目结构和本地运行方式。 团队使用时还要考虑权限、凭据、审计和数据边界。个人电脑上能运行的配置,不应该未经检查直接复制到团队环境。 这类读者可以重点阅读 [配置模型与权限安全](../10-配置模型与权限安全/) 和 [自动化与高级工作流](../11-自动化与高级工作流/)。 ## 不以编程为主的读者 即使不长期写业务代码,只要工作围绕可操作的数字文件展开,也可以考虑使用 Codex。 下面这些场景可以考虑 Codex: - 维护一个使用 Markdown 的 GitHub 知识库。 - 修改静态网站、博客主题或简单前端页面。 - 批量整理文件名、文本格式或目录结构。 - 编写和维护小型自动化脚本。 - 阅读开源项目,理解安装步骤和配置文件。 - 让 Codex 检查文档链接、文件结构和发布前状态。 这类任务通常仍然涉及文件、脚本或版本控制,所以 Codex 能发挥作用。如果主要工作是搜集资料、分析一批文档并生成报告,ChatGPT Work 往往更顺手。 非开发者使用 Codex 时,建议从只读任务开始,并保持 Git 版本记录。不要在看不懂修改内容的情况下,直接执行涉及账号、网络、数据库或系统权限的操作。 可以先阅读 [核心概念与任务方法](../02-核心概念与任务方法/) 和 [官方工具与集成](../12-官方工具与集成/),再从 [真实案例复盘](../14-真实案例复盘/) 中选择和自己工作接近的案例。 ## 哪些人暂时不适合直接使用 Codex 下面这些情况不代表永远不能用,但不适合一开始就让 Codex 大范围执行任务。 ### 没有明确任务,只想看看 AI 能做什么 可以先用 Chat 讨论想法,或者阅读案例。没有目标时直接开放整个项目,通常只会得到泛泛的建议或不必要的修改。 ### 完全无法检查结果 如果你既不能运行项目,也无法请其他人审查,就不适合让 Codex直接修改高风险代码。可以先用它解释项目和整理问题,不要直接发布结果。 ### 任务涉及生产环境和重要数据 线上数据库、支付、客户数据、服务器权限和密钥都需要更严格的审批与备份。第一次使用 Codex 不应该从这些任务开始。 ### 期待一句话完成一个大型项目 复杂项目需要需求拆分、阶段验证和持续决策。Codex 可以参与这些步骤,但不会因为输入一句“帮我做一个完整平台”就自动补齐所有产品和技术判断。 ## 一个简单的自测方法 下面的问题不是 OpenAI 官方评分,只是帮助你判断起点。 1. 我的工作中是否经常出现代码、配置、Markdown 或 GitHub 仓库? 2. 我是否有一些重复的文件修改、检查或脚本任务? 3. 我能否说明任务完成后应该看到什么结果? 4. 我能否查看 Git diff、运行测试,或者用其他方式核对结果? 5. 我愿意先从小任务开始,而不是立刻开放全部权限吗? 6. 出现不确定结果时,我是否愿意暂停并人工判断? 如果大部分答案是“是”,可以开始学习 Codex。如果只有两三个“是”,先选择低风险、可撤销的小任务。如果几乎都是“否”,Chat 或 ChatGPT Work 可能更符合当前需求。 ## 不同读者从哪里开始 | 读者 | 推荐起点 | 第一个任务 | |---|---|---| | 编程初学者 | [安装与首次使用](../01-安装与首次使用/) | 只读分析一个小项目的结构和运行方式 | | 专业开发者 | [项目理解与上下文](../03-项目理解与上下文/) | 定位一个小功能或可复现 Bug 的相关文件 | | 独立开发者 | [代码修改与开发实战](../04-代码修改与开发实战/) | 完成一个范围清楚的页面或脚本修改 | | 技术负责人 | [Git协作与代码审查](../05-Git协作与代码审查/) | 审查一个小型 PR,并核对测试与风险 | | 非开发者 | [核心概念与任务方法](../02-核心概念与任务方法/) | 检查一个 Markdown 仓库的结构和失效链接 | 选择起点时,不需要追求最复杂的任务。第一次使用的目标是建立一套可靠过程:说明任务、限制范围、查看修改、验证结果。 ## 下一步学习 下一篇会讨论 Codex 能做什么和不能做什么,进一步划清能力边界。 准备开始操作的读者,可以直接进入 [安装与首次使用](../01-安装与首次使用/);已经有项目的开发者,可以进入 [项目理解与上下文](../03-项目理解与上下文/)。 ## 参考资料 - [OpenAI Quickstart](https://learn.chatgpt.com/docs/quickstart) - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) - [OpenAI Prompting](https://learn.chatgpt.com/docs/prompting) - [Agent approvals and security](https://learn.chatgpt.com/docs/agent-approvals-security) 文中的人群分类和学习建议由本知识库根据任务特征整理,不是 OpenAI 官方用户分级。 ### Codex 能做什么和不能做什么:能力边界、使用条件与验证方法 URL: https://codexguide.io/guides/codex-neng-zuo-shen-me 这篇文章写给准备把真实任务交给 Codex 的读者。 # Codex 能做什么和不能做什么:能力边界、使用条件与验证方法 > 难度:基础 > > 类型:能力边界 ## 这篇文章适合谁 这篇文章写给准备把真实任务交给 Codex 的读者。 前两篇已经解释了 [Codex 是什么](./01-Codex是什么.md),以及 [哪些人适合使用 Codex](./02-Codex适合哪些人.md)。接下来需要把能力边界讲清楚:它能执行哪些工作,完成这些工作需要什么条件,哪些判断仍然必须由人负责。 ## 先说结论 Codex 可以理解项目、修改文件、运行命令、调用工具并检查结果。它能否完成某个具体任务,还取决于四件事:有没有足够的上下文、是否获得必要权限、当前环境能不能运行,以及有没有明确的验证方法。 “Codex 能修改代码”是一项能力。“这次代码修改正确”是一个需要证据的结论。 这两句话不能混在一起。 ## 判断能力时要看四个条件 ```mermaid flowchart LR A["任务目标"] --> B["项目与上下文"] B --> C["工具与权限"] C --> D["执行环境"] D --> E["测试与人工验证"] E --> F["可以接受的结果"] ``` 少了其中任何一项,任务都可能停在中间。 例如,Codex 可以阅读测试失败信息并修改相关代码。但如果依赖没有安装、测试环境无法启动,或者报错只出现在生产环境,它就无法在当前环境中证明问题已经解决。 ## Codex 能做什么 ### 理解项目和查找信息 Codex 可以读取你允许访问的项目文件,分析目录结构、依赖、配置、源码、测试和文档。 常见任务包括: - 说明项目解决什么问题,以及本地如何启动。 - 找到某个页面、接口或功能的主要入口。 - 追踪一个函数、配置项或数据结构在哪里被使用。 - 根据 README、依赖文件和代码整理技术栈。 - 比较当前实现与项目规则是否一致。 它的结论来自能够读取的内容。如果关键文档没有放进项目、代码由远程服务动态生成,或者真实逻辑在另一个仓库,回答就可能不完整。 ### 修改代码和文件 在授权范围内,Codex 可以新增、编辑和删除文件。它适合处理范围明确的功能开发、Bug 修复、重构、文档和配置任务。 例如: - 修改一个前端组件及其样式。 - 给现有接口增加参数校验。 - 修复能够稳定复现的错误。 - 补充单元测试和使用说明。 - 调整构建配置或自动化脚本。 - 批量修改格式一致的文件。 大范围修改需要更清楚的限制。没有说明哪些目录不能动、哪些接口必须保持兼容时,Codex 可能选择一个技术上可行、但不符合项目预期的方案。 ### 运行命令和开发工具 Codex 可以在权限允许时执行终端命令,例如安装依赖、运行测试、构建项目、执行 Lint 和查看 Git 状态。 这类能力让它可以形成完整过程:先查找问题,再修改文件,随后运行检查。如果命令失败,它还可以根据输出继续排查。 命令能否执行取决于当前环境。缺少运行时、系统依赖、网络、账号或环境变量时,Codex 只能说明缺少什么,不能凭空补出真实环境。 ### 调试问题和补充测试 当你能提供报错、日志、复现步骤或失败测试时,Codex 可以沿着代码路径查找原因,并提出修改。 它还可以: - 把一个问题整理成稳定的复现步骤。 - 根据已有测试风格补充回归测试。 - 比较修改前后的错误信息。 - 检查边界条件和异常分支。 - 运行相关测试,确认原问题是否消失。 如果问题无法复现,正确做法是记录假设和未确认部分,而不是把最可能的猜测写成确定原因。 ### 阅读差异和辅助代码审查 Codex 可以查看 Git diff、提交历史和 Pull Request 修改,寻找明显的逻辑错误、测试缺口、安全风险和维护问题。 代码审查适合用它做第一轮扫描,但不应该省略项目负责人或领域专家的判断。很多问题与业务规则、历史兼容和线上数据有关,这些信息未必存在于代码中。 ### 使用浏览器、搜索和外部工具 根据使用入口和配置,Codex 可以使用浏览器、网络搜索、MCP、插件或其他集成读取外部信息并采取操作。 这些能力不是默认无限开放的。能否使用某个工具,取决于工具是否安装、是否完成认证、当前权限策略和组织要求。 ## Codex 不能做什么 “不能”有两种情况。一种是技术条件不具备,另一种是风险和责任不应该交给它。 ### 不能读取没有提供或没有授权的数据 Codex 不会自动知道私人仓库、线上数据库、内部文档和第三方账号中的内容。需要访问这些信息时,必须先通过项目文件、授权连接或明确的工具配置提供上下文。 即使工具已经连接,也只能在授予的权限范围内操作。 ### 不能保证生成的代码一定正确 Codex 可能误解需求、遗漏边界条件、使用不合适的 API,或者写出能够通过部分测试但仍有问题的代码。 代码看起来合理、命令返回成功、页面能够打开,这些都只是证据的一部分。最终还需要结合测试范围、实际业务和人工审查判断。 ### 不能替你补全没有说出口的需求 如果任务只写“把登录功能优化一下”,Codex 无法确定你关注的是页面体验、登录速度、安全策略还是代码结构。 它可以根据代码提出建议,但不能替产品和业务负责人决定真正目标。需求越模糊,生成无关修改的概率越高。 ### 不能在缺少环境时完成真实验证 没有数据库、浏览器、依赖、测试账号或线上日志时,Codex 无法复现依赖这些条件的问题。 它可以检查静态代码并给出推断,但需要明确写出验证范围。例如:“已通过代码检查和单元测试,尚未连接真实支付环境。” ### 不能绕过权限边界 OpenAI 官方文档把权限分为不同模式。权限决定 Codex 可以在什么范围内编辑文件、运行命令和使用网络,以及什么时候需要审批。  > 图片来源:[OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes)。 默认从需要审批的模式开始更合适。为了少点几次确认而直接开放全部权限,会扩大误删除、数据泄露和意外操作的影响范围。 权限扩大的是行动范围,不会让 Codex 的判断自动变得更准确。 ### 不能承担最终责任 生产发布、数据库迁移、支付、安全、合规和客户数据处理都需要明确负责人。 Codex 可以帮助准备变更、执行检查和整理风险,但不能替团队承担业务后果。高风险操作应该有备份、审批、回滚方案和人工确认。 ## 常见任务的能力边界 | 任务 | Codex 可以做什么 | 需要哪些条件 | 人需要检查什么 | |---|---|---|---| | 阅读陌生项目 | 分析结构、依赖和主要入口 | 能读取项目文件 | 结论是否遗漏外部服务和其他仓库 | | 实现小功能 | 修改相关代码和测试 | 需求、范围和运行环境清楚 | 业务逻辑、兼容性和代码差异 | | 修复 Bug | 根据复现和日志定位并修改 | 能复现问题或运行失败测试 | 原问题是否消失,是否引入回归 | | 代码审查 | 查找错误、风险和测试缺口 | 有明确 diff 和项目规则 | 业务背景、历史约束和优先级 | | 修改配置 | 编辑配置并运行检查 | 知道目标环境和配置优先级 | 密钥、权限和不同环境的差异 | | 操作外部服务 | 通过 MCP、插件或集成调用工具 | 已安装、认证并获得授权 | 写操作范围、数据影响和撤销方式 | | 发布到生产环境 | 准备命令、检查清单和变更说明 | 完整发布环境与团队流程 | 必须由负责人确认并保留回滚方案 | 这张表里没有“完全自动、无需检查”的任务。任务越接近生产环境和重要数据,人工检查越不能省。 ## 怎样判断 Codex 是否真的完成了任务 不要只看最后一句“已完成”。可以按下面的顺序检查。 ### 查看它实际改了什么 - 查看 `git status` 和 `git diff`。 - 确认没有修改无关文件。 - 检查是否删除了原有逻辑、注释或配置。 - 注意新依赖、环境变量和权限变化。 ### 查看它实际运行了什么 - 测试是否真的执行,而不是只建议你执行。 - 构建、Lint 和类型检查是否成功。 - 页面或接口是否在正确环境中验证。 - 命令是否只覆盖了部分模块。 ### 查看还有什么没有验证 - 是否缺少真实账号、数据库或生产数据。 - 是否只测试了正常流程,没有覆盖异常情况。 - 是否存在跨平台、浏览器或版本差异。 - 是否有需要产品、设计、安全或业务人员确认的决定。 可靠的 Codex 结果会把这些限制写出来。只汇报成功、不说明检查范围的结果,需要继续追问。 ## 一个更稳妥的任务写法 下面是一段真实任务写法,用来说明怎样把能力和验证条件放在一起。 ```text 请修复用户资料页在邮箱为空时出现的报错。 开始前先定位相关组件、接口和现有测试,不要修改其他页面。 请先复现问题,再进行最小范围修改。 完成后运行相关测试和类型检查,并告诉我: 1. 原因是什么; 2. 修改了哪些文件; 3. 运行了哪些检查; 4. 还有哪些情况没有验证。 ``` 这段任务没有要求 Codex“保证没有任何问题”,而是要求它提供可以检查的过程和证据。 ## 什么时候应该先停下来 出现下面情况时,不要继续扩大权限或让 Codex 反复尝试。 - 它准备修改与任务无关的大量文件。 - 它无法解释修改原因,却建议直接发布。 - 测试持续失败,但它开始删除测试或降低检查标准。 - 它需要访问密钥、生产数据库或客户数据。 - 它把没有验证的推断写成确定结论。 - 你已经看不懂变化,也没有其他人可以审查。 此时应该缩小任务、恢复工作区,或者先补充环境和资料。 ## 下一步学习 下一篇会比较 Chat、ChatGPT Work 和 Codex,帮助读者根据主要交付物选择入口。 准备实际操作的读者,可以进入 [安装与首次使用](../01-安装与首次使用/);想先学会怎样描述任务,可以进入 [核心概念与任务方法](../02-核心概念与任务方法/)。 ## 参考资料 - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) - [OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes) - [OpenAI Prompting](https://learn.chatgpt.com/docs/prompting) - [Agent approvals and security](https://learn.chatgpt.com/docs/agent-approvals-security) - [Sandbox](https://learn.chatgpt.com/docs/sandboxing) - [Code review](https://learn.chatgpt.com/docs/code-review) 具体能力会因使用入口、账号、项目配置、权限策略和功能成熟度而变化。 ### Chat、ChatGPT Work 和 Codex 怎么选:按任务与交付物判断 URL: https://codexguide.io/guides/chat-work-he-codex-zen-me-xuan 这篇文章写给已经打开 ChatGPT 或 Codex,却不确定应该选择 Chat、ChatGPT Work 还是 Codex 的读者。 # Chat、ChatGPT Work 和 Codex 怎么选:按任务与交付物判断 > 难度:基础 > > 类型:使用入口选择 ## 这篇文章适合谁 这篇文章写给已经打开 ChatGPT 或 Codex,却不确定应该选择 Chat、ChatGPT Work 还是 Codex 的读者。 三个入口都能接收自然语言任务,也都可以使用一定的上下文和工具。真正需要判断的是:这次任务要产出什么,以及结果应该怎样检查。 ## 先说结论 选择模式时,先看主要交付物。 - 想获得回答、解释、讨论或短草稿,选择 Chat。 - 想完成一份可以审阅和继续使用的报告、演示文稿、表格、计划或持续任务,选择 ChatGPT Work。 - 想修改软件项目、运行开发工具、调试代码、补测试或审查 Pull Request,选择 Codex。 不要先问“我是什么职业”,先问“这次任务最终要交付什么”。  > 图片来源:[OpenAI Quickstart](https://learn.chatgpt.com/docs/quickstart)。本图与上一篇文章共用,因为它直接展示了三种模式的官方分工。 ## 三种模式的核心区别 OpenAI 当前在 Use ChatGPT 文档中给出的定位可以概括成下面这张表。 | 模式 | 主要目的 | 常见结果 | 典型任务 | |---|---|---|---| | Chat | 和 ChatGPT 一起思考问题 | 回答、解释、讨论、短草稿 | 问概念、搜索资料、头脑风暴、改写一段话 | | ChatGPT Work | 定义一个结果,让 ChatGPT 完成较完整的工作 | 报告、演示文稿、电子表格、计划、可重复工作流 | 分析多份资料、制作汇报、整理决策、定期更新 | | Codex | 完成软件和技术任务 | 代码差异、测试结果、构建结果、PR 审查 | 修 Bug、实现功能、运行测试、审查代码 | 这个表描述的是主要用途,不是绝对限制。Chat 可以读取文件,Work 也能使用工具,Codex 也能写文档。选择的关键是哪个入口更贴近主要工作过程和最终结果。 ## 一个简单的选择流程 ```mermaid flowchart TD A["这次任务主要要产出什么?"] --> B{"只需要回答、讨论或短草稿?"} B -->|"是"| C["选择 Chat"] B -->|"否"| D{"主要结果是报告、表格、演示文稿或计划?"} D -->|"是"| E["选择 ChatGPT Work"] D -->|"否"| F{"需要读取代码库、修改代码或运行开发工具?"} F -->|"是"| G["选择 Codex"] F -->|"仍不确定"| H["先用 Chat 澄清目标,再切换模式"] ``` 这条流程只看主要交付物。一个任务同时包含资料研究和代码修改时,可以拆成两个阶段,不需要强行从头到尾只用一个模式。 ## 什么时候选择 Chat Chat 适合快速进入一个问题,并通过对话逐步想清楚。 常见场景包括: - 解释一个不熟悉的概念。 - 搜索并比较几个公开选项。 - 讨论文章角度、产品想法或会议议题。 - 改写一段消息、简介或说明。 - 总结一小段文本或一份文件。 - 在开始大型任务前梳理目标和约束。 Chat 的优势是轻。你不需要先建立完整任务,也不必要求它生成一个正式交付物。 例如,你只是想弄清楚“单元测试和集成测试有什么区别”,直接使用 Chat 更快。为了这个问题打开整个代码仓库并启动 Codex,没有增加多少价值。 ### Chat 不太适合什么 如果任务需要处理很多来源、持续运行较长时间,或者最终要交付一份结构完整的文件,普通对话会逐渐变得难以管理。此时更适合切换到 Work。 如果任务需要真正修改项目、执行命令和验证代码,应该切换到 Codex。 ## 什么时候选择 ChatGPT Work Work 适合结果明确、步骤较多,并且最终产物需要审阅、编辑或反复使用的任务。 OpenAI 官方文档给出的典型产物包括 brief、演示文稿、分析结果、电子表格、项目计划、持续更新和工作流。 适合使用 Work 的场景有: - 阅读多份研究资料并形成决策报告。 - 把采访笔记和调查数据整理成演示文稿。 - 比较多个方案并生成电子表格。 - 根据文件和插件中的信息更新项目周报。 - 制作活动计划、预算和邀请页面。 - 建立需要定期执行或更新的工作任务。 Work 可以使用文件、插件和经过批准的工具获取信息、生成交付物并运行工作流。你可以查看进度、中途补充信息,并在重要操作前审批。 ### Work 不太适合什么 只想问一句话时,Work 会显得过重。主要任务是修改代码、调试和测试时,Codex 的代码库上下文和开发工具更匹配。 Work 可以处理技术资料,也可以生成与技术有关的文档。但如果最终验收标准是“代码通过测试并形成可审查的修改”,应该把实现阶段交给 Codex。 ## 什么时候选择 Codex Codex 适合软件开发和技术任务,尤其是需要读取代码库、修改文件、运行命令并验证结果的工作。 常见场景包括: - 阅读陌生项目,说明结构和启动方式。 - 实现一个范围清楚的功能。 - 根据报错和日志修复 Bug。 - 运行测试、类型检查、Lint 和构建。 - 补充测试、文档、脚本和配置。 - 阅读 Git diff 或 Pull Request,检查错误和风险。 - 处理依赖升级、重构和开发环境问题。 Codex 的最终结果通常不是一段回答,而是一组可以检查的项目变化。检查方法包括 Git diff、测试输出、构建结果、页面效果和代码审查。 ### Codex 不太适合什么 如果你只需要讨论想法,没有代码、文件或技术操作,Chat 更直接。 如果主要结果是研究报告、演示文稿或电子表格,Work 的交付物工作流更合适。Codex 可以协助处理 Markdown、脚本和仓库文件,但不需要为了“显得专业”把所有任务都放进 Codex。 ## 混合任务应该怎样拆分 真实工作经常跨越三个模式。可以按阶段拆开。 ### 从市场研究到功能上线 1. 用 Chat 讨论要解决的问题和初步方向。 2. 用 Work 收集资料、比较方案并形成需求说明。 3. 用 Codex 在项目中实现功能、补测试并检查代码差异。 4. 回到 Work 整理发布说明、培训材料或对外汇报。 ### 从知识库选题到 GitHub 发布 1. 用 Chat 讨论读者问题和文章角度。 2. 用 Work 整理官方资料、来源表和文章计划。 3. 用 Codex 创建 Markdown 文件、维护目录、检查链接并提交到 GitHub。 ### 从线上报错到复盘报告 1. 用 Codex 读取日志和代码,复现并修复问题。 2. 用 Work 汇总影响范围、处理过程和改进计划。 3. 用 Chat 讨论一个具体技术概念或措辞。 拆分的好处是每个阶段都有清楚的结果。切换模式时,把上一阶段的结论、文件和未解决问题带到下一阶段。 ## 常见任务应该选哪个 | 任务 | 推荐模式 | 原因 | |---|---|---| | “解释一下 MCP 是什么” | Chat | 主要需要概念解释 | | “比较三款项目管理工具并给出建议” | Chat 或 Work | 简单讨论用 Chat,需要正式报告用 Work | | “读取十份访谈记录并制作汇报” | Work | 多来源分析并生成可审阅交付物 | | “每周整理 Slack 和 Drive 中的项目更新” | Work | 需要插件、持续执行和固定产物 | | “帮我看懂这个 GitHub 项目的结构” | Codex | 需要代码库上下文 | | “修复登录页面报错并补测试” | Codex | 需要修改代码和运行验证 | | “审查当前 PR 是否有明显风险” | Codex | 需要 diff、项目规则和测试上下文 | | “给产品名称想十个备选” | Chat | 适合快速讨论和迭代 | | “把项目数据整理成电子表格” | Work | 最终产物是可复用表格 | | “修改知识库目录并检查 Markdown 链接” | Codex | 需要操作仓库文件并运行检查 | ## 容易选错的几个地方 ### 任务很长,所以一定要用 Work 时长不是唯一判断标准。一个持续数小时的大型代码重构仍然属于 Codex;一个十分钟完成的正式决策表也可能更适合 Work。 ### 任务包含文件,所以一定要用 Codex 文件类型和最终结果更重要。分析 PDF 并生成报告通常适合 Work;修改项目中的源代码和测试适合 Codex。 ### Codex 更强,所以所有任务都用 Codex 工具入口不是能力排名。Chat 更轻,Work 更适合交付物,Codex 更适合软件项目。选择贴近任务的入口,通常更省沟通成本。 ### 选对模式后就不需要检查 三个模式的结果都需要检查。Chat 的事实和引用要核对,Work 生成的文件需要逐页查看,Codex 的代码需要看差异并运行测试。 ## 不确定时怎么开始 不确定时可以先用 Chat,用几轮对话把目标说清楚。 可以先回答下面四个问题: 1. 最终要得到回答、文件,还是项目修改? 2. 任务主要依赖公开信息、业务资料,还是代码仓库? 3. 结果由什么方式验收? 4. 是否需要长期运行、外部工具或开发命令? 答案逐渐清楚后,再决定留在 Chat、进入 Work,还是打开 Codex。 ## 下一步学习 下一篇会比较 Codex App、CLI、IDE 和 Cloud,解决“已经决定使用 Codex,但应该从哪个入口开始”的问题。 准备开始安装的读者,可以进入 [安装与首次使用](../01-安装与首次使用/);希望进一步学习任务写法,可以进入 [核心概念与任务方法](../02-核心概念与任务方法/)。 ## 参考资料 - [OpenAI Quickstart](https://learn.chatgpt.com/docs/quickstart) - [Use ChatGPT](https://learn.chatgpt.com/docs/use-chatgpt) - [Get started with Work](https://learn.chatgpt.com/docs/get-started-with-work) - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) - [OpenAI Prompting](https://learn.chatgpt.com/docs/prompting) ChatGPT 和 Codex 的界面、模式名称与可用功能可能随版本、账号和工作区设置变化。 ### Codex App、CLI、IDE 和 Cloud 怎么选:按工作环境与任务方式判断 URL: https://codexguide.io/guides/app-cli-ide-he-cloud-zen-me-xuan 这篇文章写给已经决定使用 Codex,却被 App、CLI、IDE extension 和 Cloud 几个入口弄糊涂的读者。 # Codex App、CLI、IDE 和 Cloud 怎么选:按工作环境与任务方式判断 > 难度:基础 > > 类型:使用入口选择 ## 这篇文章适合谁 这篇文章写给已经决定使用 Codex,却被 App、CLI、IDE extension 和 Cloud 几个入口弄糊涂的读者。 你可能会遇到这些问题:第一次应该安装哪个?本地任务和云端任务有什么区别?已经在 VS Code 里用了 Codex,还需要 App 或 CLI 吗? ## 你会学到什么 读完后,你应该能够: - 判断一次任务适合在本机还是云端运行。 - 根据自己的主要工作界面选择 App、CLI 或 IDE。 - 知道什么时候需要切换入口,而不是一次安装所有工具。 - 理解四个入口可以组合,但不应该同时修改同一份代码。 ## 先说结论 如果只记住一件事,请记住下面这组判断: - **Codex App**:适合在桌面上管理项目、任务、工作树、代码差异和 Git 操作。 - **Codex CLI**:适合习惯终端、需要运行命令、编写脚本或接入 CI 的开发者。 - **Codex IDE extension**:适合边看代码边提问、做局部修改和原地审查差异。 - **Codex Cloud**:适合把任务交给隔离的云端环境,在后台或并行运行,稍后回来审查结果。 它们不是从弱到强的四个等级。前三个首先回答“你想在哪里和 Codex 交互”,Cloud 主要回答“任务要在哪里运行”。 ## 先分清 App、CLI、IDE 和 Cloud 本文中的 App,指 ChatGPT 桌面应用里的 Codex 工作方式,不是手机 App。 App、CLI 和 IDE 都可以成为你在本机发起技术任务的入口,但界面和工作习惯不同。Cloud 则会为任务创建隔离的云端环境,检出仓库、执行配置脚本,让 Codex 在那里修改代码和运行检查。  > 图片来源:[OpenAI Quickstart](https://learn.chatgpt.com/docs/quickstart)。本图与第 01 篇共用,用来说明 Codex 可以从不同工作界面进入。 ## 四种入口对照表 | 入口 | 主要工作位置 | 最适合的任务 | 你会直接看到什么 | 需要注意什么 | |---|---|---|---|---| | App | ChatGPT 桌面应用、本地项目或工作树 | 多任务管理、本地项目修改、查看 diff、Git 操作 | 任务列表、项目文件、工作树、差异和终端 | 桌面任务仍会占用本机环境;不要把 App 自动等同于 Cloud | | CLI | 本地终端 | 命令密集型开发、调试、代码审查、脚本和 CI | 命令、输出、权限请求、代码差异 | 需要熟悉目录、命令行和 Git 的基本操作 | | IDE | VS Code、Cursor、Windsurf、Xcode 或 JetBrains 等编辑器 | 阅读当前文件、局部修改、边写边问、原地审查 | 打开的文件、选中代码、Codex 对话和 diff | 长任务会占用编辑器注意力,任务变大时可交给 Cloud | | Cloud | Codex 的隔离云端环境 | 后台任务、并行任务、远程任务、团队协作 | 任务日志、结果摘要、diff 和 Pull Request 入口 | 需要连接 GitHub 并正确配置依赖、变量、权限和网络访问 | 表中说的是最典型的工作方式,不是硬性限制。例如,CLI 和 IDE 都可以把较长任务交给 Cloud;App 也有本地终端、工作树和 Git 控件。 ## 一个简单的选择流程 ```mermaid flowchart TD A["这次任务需要在哪里运行?"] --> B{"要离开本机,在后台或并行运行?"} B -->|"是"| C["选择 Codex Cloud"] B -->|"否,主要在本机"| D{"你平时最常停留在哪个界面?"} D -->|"终端"| E["选择 Codex CLI"] D -->|"代码编辑器"| F["选择 Codex IDE extension"] D -->|"桌面任务和项目面板"| G["选择 Codex App"] E --> H["任务变长时可交给 Cloud"] F --> H G --> I["需要并行本地修改时使用工作树"] ``` 这条流程没有要求你永久选定一个入口。它只是在帮你决定:当前这次任务从哪里开始最顺手。 ## 什么时候选择 Codex App Codex App 适合希望把项目、任务、文件、终端和 Git 变化集中在一个桌面工作台中的读者。 比较合适的场景有: - 同时跟进几个项目或几个持续时间较长的任务。 - 不想一直在多个终端窗口之间切换。 - 希望直接查看文件变化,并对 diff 留下修改意见。 - 需要使用工作树隔离并行修改。 - 想在界面中完成暂存、提交、推送和创建 Pull Request 等常见 Git 操作。 OpenAI 的本地环境文档说明,Codex App 可以为项目配置 setup scripts 和常用 actions。新工作树创建时可以自动安装依赖或执行构建,常用的启动、测试命令也可以放到顶部操作区。 ### App 的限制 App 不是“所有任务自动放到云端”。你打开本地文件夹、在本地工作树中运行任务时,代码、依赖和开发工具仍来自自己的电脑。 如果你喜欢通过管道、脚本和大量命令组织工作,CLI 往往更直接。如果你一整天都在编辑器里逐行阅读代码,IDE extension 的上下文切换更少。 ## 什么时候选择 Codex CLI Codex CLI 适合终端优先的工作方式。它可以在当前仓库中读取文件、修改代码、运行本机已经安装的工具,并把交互式任务和现有命令行流程放在一起。  > 图片来源:[Codex CLI 官方文档](https://learn.chatgpt.com/docs/codex/cli)。页面将 CLI 定位为在终端中检查、编辑、运行代码并自动化重复工作。 CLI 比较适合: - 在终端中阅读项目、执行测试、查看日志和处理 Git。 - 调试必须连续运行多条命令的问题。 - 使用 `codex exec` 建立非交互式流程。 - 把 Codex 放入脚本、自动化任务或 CI 管道。 - 在提交前审查未提交修改、某个提交或相对基础分支的变化。 - 从终端发起或查看 Cloud 任务。 ### CLI 的限制 CLI 会把很多信息放进文本界面。刚接触命令行的读者可能不容易看出当前目录、分支、权限和命令影响范围。 这不代表新手不能使用 CLI,但开始前至少要会进入项目目录、查看 Git 状态、运行项目测试,并能读懂最常见的报错。涉及页面布局和逐行修改时,IDE 或 App 的可视化差异会更省力。 ## 什么时候选择 Codex IDE extension IDE extension 适合“代码就在眼前”的任务。 官方文档强调,它可以使用已经打开的文件、选中的代码和近期任务作为上下文。你可以在编辑器旁边提问,让 Codex 修改相关文件,再在原位置查看摘要和差异。 比较合适的场景有: - 解释当前文件、函数或一段选中代码。 - 修复范围明确的小问题。 - 边写代码边补测试、类型或文档。 - 学习陌生项目时围绕当前符号连续提问。 - 不离开编辑器就审查和接受修改。 当前官方页面列出的入口包括 VS Code 及兼容编辑器、Xcode 和 JetBrains IDE。不同编辑器的安装方式与界面可能不同,应以对应平台的官方说明为准。 ### IDE 的限制 IDE extension 最舒服的范围通常是当前正在阅读和修改的部分。需要跨很多模块调查、运行较长测试或并行比较多种方案时,把任务一直留在侧边栏里未必轻松。 官方 IDE 工作流支持把较大的任务交给 Codex Cloud。这样可以在编辑器里发起任务,继续处理手头代码,稍后回来审查云端结果。 ## 什么时候选择 Codex Cloud Codex Cloud 适合不需要持续盯着、可以交给独立环境完成的任务。 提交任务后,Codex 会在云端创建容器,检出指定仓库和分支,执行环境设置,然后在其中编辑代码、运行命令和尝试验证结果。完成后,你会看到摘要和文件差异,可以继续追问或创建 Pull Request。 比较合适的场景有: - 一个任务需要运行较长时间,你还要继续做别的工作。 - 想同时尝试几种修复方案或并行处理多个独立任务。 - 当前不在开发电脑旁,但需要从网页或 CLI 发起、查看任务。 - 工作从 GitHub Pull Request、Issue、Linear 或 Slack 中开始。 - 团队希望通过统一环境减少“我的电脑可以运行”的差异。 ### Cloud 的限制 Cloud 不是把本机环境原样搬过去。它只能使用云端环境中已经检出的仓库、安装的依赖、配置的变量和允许访问的网络。 因此,Cloud 的使用质量很依赖环境配置。项目如果缺少安装说明、锁文件、测试命令或 `AGENTS.md`,Codex 可能无法稳定复现你的本地开发流程。 还要注意权限边界。官方文档说明,Cloud setup script 阶段可以联网安装依赖;agent 阶段的互联网访问默认关闭,需要按任务配置有限或不受限访问。安装阶段需要的敏感值可以放入环境设置提供的 secrets,而不是写进仓库或任务提示中。Secrets 会在 agent 阶段开始前被移除,不能把它当成 Codex 全程可读取的环境变量。 ## 本地和 Cloud 到底怎样区分 判断本地还是 Cloud,可以问自己四个问题: 1. 任务是否依赖本机尚未提交的文件、数据库或专用工具? 2. 我是否需要实时观察命令并频繁改变方向? 3. 任务运行时,我是否还要继续使用这台电脑和这个仓库? 4. 其他人是否需要在一致的环境里复现和审查结果? 依赖本机状态、需要高频互动时,先选择 App、CLI 或 IDE 的本地工作方式。任务边界清楚、环境能够复现、适合后台运行时,再选择 Cloud。 本地任务的优势是上下文贴近当前电脑,反馈快;Cloud 的优势是隔离、并行和可离开。两者解决的问题不同。 ## 四种入口怎样组合使用 ### IDE + Cloud 在 IDE 中选中代码、澄清问题并完成小修改。遇到跨模块调查或长时间测试时,把任务交给 Cloud,回来后在编辑器中审查结果。 ### CLI + Cloud 在终端中复现问题、整理命令和验收标准,再通过 CLI 发起 Cloud 任务。完成后把结果应用到本地仓库,继续运行本机检查。 ### App + 工作树 在 App 中为几个互不依赖的本地任务创建不同工作树。每个任务有独立目录和分支,完成后分别检查差异,避免多个任务直接争用同一份文件。 ### App + IDE 或 CLI 可以用 App 管理任务和查看整体变化,再用 IDE 阅读代码,或用 CLI 执行特殊命令。不过,同一个工作目录不要同时交给多个 Codex 任务修改。切换入口前先看 `git status`,确认当前变化来自哪里。 ## 容易选错的几个地方 ### 第一次使用就把四个入口全部装好 入口越多,初学阶段越难判断任务和上下文在哪里。先选择最贴近日常工作习惯的一个本地入口,真正遇到后台或并行任务后再配置 Cloud。 ### Cloud 一定比本地更强 Cloud 的主要价值是隔离和并行,不是自动提高任务质量。环境缺少依赖、权限或验收命令时,云端任务反而更容易卡住。 ### CLI 只适合命令行高手 CLI 确实要求基本终端知识,但很多日常任务只需要进入正确目录、启动 `codex` 并审查命令。它是否合适,主要取决于你是否愿意在文本界面中工作。 ### IDE 只能做简单补全 Codex IDE extension 不是传统的单行补全工具。它可以理解文件上下文、修改代码、审查差异,并把更大的任务交给 Cloud。只是对于命令密集型工作,CLI 的信息流通常更清楚。 ### 同时打开多个入口会更快 并行任务只有在目录或环境隔离时才安全。几个入口同时修改同一个工作目录,很容易出现内容覆盖、测试结果失效和 Git 状态混乱。 ## 不同读者从哪里开始 | 你的情况 | 建议的第一个入口 | 原因 | |---|---|---| | 第一次接触 Codex,喜欢图形界面 | App | 项目、任务、差异和 Git 状态更直观 | | 每天主要使用 VS Code、Cursor、Xcode 或 JetBrains | IDE extension | 可以直接利用当前打开的代码上下文 | | 熟悉终端、Git、测试和脚本 | CLI | 与已有开发流程结合最自然 | | 需要同时处理多个仓库任务 | Cloud | 适合隔离、后台和并行运行 | | 暂时没有稳定开发环境 | App 或 IDE 先学习,Cloud 后配置 | 先掌握任务和审查方法,再处理云端环境问题 | | 维护 Markdown 知识库或文档仓库 | App、IDE 或 CLI | 按自己的编辑习惯选择;需要批量检查链接时 CLI 很方便 | 如果仍然拿不准,可以从 App 或 IDE 开始。完成一个小任务后,再尝试用 CLI 运行同样的检查,最后把一个边界清楚的任务交给 Cloud。亲自比较一次,比记住产品介绍更有用。 ## 下一步学习 选定入口后,下一篇会整理第一次使用 Codex 前需要准备的账号、项目、Git、权限和验证条件。 准备安装的读者可以进入 [安装与首次使用](../01-安装与首次使用/)。已经有项目并想改善任务写法,可以进入 [核心概念与任务方法](../02-核心概念与任务方法/)。 ## 参考资料 - [OpenAI Quickstart](https://learn.chatgpt.com/docs/quickstart) - [ChatGPT desktop app](https://learn.chatgpt.com/docs/app) - [Codex CLI](https://learn.chatgpt.com/docs/codex/cli) - [Codex IDE extension](https://learn.chatgpt.com/docs/codex/ide) - [Codex cloud](https://learn.chatgpt.com/docs/cloud) - [Local environments](https://learn.chatgpt.com/docs/environments/local-environment) - [Cloud environments](https://learn.chatgpt.com/docs/environments/cloud-environment) - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) Codex 的入口、支持的编辑器、安装方式和账号可用功能可能随版本、地区与工作区设置变化。 ### 第一次使用 Codex 前要准备什么:账号、入口、练习目录与验收清单 URL: https://codexguide.io/guides/di-yi-ci-shi-yong-qian-yao-zhun-bei-shen-me 这篇文章写给准备第一次打开 Codex,却不知道应该先准备账号、入口、练习目录还是开发环境的读者。 # 第一次使用 Codex 前要准备什么:账号、入口、练习目录与验收清单 > 难度:基础 > > 类型:首次使用准备 ## 这篇文章适合谁 这篇文章写给准备第一次打开 Codex,却不知道应该先准备账号、入口、练习目录还是开发环境的读者。 你不需要在开始前学会所有开发工具,也不需要先安装一堆插件。真正值得提前准备的是一个边界清楚的工作目录、一种可用的登录方式、一条能够回退的路径,以及判断任务是否完成的方法。 ## 本文解决什么问题 本文只负责把读者送到首次任务的起点:确认能使用一种 Codex 入口,准备一个独立的本地练习目录,知道哪些内容需要审批,并能在修改后检查结果。它不要求先学完整 Git、安装插件或配置 Cloud。 ## 适用环境与完成结果 适用于准备在本机使用 ChatGPT 桌面应用里的 Codex、Codex CLI 或 IDE 扩展的读者。当前 OpenAI Quickstart 把桌面应用、CLI 和 IDE 扩展作为不同入口;本仓库首期练习只要求选择其中一种。 完成本文后,你应该能: - 选择一种入口并完成登录; - 把独立练习目录打开给 Codex; - 确认任务开始前的文件状态和权限边界; - 进入[首期本地网页练习](../快速上手/),完成修改并检查结果。 ## 你会学到什么 读完后,你应该能够: - 知道 ChatGPT 登录和 API Key 登录的适用边界。 - 为第一次任务准备一个无敏感信息、可重新解压的练习目录。 - 用 Git 或备份保留真实项目任务的起始状态。 - 选择适合新手的权限模式。 - 写出包含目标、上下文、限制和验收条件的第一条任务。 ## 先说结论 第一次使用 Codex 前,首期练习至少准备下面四项: 1. 一个能够登录 Codex 的 ChatGPT 账号或 API Key。 2. 一个你有权读取和修改的独立练习文件夹。 3. 一份可以重新解压或复制的未修改起点。 4. 清楚哪些文件、命令和网络操作需要你审批。 Git、测试命令和项目说明对真实项目很有用,但不是首期静态网页练习的前置条件。练习文件在本地,Codex 是否能运行仍取决于客户端、登录状态和当前权限。 ## 一张表看懂要准备到什么程度 | 层级 | 准备内容 | 为什么 | |---|---|---| | 必须 | 登录方式、工作目录、明确任务、结果检查方法 | 没有这些,Codex 不知道在哪里工作,也无法判断任务是否完成 | | 强烈建议 | Git 或备份、干净的起始状态、项目运行方法、默认权限 | 方便比较修改、排查问题和撤销错误 | | 可以以后再配 | `AGENTS.md`、MCP、Skills、插件、Cloud 环境、自定义配置 | 这些能改善长期工作流,但不应该挡住第一次使用 | 如果你发现自己还在研究十几个插件,却没有选好第一个练习项目,准备方向已经偏了。 ## 第一步:确认登录方式和账号可用性 OpenAI 当前认证文档列出两种 Codex 登录方式: - 使用 ChatGPT 账号登录,使用订阅或工作区提供的 Codex 权益。 - 使用 OpenAI API Key 登录,按照 API 使用量计费。  > 图片来源:[OpenAI Authentication](https://learn.chatgpt.com/docs/auth)。截至 2026-09-18,官方页面说明:ChatGPT 桌面应用、Codex CLI 和 IDE 扩展支持 ChatGPT 与 API Key 两种本地登录方式;Codex Cloud 要求使用 ChatGPT 登录。图片本身是历史素材,不能替代当前界面核对。 ### ChatGPT 登录和 API Key 怎么选 | 情况 | 建议 | |---|---| | 已经在使用 ChatGPT,想体验 App、CLI、IDE 或 Cloud | 先使用 ChatGPT 登录 | | 需要在可信的私有 CI 或脚本中运行 Codex CLI | 研究 API Key 或企业 Access Token | | 只想完成第一次本地任务 | 不必为了开始而单独创建 API Key | | 计划使用 Codex Cloud | 使用 ChatGPT 登录,并检查账号和工作区是否允许使用 Cloud | API Key 不是免费的订阅替代品。使用 API Key 时会按照 OpenAI Platform 的 API 价格单独计费,而且部分依赖 ChatGPT 工作区或 Cloud 的功能不可用。 Codex 的套餐、额度和功能会变化。开始前查看一次 [Pricing](https://learn.chatgpt.com/docs/pricing) 和账号中的用量页面,比照着旧教程购买套餐更可靠。 ### 使用 Cloud 前检查 MFA Codex Cloud 会直接访问代码仓库,官方要求部分账号先启用多因素认证。 如果你使用邮箱和密码登录 ChatGPT,需要在访问 Cloud 前配置 MFA。使用 Google、Microsoft 或 Apple 登录时,官方不要求在 ChatGPT 账号中重复启用 MFA,但可以在对应身份提供方中设置。使用组织 SSO 时,应由组织管理员统一执行 MFA 策略。 ### 不要泄露登录凭据 API Key、Access Token 和登录缓存都应该按密码处理。 官方认证文档说明,Codex 可能把本地登录信息存放在操作系统凭据存储中,也可能存放在 `~/.codex/auth.json`。不要把这个文件提交到 Git、粘贴到 Issue、发进聊天记录或放入教程截图。 ## 第二步:先选一个入口,不要全部安装 上一篇已经比较了 [App、CLI、IDE 和 Cloud 的选择](./05-App-CLI-IDE和Cloud怎么选.md)。第一次使用时,只选一个最贴近日常习惯的入口即可。 - 喜欢图形界面和任务面板,可以从 App 开始。 - 长时间待在 VS Code、Cursor、Xcode 或 JetBrains,可以从 IDE extension 开始。 - 熟悉终端、Git 和命令行,可以从 CLI 开始。 - 已经有 GitHub 仓库和可复现环境,并且需要后台任务,再考虑 Cloud。 还要确认基础环境是否满足所选入口:操作系统受支持、你有软件安装权限、项目需要的 Git 和语言运行时可以正常使用。这里不要求提前安装项目用不到的工具。 ## 第三步:准备一个适合第一次使用的项目 第一个项目不应该是公司生产系统,也不适合选一个你完全无法运行的大型仓库。 比较合适的练习项目有四个特点: - **范围小**:十几分钟到一小时可以检查结果。 - **内容真实**:确实有一个需要完成的问题,不是为了测试而随便生成代码。 - **可以回退**:修改前有 Git 提交、分支或完整备份。 - **容易验证**:能通过测试、页面效果、命令输出或链接检查判断结果。 ### 开发者可以选择 - 修复一个能够稳定复现的小 Bug。 - 为现有函数补一组测试。 - 修改一个范围明确的页面样式。 - 更新一个已经过时的配置或依赖说明。 - 阅读一个小仓库并补充启动文档。 ### 非开发者可以选择 - 修复 Markdown 文档中的失效链接。 - 统一一批文件的标题或目录格式。 - 给静态网站补充一段已有内容。 - 整理一个不包含敏感信息的 CSV 或文本文件。 - 为知识库新增一篇结构明确的文章,并更新目录。 第一次任务最好来自你真正关心的工作。这样你知道什么结果算对,也更愿意认真审查修改。 ## 第四步:用 Git 或备份保留起始状态 Codex 会修改真实文件。开始前留下可恢复的状态,不是多余流程。 如果项目已经使用 Git,可以先运行: ```bash git status git branch --show-current git log -1 --oneline ``` 你需要确认三件事: 1. 当前所在目录和分支是否正确。 2. 工作区中是否已经有尚未提交的修改。 3. 最近一次提交是否能够作为回退点。 如果 `git status` 显示已有修改,不要直接让 Codex 开始,也不要为了得到“干净状态”盲目删除或覆盖文件。先弄清楚这些修改是谁做的、是否需要提交,以及它们是否会和本次任务冲突。 如果项目没有使用 Git,可以选择下面一种做法: - 新建一个练习仓库,并在确认文件内容后创建首次提交。 - 复制一份项目目录作为只读备份。 - 对重要文档使用具备版本历史的存储工具。 不要未经检查直接执行 `git add .`。项目中可能存在 `.env`、密钥、本地数据库、大文件或不应公开的数据。 ## 第五步:确认项目在 Codex 修改前能够运行 很多人第一次使用时会忽略基线状态。Codex 修改后测试报错,不一定是它造成的,项目可能在开始前就无法运行。 根据项目类型,先做一次最小检查: | 项目类型 | 开始前可以检查什么 | |---|---| | Web 项目 | 能否安装依赖、启动开发服务器并打开主要页面 | | Python 项目 | Python 版本、虚拟环境、依赖安装和现有测试 | | Node.js 项目 | Node.js 版本、包管理器、安装命令、测试或构建命令 | | 移动端或桌面项目 | 对应 SDK、模拟器或构建工具是否可用 | | Markdown 知识库 | 目录链接、图片路径、Markdown 检查命令或人工检查方法 | | 数据与脚本项目 | 输入文件是否完整、输出目录是否安全、脚本能否在样例数据上运行 | 把实际可用的启动、测试、Lint、格式化或构建命令记下来。后面可以把它们写进任务说明,成熟后再放入 `AGENTS.md`。 如果基线检查本来就失败,记录原始错误。你可以让 Codex 先调查这个错误,但不要把它和另一个功能任务混在一起。 ## 第六步:准备一条能验收的任务 OpenAI 的 Codex Best Practices 建议,一条任务至少说明四类信息: | 内容 | 要回答的问题 | |---|---| | Goal | 你希望修改或完成什么? | | Context | 哪些文件、目录、文档、错误或示例与任务有关? | | Constraints | 哪些行为、架构、风格和安全边界不能破坏? | | Done when | 满足哪些条件才算完成? | ### 一个开发任务示例 ```text 目标:修复登录表单在邮箱为空时仍然提交的问题。 上下文:表单代码在 src/pages/login,相关测试在 tests/login。 限制:不要修改后端 API,不要重做整个表单组件,保持现有中文提示风格。 完成条件:空邮箱无法提交;页面显示现有格式的错误提示;相关测试通过;说明修改了哪些文件。 ``` ### 一个知识库任务示例 ```text 目标:修复“00-从这里开始”目录中的失效相对链接。 上下文:只检查该目录下的 Markdown 文件及其引用的图片。 限制:不要改写文章正文,不要移动或重命名现有文件。 完成条件:列出发现的失效链接;修复确认有正确目标的链接;运行链接检查;汇总修改文件。 ``` 任务不需要写得像合同,但一定要让你自己知道怎样检查结果。只写“帮我优化一下项目”,Codex 很难判断应该改多少、哪些内容不能碰。 ## 第七步:第一次从 Ask for approval 开始 Codex 的权限由沙箱范围和审批策略共同决定。第一次使用时,OpenAI 官方建议从 `Ask for approval` 开始。  > 图片来源:[OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes)。本图与第 03 篇共用,因为它直接展示了第一次使用建议选择的权限模式。 在这个模式下,Codex 可以在当前工作区读取和编辑文件、运行常规本地命令;需要访问网络或越过工作区边界时,会先请求批准。 第一次任务不建议直接开启 Full access。Full access 可以修改电脑上的其他文件并运行联网命令,错误操作和数据泄露的影响范围更大。 看到审批请求时,不要只看按钮。至少确认: - 它准备运行什么命令。 - 命令会读取、修改或删除哪些文件。 - 是否需要访问网络,目标网站是什么。 - 操作是否仍在本次任务范围内。 权限应该随着明确需求逐步放开,而不是为了减少弹窗一次性全部开放。 ## 第八步:清理敏感信息和不相关数据 打开项目文件夹前,先检查里面是否包含不应该交给当前任务处理的数据。 常见敏感内容包括: - `.env` 中的 Token、密码和数据库连接信息。 - 云服务密钥、SSH 私钥和签名证书。 - 客户资料、真实用户数据和内部财务文件。 - 个人聊天记录、浏览器导出数据和身份信息。 - 私有仓库地址、内部域名与尚未公开的业务资料。 项目确实需要环境变量时,可以保留不含真实值的 `.env.example`,并确认 `.gitignore` 已经排除真实配置文件。不要把密钥直接写进任务提示,让 Codex“先用一下”。 还要注意截图。首次使用、登录和报错截图很容易带出邮箱、本地用户名、私有目录、仓库名称和 Token。发布到知识库前需要逐张检查。 ## 第九步:这些内容可以以后再准备 下面这些工具有价值,但第一次任务没有必要全部配置: ### AGENTS.md 适合记录仓库结构、运行命令、代码规范、禁止事项和验收要求。先完成一两个任务,知道 Codex 经常缺少什么信息后再写,内容会更真实。 ### MCP 当任务需要访问仓库外部且经常变化的数据,例如 Notion、数据库或团队系统时再配置。第一次本地文件任务通常不需要 MCP。 ### Skills 和插件 当一套流程已经重复出现,并且输入、步骤和输出相对稳定时,再把它整理成 Skill 或插件。不要先收集几十个工具,再寻找使用理由。 ### Cloud 环境 Cloud 需要连接 GitHub,并配置依赖、环境变量、setup script 和网络权限。先在本地弄清楚项目如何运行,再配置 Cloud 会省很多排查时间。 ### 自定义 config.toml 模型、推理强度、审批策略、沙箱和 MCP 都可以通过配置文件调整。第一次先使用默认配置,遇到具体问题后再修改对应项目。 ## 十分钟开工前检查清单 开始第一个任务前,可以逐项确认: - [ ] 我已经选好 App、CLI、IDE 或 Cloud 中的一个入口。 - [ ] 我知道当前使用 ChatGPT 登录还是 API Key 登录。 - [ ] 我没有把 Token、密码或 `auth.json` 放进仓库和提示中。 - [ ] 我打开的是正确项目和正确目录。 - [ ] 我知道当前 Git 分支和未提交修改情况。 - [ ] 我有一个可以恢复的 Git 提交或备份。 - [ ] 项目在修改前能够运行,或者我记录了已有错误。 - [ ] 第一次任务范围较小,并且有明确完成条件。 - [ ] 我知道要运行哪些测试、构建或人工检查。 - [ ] 权限从 Ask for approval 开始,没有直接开启 Full access。 十项里如果缺的是 MCP、插件或 Skill,可以继续开始;如果缺的是备份、工作目录和验收方法,先补齐再动手。 ## 不同读者需要准备什么 ### 非程序员 准备一个不含敏感信息的文档目录或知识库仓库,先学会查看文件变化。不会 Git 时至少保留完整副本,并从修链接、改目录、整理格式这类可人工检查的任务开始。 ### 有开发经验的读者 准备一个能够本地运行的小项目,确认分支、依赖和测试命令。从一个可复现的问题开始,让 Codex 完成修改、测试和差异说明的完整循环。 ### 准备使用 Cloud 的团队 除了 GitHub 仓库,还要准备 MFA、仓库授权、可复现的安装流程、环境变量、secrets、网络策略和团队审查规则。Cloud 环境配置应该单独测试,不要和第一个功能任务一起摸索。 ## 常见准备误区 ### 还没开始就先购买 API 额度 先检查 ChatGPT 账号和工作区是否已经提供 Codex 使用权限。只有确实需要 API Key 工作流时,再开通 API 计费。 ### 第一次就接入所有 MCP 和插件 工具越多,权限、上下文和故障来源越多。先完成一个只依赖本地项目的任务,更容易理解 Codex 的基本工作方式。 ### 直接在生产项目上试 第一次使用时,你还不熟悉权限提示、差异审查和回退流程。生产仓库、真实客户数据和自动部署环境都不适合作为练习场。 ### 有 Git 就不用看 diff Git 能帮你回退,不能替你判断修改是否合理。接受结果前仍然要看文件差异,并运行对应验证。 ### 项目原本跑不起来也不记录 没有基线状态,就很难判断新的报错来自 Codex 修改还是原有环境。开始前的一次运行和一条错误记录会省下很多来回排查。 ## 下一步学习 准备完成后,先进入[快速上手:完成第一个本地网页任务](../快速上手/),再按需要阅读首次任务和结果检查的完整文章。真实项目案例另行保留,不作为首期练习的前置条件。 需要先安装工具的读者,可以进入 [安装与首次使用](../01-安装与首次使用/)。想进一步学习任务写法,可以进入 [核心概念与任务方法](../02-核心概念与任务方法/)。 ## 参考资料 - [OpenAI Codex Quickstart](https://learn.chatgpt.com/docs/codex/quickstart) - [OpenAI Authentication](https://learn.chatgpt.com/docs/auth) - [OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes) - [Codex Best Practices](https://learn.chatgpt.com/docs/codex/learn/best-practices) - [Codex CLI](https://learn.chatgpt.com/docs/codex/cli) - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) Codex 的套餐、登录方式、权限界面和可用功能可能随版本、地区与工作区策略变化。 ### Codex 新手第一个任务:修改本地网页并检查结果 URL: https://codexguide.io/guides/wan-cheng-di-yi-ge-zhen-shi-ren-wu 适合已经安装并登录 Codex App 或 CLI 其中一种、能够访问练习文件夹,但还没有独立完成过一次可核对修改的读者。不要求同时安装两种入口,也不声称所有系统和客户端都已实测。 # Codex 新手第一个任务:修改本地网页并检查结果 > 难度:基础 > > 类型:首次实操 > > 本文提供一套不需要 Node、数据库、插件或第三方 SDK 的共同练习。它不代表 Codex 模型可以完全离线运行。 ## 这篇文章适合谁 适合已经安装并登录 Codex App 或 CLI 其中一种、能够访问练习文件夹,但还没有独立完成过一次可核对修改的读者。不要求同时安装两种入口,也不声称所有系统和客户端都已实测。 ## 准备什么 - 一台已安装并登录 App 或 CLI 的电脑。 - 下方提供的本课练习包,无需克隆仓库或向维护者索取文件。 - 一个独立测试目录。不要使用 CodexGuide 正式网站、私人仓库或含敏感信息的目录。 - 可以打开本地 HTML 文件的浏览器。 练习只包含简单 HTML、CSS 和说明文件,不调用外部业务 API、不收集个人信息、不部署。 ## 本课练习材料 使用一个简单的本地网页,练习修改标题与简介,并检查原有链接和样式是否保留。 [下载练习包(ZIP)](../练习材料/Codex首次任务-本地网页练习包.zip) 文件名:`Codex首次任务-本地网页练习包.zip`,大小:3,435 字节。包内包含未修改的 HTML/CSS、任务说明、检查清单和独立的参考差异,不需要安装 Node、数据库或插件。 解压后的目录如下: ```text 首次任务-本地网页/ ├── README.md ├── 任务说明.md ├── 检查清单.md ├── 起始文件/ │ ├── index.html │ └── styles.css └── 参考差异/ └── 参考差异.md ``` 手机上可以阅读教程和找到下载入口;实际练习需要在能够操作项目目录、已安装并登录 Codex App 或 CLI 的电脑上完成。手机浏览器不能直接执行本课的本地 Codex 任务。 只在练习副本中操作,不要打开真实业务项目、生产网站或含凭据的私人目录。参考差异用于完成后的比较,不是起始文件。 ## 取得并打开正确目录 1. 点击上方“下载练习包(ZIP)”,把文件保存到电脑,再解压到一个新文件夹。 2. 将解压后的 `首次任务-本地网页/起始文件/` 整个复制为新的工作目录,例如 `codex-first-task-test/`。保留原始 `起始文件/` 不改动;`任务说明.md` 和 `检查清单.md` 位于它的上一级。 3. 先在浏览器中打开工作目录里的 `index.html`,应看到“晨间读书角”、一段简介和“查看阅读清单”按钮。 4. 在 App 中通过选择项目文件夹的入口打开 `codex-first-task-test/`;具体按钮名称以当前客户端为准。不要打开解压包的最外层或 `参考差异/`。 5. 使用 CLI 时,在终端进入同一个工作目录,确认直接包含 `index.html`、`styles.css` 后运行 `codex`。macOS/Linux 可用 `pwd`、`ls`,PowerShell 可用 `Get-Location`、`Get-ChildItem` 核对目录。 如果 App 或 CLI 还不能正常使用,先回到[安装与首次使用](../01-安装与首次使用/README.md)和[第一次使用前要准备什么](./06-第一次使用前要准备什么.md)。 ## 给 Codex 的指令 把下面的指令发给 Codex: ```text 请先阅读 index.html 和 styles.css,不要修改文件。 然后只做这两处文字修改: 1. 将主标题改为“我的第一个 Codex 练习”; 2. 将简介改为“先看清修改,再确认页面结果。”。 请保留按钮文字、https://example.com 链接、其他 HTML 内容和全部 CSS 样式。 完成后告诉我修改了哪些行,并不要运行部署或安装命令。 ``` 先让它阅读再修改,是为了确认目录和范围。看到权限请求时,只允许服务于本次练习的读取和编辑动作;不要为这个练习开启外部写入、部署或安装操作。 ## 预期修改与检查 预期只有 `index.html` 的两处文字变化: ```diff -用十分钟记录今天读到的一段话,慢慢建立自己的阅读清单。
+先看清修改,再确认页面结果。
``` 按[练习检查清单](../练习材料/首次任务-本地网页/检查清单.md)完成文件、链接、范围和浏览器检查。直接打开 `index.html`,确认标题、简介、按钮和样式都能看到;人工浏览器检查与 Codex 的文字总结是两件事。 ## 出错怎么办 - 找不到文件:重新检查 App/CLI 打开的路径,用 `pwd`、`ls` 确认目录。 - 修改了 CSS 或按钮链接:停止继续编辑,从原始 starter 重新复制到新目录,再重试。 - 页面文字正确但样式异常:比较 `styles.css` 是否被改动,并从原始 starter 重来。 - 不确定是否完成:查看 diff,与上面的参考差异逐行比较。 - 登录、权限或客户端入口异常:查看[安装登录常见问题](../01-安装与首次使用/13-安装登录常见问题.md)和[故障排查目录](../15-故障排查与常见问题/README.md)。 重新练习时,重新解压或复制 `起始文件/` 到新的目录;不要清空真实工作区,也不要执行破坏性 Git 重置。 ## 这次练习之后 完成一次小修改后,先阅读[完成第一次修改并检查结果](../01-安装与首次使用/09-完成第一次修改并检查结果.md),再按需要进入[核心概念与任务方法](../02-核心概念与任务方法/README.md)或[项目理解与上下文](../03-项目理解与上下文/README.md)。原仓库中的历史案例仍保留在本文后半部分和[真实案例复盘](../14-真实案例复盘/README.md),它们是独立案例,不能当作本次练习的亲测记录。 ## 来源与验证边界 安装、登录和首次任务的官方参考:[OpenAI Codex Quickstart](https://learn.chatgpt.com/docs/quickstart)、[Codex CLI](https://learn.chatgpt.com/docs/codex/cli) 和[Authentication](https://learn.chatgpt.com/docs/auth)。本练习材料和本文是本仓库维护者编写的教学内容。2026-09-20 已在 macOS 15.6、Codex CLI 0.154.0 的现有认证环境中,用本课原始提示词通过 `codex exec` 完成一次练习副本修改。独立文件比对确认只有主标题与简介改变,CSS、按钮文字和链接未变;通过本机临时 HTTP 预览检查了真实生成的页面。此记录只覆盖 CLI 非交互执行、文件比对和页面检查,不覆盖 App、交互式 CLI 界面、直接双击 HTML 或其他系统;安装与登录过程没有在本次重新测试。 --- ## 原文章中的历史案例(保留原文) 以下内容来自本仓库此前发布版本,记录维护者当时的真实知识库维护案例。它不是上面统一练习的实测记录,也不要求首期读者操作该仓库。 # 完成第一个真实任务:从任务描述到验证提交的完整闭环 > 难度:基础 > > 类型:首次实操 ## 这篇文章适合谁 这篇文章写给已经打开 Codex,也准备好一个安全项目,却还没有独立完成过真实任务的读者。 这里的“完成”,指一个真实项目产生了可检查的变化,并且这些变化经过验证、审查和提交。只得到一段看起来合理的回答,还没有走完任务。 ## 你会学到什么 本文会完整走一遍下面的过程: 1. 选择一个适合第一次完成的真实任务。 2. 检查项目和 Git 起始状态。 3. 写清目标、上下文、限制和完成条件。 4. 观察 Codex 调查、编辑和运行命令。 5. 在权限请求和中途偏离时做判断。 6. 查看文件差异并独立验证结果。 7. 提交和推送确认通过的修改。 示例使用 Markdown 知识库,读者不需要编程基础。开发者可以把同一套流程换成修 Bug、补测试或修改页面。 ## 本文使用的真实任务 本文没有临时创建一个“Hello World”项目。案例来自维护这个 Codex 中文知识库时真实发生的一次任务: > 在 `00-从这里开始` 栏目中新增第 07 篇文章《完成第一个真实任务》,更新栏目目录和更新日志,加入必要的官方配图,并在发布前检查链接、图片、敏感信息和 Git 差异。 这个任务会修改四类内容: | 文件 | 作用 | |---|---| | `00-从这里开始/07-完成第一个真实任务.md` | 新增正文 | | `00-从这里开始/README.md` | 把第 07 篇加入阅读顺序 | | `更新日志.md` | 记录本次内容发布 | | `图片素材/00-从这里开始/07-完成第一个真实任务/` | 存放与正文直接相关的图片 | 它的范围不大,但包含真实项目里常见的多个步骤:读现有规范、研究资料、创建文件、维护导航、处理图片、运行检查和提交 Git。 ## 先理解完整闭环 一次 Codex 任务可以拆成下面八个环节: ```mermaid flowchart LR A["确认起点"] --> B["描述任务"] B --> C["调查项目"] C --> D["计划修改"] D --> E["编辑文件"] E --> F["运行验证"] F --> G{"结果通过?"} G -->|"否"| H["分析问题并修正"] H --> E G -->|"是"| I["审查 diff"] I --> J["提交与推送"] ``` 很多第一次使用的问题,都源于流程只走到了“编辑文件”,后面的验证、diff 和提交没有完成。 ## 第一步:确认任务开始前的状态 打开项目后,不要马上发出修改请求。先确认 Codex 进入了正确的文件夹。 如果项目使用 Git,可以检查: ```bash git status --short --branch git log -1 --oneline ``` 第一条命令用来查看当前分支和未提交修改,第二条命令确认最近的回退点。 在本案例开始时,需要确认: - 当前仓库是 `codex-handbook`。 - 当前分支是准备发布内容的分支。 - 前六篇文章已经提交。 - 工作区没有来源不明的未提交修改。 - 目标目录和图片规范文件能够正常读取。 如果工作区已经有修改,不要默认它们可以覆盖。先让 Codex 列出状态,说明哪些文件与本次任务相关,哪些是任务开始前就存在的内容。 ### 可以怎样对 Codex 说 ```text 先不要修改文件。请检查当前项目、Git 分支和未提交变化,阅读仓库根目录的 AGENTS.md 以及“00-从这里开始/README.md”,然后告诉我这次任务应该修改哪些文件。 ``` 这一步只需要确认双方正在同一个项目、同一个范围里工作,不需要让 Codex 写一份长报告。 ## 第二步:把一句话需求补成可执行任务 用户最初可能只会说: ```text 《07-完成第一个真实任务》接下来写这一篇。 ``` 如果同一个任务里已经有前文、仓库规则和连续的文章上下文,Codex 可以据此继续工作。但读者第一次独立使用时,不应该假设它已经知道你的全部要求。 按照上一篇介绍的 Goal、Context、Constraints 和 Done when,可以把任务补充成下面这样: ```text 请在 codex-handbook 的“00-从这里开始”栏目新增第 07 篇文章。 目标:写一篇《完成第一个真实任务》,用一个真实的 Markdown 知识库维护案例,讲清从任务描述、执行、验证到 Git 提交的完整流程。 上下文:先阅读 AGENTS.md、图片素材/README.md、栏目 README,以及第 05、06 篇文章,保持现有知识库风格。 限制: 1. 不要写成公众号文章。 2. 不要编造实操截图、测试结果或用户反馈。 3. 官方结论必须引用 OpenAI 官方资料。 4. 实操截图由维护者亲自操作后补充;没有截图时使用官方图或流程图解释。 5. 不修改与本篇无关的目录和文章。 完成条件: 1. 新建文章并更新栏目目录和更新日志。 2. 图片路径、相对链接和官方链接可以访问。 3. 检查敏感信息、Markdown 基础格式和 Git diff。 4. 完成后先汇总修改和验证结果,不要在我审查前提交。 ``` 这段任务说明并不追求所谓“完美提示词”。它只是把容易产生分歧的地方提前说清楚。 ## 第三步:让 Codex 先调查,再开始修改 一个项目通常已经有自己的结构和规则。Codex 在修改前应该先阅读与任务直接相关的文件,而不是凭空创建一套新格式。 本案例需要调查: - `AGENTS.md` 中的内容和图片规则。 - `00-从这里开始/README.md` 的编号和标题风格。 - 第 05、06 篇的文章结构和引用方式。 - `图片素材/README.md` 中的命名、脱敏和来源要求。 - 当前 Git 状态和最近提交。 你不需要要求 Codex 阅读整个仓库。范围越准确,调查速度越快,也越不容易把无关内容带进任务。 ### 怎样判断它是否读对了 开始写之前,Codex 至少应该说清楚: - 准备新增什么文件。 - 需要更新哪些导航或索引。 - 本篇使用哪类图片,来源是什么。 - 哪些事实需要查官方资料。 - 打算如何验证文章和仓库变化。 如果它准备修改大量无关文件,应该在编辑前缩小范围。 ## 第四步:观察过程,但不要逐行遥控 Codex 开始执行后,通常会经历搜索文件、读取规则、查资料、编辑和验证几个阶段。 你需要关注的是方向和边界: - 它是否仍在处理同一个目标。 - 新发现是否改变了原来的计划。 - 是否要访问新的目录、网络或外部服务。 - 是否出现无法验证的事实或截图。 - 是否准备执行不可逆操作。 不需要对每一次文件读取都下指令。过度干预会打断连续调查,也会让任务记录充满重复确认。 ### 什么时候应该马上纠偏 出现下面情况时,直接告诉 Codex 停下并重新确认: - 开始重写已经完成的前六篇文章。 - 为了“内容丰富”准备添加无关 AI 图片。 - 把尚未实操的过程写成已经成功完成。 - 使用没有来源的套餐、功能或性能结论。 - 准备删除、移动或重命名现有文件。 - 发现工作区中存在用户原有修改,却打算直接覆盖。 纠偏时说明哪里偏了、正确边界是什么,不必从头重发整个任务。 例如: ```text 先停一下。前六篇文章不要改,本次只新增第 07 篇,并更新栏目 README 和更新日志。实操图片还没有由我亲自截图,不要创建或描述不存在的实操结果。 ``` ## 第五步:认真处理权限请求 Codex 可能请求编辑文件、运行命令、访问网络或执行 Git 操作。第一次任务继续使用 `Ask for approval` 更容易看清每个动作的边界。  > 图片来源:[OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes)。本图与第 03、06 篇共用,用来说明首次实操中的审批边界。 看到权限请求时,可以按下面的顺序判断: 1. 这个动作是否服务于当前任务? 2. 它会影响哪个目录和哪些文件? 3. 命令是读取、创建、覆盖还是删除? 4. 网络访问的目标是否是已知官方来源? 5. 执行失败后是否容易恢复? 读取仓库文件、检查 Git 状态和访问 OpenAI 官方文档,通常容易判断。删除文件、安装系统软件、修改仓库权限、推送远端和使用 Full access,需要更谨慎。 批准命令不是在确认“Codex 一定做得对”,只是允许它执行这一个动作。结果仍然需要后续检查。 ## 第六步:让 Codex 提供验证证据 编辑完成后,不要只接受“文章已经写好”这样的总结。要求它运行与完成条件对应的检查。 本案例需要验证: | 检查项 | 证据 | |---|---| | 文章文件已创建 | 文件存在,标题和编号正确 | | 栏目目录已更新 | README 中第 07 项链接指向新文章 | | 更新日志已更新 | 当天记录包含本篇发布内容 | | 图片有效 | 文件存在、格式与扩展名一致、正文路径正确 | | 相对链接有效 | 链接目标文件或目录实际存在 | | 官方链接有效 | 请求返回成功状态,并落在 OpenAI 官方域名 | | Markdown 无明显格式问题 | `git diff --check` 没有空白错误,表格和代码块闭合 | | 没有敏感信息 | Token、私钥和常见凭据模式扫描无结果 | | 修改范围正确 | Git 状态中只有本篇相关文件 | ### 一组基础 Git 检查 ```bash git status --short git diff --stat git diff --check ``` - `git status --short` 显示哪些文件发生变化。 - `git diff --stat` 显示修改规模。 - `git diff --check` 检查多余空格和部分基础格式问题。 这些命令不能证明文章内容一定正确,但能快速发现文件遗漏、意外修改和格式问题。 ### 验证失败时怎么办 验证失败不是任务结束,而是下一轮输入。 不要只说“再检查一下”,应该把失败证据交给 Codex: ```text 相对链接检查显示图片路径不存在: 图片素材/00-从这里开始/07-完成第一个真实任务/01-官方App内置Git工具.png 请先确认真实文件位置,只修复这个路径,然后重新运行链接和图片检查。不要改写正文其他内容。 ``` 错误信息、失败命令和预期结果比“好像不对”更容易让 Codex 准确修复。 ## 第七步:自己审查 diff Codex 运行完检查后,轮到你查看它到底改了什么。 OpenAI 的本地环境文档说明,ChatGPT 桌面 App 的 diff 面板可以查看当前修改、对具体行留下反馈、暂存或恢复单个区块,也可以提交、推送和创建 Pull Request。  > 图片来源:[OpenAI Local environments](https://learn.chatgpt.com/docs/environments/local-environment#use-built-in-git-tools)。页面展示了 App 中查看 Changes、分支、提交、推送和创建 Pull Request 的入口。 ### 审查新文章 重点看: - 标题是否和目录一致。 - 内容是否真的回答了文章主题。 - 官方事实是否有来源。 - 示例是否能让读者照着操作。 - 有没有把建议写成官方硬性要求。 - 有没有编造截图、测试和用户体验。 ### 审查目录和更新日志 重点看: - 编号是否连续。 - 链接路径和文件名是否完全一致。 - 是否误改其他文章标题。 - 更新日志是否只记录已经完成的内容。 ### 审查图片 重点看: - 图片能否解释正文中的具体信息。 - 官方图是否标明来源页面和链接。 - 文件格式和扩展名是否一致。 - 是否出现账号、邮箱、私有路径或 Token。 如果发现问题,可以直接在 diff 中指出具体行,也可以在任务中引用文件路径和段落标题让 Codex 修正。 ## 第八步:提交前再做一次独立确认 Codex 的完成说明是线索,不是最终验收结论。 在本案例中,维护者至少要亲自完成下面几项: - 打开新文章,快速通读一次。 - 点击栏目 README 中的新链接。 - 确认两张图片能够显示。 - 查看 Git diff 中是否有无关文件。 - 核对官方来源和引用说明。 - 确认没有私密计划、聊天记录或凭据进入公开仓库。 代码项目还要增加人工页面检查、关键功能复现或测试结果复核。不要因为命令显示绿色,就跳过用户真正会看到的效果。 ## 第九步:提交和推送 只有在内容和验证都通过后,才进入提交阶段。 可以让 Codex 先给出提交范围和建议的提交信息: ```text 请再次确认 Git 状态,只暂存本次第 07 篇文章、栏目 README、更新日志和对应官方图片。提交前运行 git diff --cached --check,并把暂存文件列表给我确认。 ``` 确认无误后再提交,例如: ```text docs: add first real task walkthrough ``` 推送完成后,还要比较本地和远端分支的最新提交。看到 GitHub 页面中出现新文章,并不一定代表所有文件都上传正确;提交哈希一致才是更直接的证据。 ### 推送后检查什么 - 本地工作区是否干净。 - 本地 `HEAD` 与远端目标分支哈希是否一致。 - GitHub 中的文章链接是否可以打开。 - 图片在 GitHub 页面中是否正常显示。 - 目录链接是否跳转到正确文章。 ## 一份合格的任务结束报告 Codex 最后的报告应该短,但需要包含证据。 例如: ```text 已完成第 07 篇文章,并更新栏目 README 和更新日志。 新增: - 00-从这里开始/07-完成第一个真实任务.md - 图片素材/00-从这里开始/07-完成第一个真实任务/01-官方App内置Git工具.png 更新: - 00-从这里开始/README.md - 更新日志.md 已检查:相对链接、官方链接、图片格式、敏感信息和 Git diff。 提交推送后,本地与远端 main 提交一致。 ``` “完成了”这三个字没有多少信息。文件、检查命令和远端状态才方便读者判断任务是否真的结束。 ## 任务中途发现需求没说清怎么办 真实任务很少从第一句话开始就完全明确。发现缺口时,可以让 Codex 暂停编辑并列出需要决策的地方。 例如: ```text 先暂停修改。请列出目前仍然不确定的内容、每个选择会影响哪些文件,以及你的建议。等我确认后再继续。 ``` 如果只是局部问题,直接补充约束即可;如果目标本身发生变化,最好结束当前任务或建立新的分支,不要让一个任务不断扩张。 ## 任务做坏了怎样处理 先停止继续修改,再根据 Git 状态判断影响范围。 - 只有少量错误时,在 diff 中逐行指出并让 Codex 修正。 - 某个文件整体方向错误时,确认没有用户原有修改后,再使用 App 的恢复功能或 Git 恢复该文件。 - 已经提交但还没有推送时,可以在保留历史的前提下继续提交修正。 - 已经推送并被他人使用时,不要擅自重写共享历史,优先创建修复提交或 Pull Request。 不要在不清楚后果时执行 `git reset --hard`、批量删除或覆盖目录。回退动作同样需要审查。 ## 把这套流程迁移到代码任务 知识库案例和代码任务的文件不同,闭环并没有变化。 | 知识库任务 | 代码任务 | |---|---| | 新增文章 | 实现功能或修复 Bug | | 阅读栏目规则 | 阅读项目架构和编码规范 | | 检查链接和图片 | 运行测试、Lint、类型检查和构建 | | 人工通读文章 | 手动复现功能或查看页面 | | 审查 Markdown diff | 审查源代码和测试 diff | | 更新目录和日志 | 更新文档、变更记录或迁移说明 | | 推送文章提交 | 推送分支并创建 Pull Request | 第一次代码任务也应该范围小、结果可见、容易回退。修复一个能稳定复现的问题,通常比“帮我重构整个项目”更适合建立正确习惯。 ## 第一次真实任务自查表 - [ ] 我确认了正确项目、目录和 Git 分支。 - [ ] 我知道任务开始前有哪些未提交修改。 - [ ] 任务包含目标、上下文、限制和完成条件。 - [ ] Codex 修改前读了相关项目规则。 - [ ] 权限请求都在本次任务范围内。 - [ ] 我在方向偏离时及时补充了约束。 - [ ] Codex 运行了与完成条件对应的验证。 - [ ] 我亲自查看了所有相关文件的 diff。 - [ ] 提交中没有无关文件、敏感信息或虚构结果。 - [ ] 推送后本地和远端提交一致。 十项都能回答清楚,这次任务才形成了真正可复用的经验。 ## 下一步学习 完成第一次真实任务后,下一篇会总结 Codex 新手最常见的误区,包括任务范围过大、上下文堆得太多、盲目开放权限、只看回答不看 diff,以及把插件数量当成能力水平。 想练习不同入口的安装和首次运行,可以进入 [安装与首次使用](../01-安装与首次使用/)。需要系统学习任务拆分、计划和纠偏,可以进入 [核心概念与任务方法](../02-核心概念与任务方法/)。 ## 参考资料 - [Codex Best Practices](https://learn.chatgpt.com/guides/best-practices) - [OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes) - [OpenAI Local environments](https://learn.chatgpt.com/docs/environments/local-environment) - [Codex CLI](https://learn.chatgpt.com/docs/codex/cli) - [Codex Code Review](https://learn.chatgpt.com/docs/code-review) - [Git worktrees](https://learn.chatgpt.com/docs/environments/git-worktrees) - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) Codex 的界面、权限名称、Git 工具和可用入口可能随版本与工作区设置变化。 ### Codex 新手常见误区:哪些做法最容易让任务失控 URL: https://codexguide.io/guides/codex-xin-shou-chang-jian-wu-qu 这篇文章写给已经开始使用 Codex,却经常遇到下面情况的读者: # Codex 新手常见误区:哪些做法最容易让任务失控 > 难度:基础 > > 类型:使用误区与纠正方法 ## 这篇文章适合谁 这篇文章写给已经开始使用 Codex,却经常遇到下面情况的读者: - Codex 改了很多文件,但真正的问题没有解决。 - 提示写得越来越长,结果反而越来越不稳定。 - 任务显示完成,打开页面或运行项目后仍然有问题。 - 同一个仓库同时开几个任务,最后不知道修改来自哪里。 - 安装了很多 MCP、Skills 和插件,却没有形成稳定工作流。 这些问题不一定说明 Codex 没有能力完成任务。很多时候,真正需要调整的是任务范围、上下文、权限和验证方式。 ## 先说结论 新手最容易犯的错误,可以归成五组: 1. 任务目标模糊,或者一次塞进太多工作。 2. 上下文给错位置,任务越聊越长。 3. 为了省事过早开放权限,忽略敏感数据。 4. 把 Codex 的完成说明当成验证结果,不看 Git diff。 5. 先追求插件、Cloud 和自动化数量,再寻找真实问题。 改进方法并不复杂:一个任务只对应一个清楚结果;长期规则放进 `AGENTS.md`;高风险动作保留审批;所有修改都经过验证和 diff;扩展工具只在真实流程需要时加入。 ## 官方怎样提醒新手 OpenAI 的 Codex Best Practices 已经列出一组常见错误,包括: - 把长期规则全部塞进提示词,而不是放入 `AGENTS.md` 或 Skill。 - 不告诉 Codex 怎样构建和测试,导致它无法检查自己的工作。 - 多步骤复杂任务跳过计划。 - 尚未理解工作流就开放完整电脑权限。 - 多个实时任务修改同一批文件,却不使用 Git worktree 隔离。 - 手动流程还不稳定就创建定时任务。 - 把 Codex 当成必须逐步盯着的工具。 - 用一个任务承载整个项目,造成上下文膨胀和结果变差。  > 图片来源:[Codex Best Practices](https://learn.chatgpt.com/guides/best-practices#common-mistakes)。本文以官方列表为基础,并结合前七篇中的任务、权限、Git 和验证方法进一步展开。 下面有些内容是 OpenAI 官方直接给出的建议,有些是本知识库根据这些原则做的编辑归纳。涉及产品行为和权限边界时,以文末官方资料为准。 ## 误区是怎样让任务失控的 很多问题来自一连串叠在一起的小决定。 ```mermaid flowchart TD A["目标模糊或范围过大"] --> B["Codex 需要自行猜测"] B --> C["修改范围不断扩大"] C --> D["上下文和工具输出变多"] D --> E["用户难以审查 diff"] E --> F["跳过验证或盲目接受"] F --> G["问题进入提交或远端"] G --> H["继续在混乱状态上追加任务"] H --> D ``` 打断这条链条最便宜的位置,通常是任务开始前:把目标和完成条件说清楚,限制修改范围,并准备能够验证结果的方法。 ## 一、任务设计上的误区 ### 误区 1:只说“帮我优化一下” “优化”“完善”“处理一下”听起来像目标,实际上没有告诉 Codex 哪个结果更重要。 对于“优化登录页面”,Codex 可能理解为改布局、提高性能、重构组件、补测试或调整文案。每个方向都合理,但未必是你要的。 **更好的做法**:至少写出目标、相关范围、不能破坏的内容和完成条件。 ```text 目标:减少登录页面首次加载时的 JavaScript 体积。 范围:只检查登录路由和它直接引入的模块。 限制:不改变页面样式和登录 API。 完成条件:说明主要体积来源;完成范围明确的修改;构建通过;给出修改前后的构建数据。 ``` 清楚不等于写得长。一句“把按钮改成蓝色”已经足够明确,不需要强行补成几百字的提示。 ### 误区 2:第一次就让 Codex 重构整个项目 大任务看起来能充分发挥 Codex 的能力,但它会同时放大上下文、依赖、验证和审查成本。 “重构整个项目”通常没有统一的完成标准。任务进行几小时后,用户很难判断哪些变化必要,哪些只是顺手修改。 **更好的做法**:把大目标拆成能够独立验收的结果。例如先梳理依赖关系,再迁移一个模块,补齐对应测试,最后处理剩余模块。 每个子任务都应该能单独提交或放弃。拆分的重点不在句子数量,而在于每一步都有明确边界和证据。 ### 误区 3:复杂任务也要求立刻写代码 涉及多个模块、数据库迁移、权限模型或外部系统的任务,如果目标还没说清就开始编辑,后面往往需要大面积返工。 OpenAI Best Practices 建议复杂、含糊或难以描述的任务先进入计划阶段。Codex 可以先调查仓库、提出问题和列出修改顺序,再等待确认。 **更好的做法**:先要求计划,不修改文件。 ```text 先调查相关代码和现有测试,不要编辑。请给出问题原因、可能受影响的模块、两种处理方案、推荐方案和验证计划。列出仍需我决定的问题。 ``` 计划不是每个小任务的必经仪式。修一个明确错别字不需要单独写计划;跨模块变更值得先停下来想清楚。 ### 误区 4:把实现细节全部替 Codex 决定好 有些提示会精确指定函数名、变量名、文件位置和每一步命令,却没有说明业务目标。这会把用户尚未验证的技术猜测变成硬约束。 如果你已经确定实现方案,当然可以直接要求执行;如果只是怀疑某个文件有问题,应该把它写成调查线索,不要写成结论。 **更好的做法**:明确不可改变的约束,把可讨论的实现留给调查和计划。 ```text 报错似乎与 retry.ts 有关,这是调查线索,不代表必须只改这个文件。请先确认根因,再给出最小修改方案。 ``` ## 二、上下文和任务管理上的误区 ### 误区 5:上下文越多越好 一次把整个仓库、几十份文档和长篇聊天记录都塞进任务,看起来很全面,但重要信息会被大量无关内容淹没。 上下文也有成本。文件、工具结果、MCP 数据和历史对话都会占用任务可以处理的信息空间。 **更好的做法**:先提供最相关的文件、错误、示例和规范。让 Codex 根据调查结果继续读取,而不是一开始就把所有内容推过去。 可以先说: ```text 问题出现在结算页面。先阅读 checkout 路由、最近一次报错和对应测试;需要其他文件时说明原因后再继续查找。 ``` ### 误区 6:每次提示都重复整套长期规则 代码风格、测试命令、目录结构和禁止事项如果每次都重复,提示会越来越长,也容易出现版本不一致。 OpenAI 建议把稳定、长期生效的项目规则放进 `AGENTS.md`。重复工作形成固定方法后,可以再整理成 Skill。 **更好的做法**: - 当前任务特有的目标和限制写在提示中。 - 仓库结构、运行命令和团队规范写进 `AGENTS.md`。 - 重复出现的完整工作流整理成 Skill。 - 只在外部实时数据确实需要时使用 MCP。 不要把临时决定写进全局规则。一次活动的发布日期不应该永久进入所有项目上下文。 ### 误区 7:一个任务从项目开始聊到项目结束 同一个任务持续几周,里面混着需求讨论、Bug 修复、文档更新和新功能,早期上下文会逐渐失去价值。 官方建议一个任务对应一个连贯的工作结果。如果工作仍是同一个问题,可以留在原任务;目标真正分叉时再新建或 fork。 **更好的做法**:用“能否独立验收和提交”判断是否拆任务。 - “调查支付失败并修复根因”可以是一个任务。 - “修支付 Bug、重做结算页面、更新营销文案”应该拆开。 - 同一个 Bug 的复现、修复和测试通常不必分成三个孤立任务。 ### 误区 8:Codex 每一步都必须等我指挥 新手担心失控,容易让 Codex 每读一个文件、每运行一条测试都停下来确认。任务会被切得很碎,调查思路也难以连续。 另一种极端是完全不看过程,直到任务结束才发现方向早已偏离。 **更好的做法**:让 Codex 连续完成低风险调查和验证,同时要求它在范围变化、高风险操作、关键假设不确定时暂停。 你需要看方向、边界和证据,不需要遥控每一次普通文件读取。 ## 三、权限和数据安全上的误区 ### 误区 9:为了少弹窗,第一次就开启 Full access Full access 可以让 Codex 修改工作区外的文件并运行联网命令。它减少审批,也扩大了错误、数据泄露和意外操作的影响范围。 OpenAI 的权限文档建议多数工作从 `Ask for approval` 开始。权限不足时,再针对清楚的需求逐步开放。 **更好的做法**:先保持工作区边界。只有当任务确实需要访问外部目录或网络,而且你理解将执行的动作时,才批准对应请求。 权限高低不会自动提高推理质量。Full access 只解决“能不能执行”,无法保证判断正确。 ### 误区 10:权限请求只看“允许”按钮 批准权限前没有查看命令、目标目录和网络地址,等于放弃了重要的安全检查。 **更好的做法**:看到请求时快速确认四件事: 1. 动作是否服务于当前任务。 2. 会读取、创建、覆盖还是删除什么。 3. 是否越过当前工作区或访问网络。 4. 失败后能否恢复。 安装系统软件、删除目录、上传文件、修改 GitHub 权限和推送远端,都应该比普通读取命令更谨慎。 ### 误区 11:把 Token 和真实数据直接放进提示 为了让任务尽快跑通,有人会把 API Key、数据库密码、客户数据或私有配置粘贴给 Codex。 这会让敏感内容进入任务记录、终端输出、截图或错误日志。后面即使删除文件,也不代表其他副本已经消失。 **更好的做法**: - 使用环境变量、凭据存储或平台提供的 secrets。 - 仓库只保留不含真实值的 `.env.example`。 - 用脱敏样例替代真实客户数据。 - 发布截图前检查邮箱、本地用户名、私有路径和 Token。 - 把 `~/.codex/auth.json` 按密码文件处理。 敏感信息不应该成为提示写得更“完整”的代价。 ## 四、验证和 Git 上的误区 ### 误区 12:开始前不检查 Git 和项目基线 项目原本就有未提交修改或失败测试,Codex 工作后再出现问题,很难判断是谁造成的。 **更好的做法**:任务开始前至少确认: ```bash git status --short --branch git log -1 --oneline ``` 能够运行项目时,再记录最小构建、测试或人工检查结果。基线失败也没关系,关键是把已有问题和本次任务分开。 ### 误区 13:Codex 说“完成了”,任务就完成了 完成说明只是 Codex 对执行过程的总结。测试可能没有覆盖真实问题,命令也可能没有成功运行。 **更好的做法**:完成条件必须对应证据。 | 完成条件 | 可以接受的证据 | |---|---| | Bug 已修复 | 原问题无法复现,并有针对性测试 | | 页面已完成 | 页面在目标尺寸下可用,交互和控制台正常 | | 构建正常 | 实际构建命令退出成功 | | 文档链接有效 | 相对链接和外部链接检查通过 | | Cloud 任务可合并 | 环境成功运行检查,diff 经过审查 | 看不到证据时,直接要求 Codex 说明哪些检查已运行、哪些无法运行以及原因。 ### 误区 14:测试通过,所以不用看 diff 测试只能覆盖它实际检查的行为。代码可能顺手改了无关文件、删除注释、改变配置或引入维护成本,而测试仍然通过。 **更好的做法**:在接受结果前查看: ```bash git status --short git diff --stat git diff ``` 重点检查修改范围、删除内容、依赖和配置变化,以及是否出现任务没有要求的重构。 测试回答“部分行为是否仍然正确”,diff 回答“项目到底发生了什么”。两者不能互相替代。 ### 误区 15:多个任务同时修改同一个工作目录 并行看起来更快,但几个任务写同一批文件时,容易互相覆盖、误读 Git 状态和让验证结果失效。 OpenAI 官方建议并行本地任务使用 Git worktree 隔离。每个任务拥有独立目录和分支,完成后再分别审查和合并。 **更好的做法**: - 独立任务使用不同 worktree 或 Cloud 环境。 - 有先后依赖的任务按顺序执行。 - 同一工作目录只保留一个主要写入者。 - 切换 App、CLI 和 IDE 前先检查 `git status`。 多个窗口不等于安全并行,隔离才是关键。 ### 误区 16:提交时把所有变化一次打包 使用 `git add .` 暂存整个仓库,可能把任务前的修改、缓存、密钥、截图和无关文件一起提交。 **更好的做法**:先查看状态,只暂存本次任务相关文件,再检查暂存区: ```bash git diff --cached --stat git diff --cached --check ``` 提交应该对应一个能够说清楚的结果。提交信息再漂亮,也无法弥补内容范围混乱。 ## 五、扩展工具和 Cloud 上的误区 ### 误区 17:插件、MCP 和 Skills 装得越多,Codex 越强 扩展确实能增加工具和上下文,但每个扩展也会带来认证、权限、配置、工具选择和上下文成本。 OpenAI Best Practices 建议只在工具能够解除真实工作中的手动环节时再添加,先从一两个明确需求开始。 **更好的做法**: - 数据在仓库外、经常变化时考虑 MCP。 - 同一套方法重复出现时考虑 Skill。 - 需要把 Skills、MCP 和工具打包分发时考虑插件。 - 第一次本地文件任务先使用 Codex 自带能力。 “先安装,再找场景”很容易把学习时间花在配置而不是解决问题上。 ### 误区 18:手动任务没跑通,就先做自动化和定时任务 一个流程每次都需要大量纠偏时,定时执行只会稳定地产生不稳定结果。 官方建议先让流程手动可靠,再把重复方法整理成 Skill,最后考虑定时任务。 **更好的做法**:自动化前确认输入来源、权限、失败处理、验收标准和输出位置都已经稳定。至少连续手动成功几次,并知道失败时怎样恢复。 ### 误区 19:Cloud 一定比本地更强 Cloud 的优势是隔离、并行、后台运行和团队复现。它不会自动补齐缺失的依赖、测试命令和项目文档。 项目只在某台电脑上能运行,或者依赖尚未提交的文件时,本地 App、CLI 或 IDE 反而更容易获得正确上下文。 **更好的做法**:按任务环境选择入口。需要后台和并行时用 Cloud;依赖本机状态、需要高频互动时先在本地完成。具体判断可以参考 [App、CLI、IDE 和 Cloud 怎么选](./05-App-CLI-IDE和Cloud怎么选.md)。 ### 误区 20:找到一条万能提示词,以后就不用调整 提示词模板能提醒你填写目标和限制,但项目、任务风险和验收方式每次都不同。 同一句“请先思考、逐步执行、确保正确”不会自动告诉 Codex 使用哪个测试命令,也不会发现仓库中的真实规则。 **更好的做法**:保留稳定的任务骨架,把具体目标、上下文和完成条件按当前工作填写。重复规则进入 `AGENTS.md`,重复流程进入 Skill。 比起收集一百条提示词,更值得积累的是:什么任务适合拆分、什么证据可以验收、哪些错误应该写进项目规则。 ### 误区 21:生成代码越多、速度越快,结果越好 Codex 可以在短时间内修改很多文件,但代码量不是价值指标。一个正确的两行修复,可能比新增几百行抽象更好。 速度也要结合审查成本。五分钟生成、两小时排错的修改,并不比四十分钟完成且容易验证的方案高效。 **更好的做法**:关注结果是否解决问题、修改是否足够小、验证是否可信、后续是否容易维护。 ## 快速判断自己卡在哪个误区 | 现象 | 可能的问题 | 先做什么 | |---|---|---| | Codex 改了大量无关文件 | 目标或范围不清 | 停止编辑,重新限定文件和完成条件 | | 提示越来越长 | 长期规则和任务信息混在一起 | 把稳定规则移入 `AGENTS.md` | | 对话越长结果越差 | 一个任务承载了多个结果 | 按可独立验收的结果拆任务 | | 测试通过但页面有问题 | 验证方式不完整 | 增加人工页面和交互检查 | | 不知道该不该批准命令 | 权限边界没有建立 | 回到 Ask for approval,查看命令和影响范围 | | 多个任务互相覆盖 | 没有隔离工作目录 | 使用 worktree、独立分支或 Cloud 环境 | | MCP 经常报错但任务根本用不到 | 扩展安装过多 | 禁用与当前任务无关的工具 | | Cloud 任务无法运行 | 环境不可复现 | 先补安装、依赖和测试说明 | | 每次都重复纠正同一问题 | 项目规则没有沉淀 | 更新 `AGENTS.md` 或形成 Skill | | 提交后才发现混入私密文件 | 没有审查暂存区 | 提交前检查状态、暂存 diff 和敏感信息 | ## 一套更稳的默认工作方式 不想逐条记住二十一个误区,可以先坚持下面八步: 1. 一个任务只对应一个连贯结果。 2. 写清 Goal、Context、Constraints 和 Done when。 3. 复杂任务先调查和计划,小任务直接执行。 4. 默认使用 Ask for approval,逐项理解高风险请求。 5. 开始前记录 Git 和项目基线。 6. 修改后运行与完成条件对应的验证。 7. 接受结果前查看完整 diff 和暂存区。 8. 流程稳定后再增加 AGENTS.md、Skill、MCP、插件和自动化。 这套方法不会让每个任务一次成功,但能让失败更容易发现、定位和恢复。 ## 自查清单 - [ ] 任务是否只有一个清楚的主要结果? - [ ] 是否写明了完成条件,而不是只写“优化”或“完善”? - [ ] 长期规则是否放在合适的 `AGENTS.md` 或 Skill 中? - [ ] 当前任务是否已经因为对话过长而需要拆分? - [ ] 权限是否与当前任务风险相匹配? - [ ] 提示、仓库和截图中是否包含敏感信息? - [ ] 是否记录了任务开始前的 Git 和测试状态? - [ ] Codex 是否运行了能够证明结果的检查? - [ ] 是否亲自查看了 diff、实际页面或运行结果? - [ ] MCP、插件、Cloud 和自动化是否解决了真实需求? ## 下一步学习 完成这一篇后,`00-从这里开始` 的八篇内容已经覆盖 Codex 的定位、适用人群、能力边界、模式与入口选择、首次准备、真实任务和常见误区。 接下来可以进入 [安装与首次使用](../01-安装与首次使用/),根据自己的系统安装 App、CLI 或 IDE extension。已经完成安装的读者,可以进入 [核心概念与任务方法](../02-核心概念与任务方法/),系统学习上下文、计划、任务拆分、权限和验证。 ## 参考资料 - [Codex Best Practices](https://learn.chatgpt.com/guides/best-practices) - [OpenAI Prompting](https://learn.chatgpt.com/docs/prompting) - [AGENTS.md](https://learn.chatgpt.com/docs/agent-configuration/agents-md) - [OpenAI Permissions](https://learn.chatgpt.com/docs/permission-modes) - [Codex Code Review](https://learn.chatgpt.com/docs/code-review) - [Git worktrees](https://learn.chatgpt.com/docs/environments/git-worktrees) - [Model Context Protocol](https://learn.chatgpt.com/docs/extend/mcp) - [Build skills](https://learn.chatgpt.com/docs/build-skills) - [Build plugins](https://learn.chatgpt.com/docs/build-plugins) - [Scheduled tasks](https://learn.chatgpt.com/docs/automations) - [Cloud environments](https://learn.chatgpt.com/docs/environments/cloud-environment) - [Codex Manual](https://developers.openai.com/codex/codex-manual.md) Codex 的权限、配置、工具和任务管理方式可能随版本与工作区设置变化。 ### 登录 Codex:选择 ChatGPT 或 API Key 并确认本地入口 URL: https://codexguide.io/guides/deng-lu-codex 安装好 ChatGPT 桌面应用里的 Codex、Codex CLI 或 IDE 扩展后,下一步就是登录。 # 登录 Codex > 官方资料核对:2026-09-18;本仓库本轮未完成 App、CLI 或 IDE 的客户端实测。 安装好 ChatGPT 桌面应用里的 Codex、Codex CLI 或 IDE 扩展后,下一步就是登录。官方认证文档确认三种本地入口都支持 ChatGPT 登录和 API Key 登录;Codex Cloud 要求使用 ChatGPT 登录。下面按 App、CLI 和 IDE 分别说明,按钮和版本差异以当前客户端为准。 ## 先选登录方式 第一次使用时,直接选择 ChatGPT 登录就够了。客户端会打开浏览器完成授权,再返回 App、CLI 或 IDE。只有按 API 调用量计费,或需要在脚本、自动化环境中运行时,才需要考虑 API Key。Codex Cloud 只能使用 ChatGPT 登录,API Key 不能替代它。 开始前只需准备一个可用账号。操作过程中不要把邮箱、验证码、API Key 或 `auth.json` 放进截图、仓库和任务提示。 ## ChatGPT 登录和 API Key 怎么选 OpenAI 的 Authentication 文档列出了两种本地登录方式。ChatGPT 登录使用订阅或工作区权益,API Key 按 API 用量计费。ChatGPT 桌面应用、Codex CLI 和 IDE 扩展都支持这两种方式。  图 1:官方 Authentication 页面。 | 你的情况 | 建议 | | --- | --- | | 第一次使用 Codex,已经有 ChatGPT 账号 | 先用 ChatGPT 登录 | | 想使用 Codex Cloud | 用 ChatGPT 登录,并确认账号或工作区已开通 Cloud | | 在脚本、CI 或可信的自动化环境中按量调用 | 使用 API Key 或组织提供的 Access Token | | 只是想完成一次本地任务 | 不要为了开始而单独创建 API Key | API Key 和 ChatGPT 订阅使用不同的计费与权限体系。API Key 在 OpenAI Platform 中管理;一旦泄露,应立即撤销并重新生成。 ## App:从登录按钮到返回应用 ### 1. 打开登录入口 启动 ChatGPT 桌面应用。未登录时会看到登录页,英文界面有 **Continue to sign in** 和 **Sign in another way** 两个按钮。 ### 2. 用 ChatGPT 账号登录 点击 **Continue to sign in**,中文界面对应“继续登录”。应用会打开浏览器,接下来在 ChatGPT 网页完成身份验证。  图 2:中文登录界面,“使用其他方式登录”可切换登录方式。 网页会提供 Google、Apple、手机号或邮箱等入口,具体选项因账号和地区而异。输入账号信息前,先确认地址栏是官方 `chatgpt.com` 域名。  图 3:ChatGPT 官方网页登录页。 完成登录和授权后,回到刚才的应用窗口。浏览器没有自动切回时,手动打开 App,等页面刷新即可。授权完成前不要关闭浏览器或应用。 ### 3. 确认 App 已经登录 出现下面几种情况,就说明 App 已经登录: - 应用不再停留在登录页; - 账号菜单可以正常打开; - Codex 入口已经可用。 账号菜单的位置可能随版本调整。应用不再要求登录、Codex 入口也能打开,就可以继续下一步。 ## CLI:浏览器登录、设备码和 API Key ### 1. 用 ChatGPT 登录 在 PowerShell、Terminal 或 WSL 中进入练习项目目录,启动 Codex: ```powershell codex ``` 第一次启动时选择当前界面提供的 ChatGPT 登录方式,再在浏览器中完成授权。官方 CLI Quickstart 的共同步骤是“进入项目目录并运行 `codex`”;本轮不把版本相关的子命令作为首期必做步骤。  图 4:Codex CLI 启动后的界面。输入提示词前,先确认顶部显示的模型和目录符合预期。 无图形界面的设备码或其他登录方式是否可用,取决于当前 CLI 版本和账号策略。本轮不把它写成通用必做步骤;需要时先运行 `codex --help`,以当前版本输出为准。 ### 2. 需要 API Key 时再按当前入口操作 官方认证文档确认 API Key 可用于本地 App、CLI 和 IDE,但具体输入入口和命令参数可能随客户端版本变化。首期练习不要求 API Key;如果确实需要按量计费的 API 工作流,请打开当前客户端的登录帮助和[官方认证文档](https://learn.chatgpt.com/docs/auth),不要直接复制旧教程中的参数。API Key 不要写进命令行历史、提示词、仓库或截图。 ### 3. 用只读请求确认当前环境 登录后,在同一个练习目录运行 `codex`,发送:“请读取当前目录的 README 或任务说明,不要修改文件。”能正常进入会话并读取允许访问的文件,才说明当前登录、项目路径和基础权限至少能支持首期练习。不要把登录截图或认证文件当作唯一成功证据。 ## IDE:登录入口和返回编辑器 VS Code、Cursor 等兼容编辑器会在 Codex 侧栏中显示登录按钮。打开侧栏,选择 **通过 ChatGPT 登录**,然后回到原来的编辑器窗口完成授权。  图 6:VS Code 中的 Codex 登录入口,也可以在这里选择 API Key。  图 7:选择 API Key 后,在输入框中粘贴 Key。使用这种方式时,Cloud 任务不可用。 浏览器没有自动返回时,手动切回编辑器并重新打开 Codex 侧栏。登录成功后,登录按钮会变成对话输入框,就能在当前项目中发起任务。  图 8:登录成功后的对话界面,底部显示当前处于本地模式。 ## 切换账号和退出登录 App 和 IDE 都能从账号菜单退出,再用目标账号重新登录。菜单名称和位置可能随版本变化,但不要通过删除配置目录来“强制切换”,否则其他本地设置也可能一起丢失。 CLI 的退出与重新登录入口可能随版本变化。需要切换账号时,优先使用当前客户端提供的退出入口;不要删除整个配置目录来“强制切换”。 Windows 和 WSL 是两套独立环境,需要分别检查;一边退出不会自动让另一边退出。 ## 凭据存储和安全边界 本地登录信息可能保存在操作系统的凭据存储中,也可能写入 `~/.codex/auth.json`。这些信息等同于密码,需要妥善保管: - 不提交到 Git,不上传到 Issue、网盘或聊天记录; - 截图前遮住邮箱、头像、工作区、令牌和本地用户名; - 怀疑泄露 API Key 时,立即到 OpenAI Platform 撤销并重新生成; - 共享电脑完成任务后退出登录,并检查浏览器是否仍保留账号会话。 登录成功不等于 Codex 能访问所有文件。项目目录、网络和命令权限仍由 App、CLI 或 IDE 的权限设置决定。第一次使用时,建议保留 **Ask for approval**,执行敏感操作前先确认。 ## 登录失败时怎么排查 先看登录卡在哪一步: | 现象 | 先检查什么 | | --- | --- | | 点击登录没有浏览器 | 默认浏览器、弹窗拦截、网络和代理 | | 浏览器登录成功,客户端仍未登录 | 回到原来的 App/IDE 窗口,重新打开登录面板;必要时重启客户端 | | CLI 无法进入会话 | 在同一套环境中运行 `codex`,观察当前版本提供的登录提示;Windows 和 WSL 的认证状态彼此独立 | | API Key 登录失败 | 环境变量是否存在、Key 是否有效、组织和计费是否允许调用 | | Cloud 无法使用 | 确认使用的是 ChatGPT 登录,而不是 API Key;再检查账号、工作区和 MFA 要求 | 仍然无法登录时,记录客户端名称、版本、操作系统、登录方式、完整错误文字和发生时间。需要发送截图时,记得遮住账号和凭据。 ## 完成检查 - [ ] 我知道当前入口使用的是 ChatGPT 还是 API Key。 - [ ] 浏览器授权后,我回到了原来的 App、CLI 或 IDE。 - [ ] App 或 IDE 不再显示登录按钮,CLI 能在当前练习目录进入会话并接受只读请求。 - [ ] 我没有在截图、仓库或终端记录中暴露凭据。 - [ ] 如果要使用 Cloud,我确认账号使用 ChatGPT 登录并满足工作区要求。 ## 下一步 - [打开第一个本地项目](./08-打开第一个本地项目.md) - [完成第一次修改并检查结果](./09-完成第一次修改并检查结果.md) - [安装登录常见问题](./13-安装登录常见问题.md) ## 参考资料 - [OpenAI Authentication](https://learn.chatgpt.com/docs/auth) - [OpenAI Codex CLI](https://learn.chatgpt.com/docs/codex/cli) - [第一次使用 Codex 前要准备什么](../00-从这里开始/06-第一次使用前要准备什么.md) - [Windows 安装 Codex App](./03-Windows安装Codex-App.md) - [Windows 和 WSL 安装 Codex CLI](./05-Windows和WSL安装Codex-CLI.md) - [VS Code 和兼容编辑器安装 Codex](./06-VS-Code和兼容编辑器安装Codex.md) > 登录按钮、账号菜单、Cloud 权限和 CLI 选项可能随客户端版本、地区及工作区策略变化。实际操作以当前界面和官方文档为准。 ### 打开第一个本地项目:确认目录、权限与起始状态 URL: https://codexguide.io/guides/da-kai-di-yi-ge-ben-di-xiang-mu 登录后,先别让 Codex 改代码。第一次使用,可以准备一个随时能恢复的练习项目,或者先复制一份项目再操作。本文以 VS Code 为主,也会介绍 Codex 桌面端和 CLI 的入口。 # 打开第一个本地项目,让 Codex 看懂目录 登录后,先别让 Codex 改代码。第一次使用,可以准备一个随时能恢复的练习项目,或者先复制一份项目再操作。本文以 VS Code 为主,也会介绍 Codex 桌面端和 CLI 的入口。 首期不要求准备 Node.js 项目:可以直接使用[本地网页练习包](../练习材料/Codex首次任务-本地网页练习包.zip),把 `起始文件/` 复制到新目录,再打开这个复制出的目录。本文后面的通用项目说明仍适用于真实仓库,但不能替代首期练习的具体目录。 ## 先选对目录 打开项目根目录,不要选桌面、仓库的上一级目录,也不要只选包含某个源文件的子目录。根目录通常能看到 `README.md`、`package.json`、`pyproject.toml`、`.git` 或其他项目入口文件。 第一次练习可以准备一个单独的测试目录,例如 ```text codex-demo/ ├─ README.md ├─ src/ └─ tests/ ``` 不要把密码、API Key、生产配置和个人数据放进这个练习目录。Codex 能否访问文件,取决于当前客户端的权限设置。登录状态不代表它可以读取电脑上的所有内容。 ## 在 VS Code 中打开 1. 在 VS Code 中选择“文件 > 打开文件夹…”,选中项目根目录。 2. 等待左侧资源管理器显示项目树,再点开一个你准备阅读的文件。 3. 打开 Codex 面板,把任务需要的文件加入上下文。 图 1 从“文件”菜单打开项目文件夹
如果项目已经在另一个 VS Code 窗口中打开,也可以用 Codex 的“Add Folder”入口添加目录。先只添加当前任务需要的目录,需要扩大范围时再添加,定位问题会更方便。 ## 先做一次只读检查 在 Codex 输入框先发送一条只读请求 ```text 请只读取当前项目,不要修改文件。请说明下面几项 1. 项目使用的语言和主要入口; 2. 如何安装依赖和运行测试; 3. 当前 Git 分支、工作区是否有未提交修改; 4. 你准备读取或运行哪些路径和命令。 ``` 看到它列出准备执行的命令后,先确认路径和命令符合预期。第一次使用时,可以保持“Ask for approval”或同等的逐次确认模式。 图 2 Codex 桌面端读取工作区,并说明准备检查的内容
## 在 Codex 桌面端和 CLI 中打开项目 在 Codex 桌面端打开左上角的“文件”菜单,选择“打开文件夹”,然后选中项目根目录。 图 3 在 Codex 桌面端打开项目文件夹
CLI 则在项目根目录启动 ```powershell cd C:\path\to\codex-demo codex ``` 启动后先发送同样的只读检查。Windows PowerShell 与 WSL 的路径和 Git 环境彼此独立,在哪个环境启动,就在哪个环境里检查和修改。 ## 打开后的检查清单 - [ ] 当前工作目录是项目根目录。 - [ ] 没有把密钥、令牌或个人资料加入上下文。 - [ ] 已确认当前分支和未提交修改。 - [ ] 已让 Codex 先完成一次只读理解。 - [ ] 需要写入文件或运行命令时,知道如何逐项批准或拒绝。 完成这一步后,再进入下一篇的“小改动 + diff + 检查”练习。结果不符合预期时,先看 diff,再决定是否撤回改动。 下一步阅读 [完成第一次修改并检查结果](./09-完成第一次修改并检查结果.md),用一个小改动练习 diff、验证和回退。 ### 完成第一次修改并检查结果:本地网页练习与历史案例 URL: https://codexguide.io/guides/wan-cheng-di-yi-ci-xiu-gai-bing-jian-cha-jie-guo 本文首期使用独立的本地静态网页练习:只修改 index.html 的主标题和一段简介,保留按钮链接、其他 HTML 内容和全部 CSS。练习材料在 [练习材料/首次任务-本地网页/](../练习材料/首次任务-本地网页/);不要直接操作 CodexGuide 正式网站或私人仓库。 # 完成第一次修改并检查结果:本地网页练习与历史案例 > 难度:基础 > > 类型:首次任务后的结果检查 > > 首期主线:准备 → 打开练习目录 → 完成小修改 → 检查结果 ## 首期统一练习 本文首期使用独立的本地静态网页练习:只修改 `index.html` 的主标题和一段简介,保留按钮链接、其他 HTML 内容和全部 CSS。练习材料在 [`练习材料/首次任务-本地网页/`](../练习材料/首次任务-本地网页/);不要直接操作 CodexGuide 正式网站或私人仓库。 适用环境:已经登录 Codex App 或 CLI 其中一种,并能打开复制出的练习目录。App 与 CLI 共用同一任务和验收标准,本轮没有声称所有系统和客户端均已实测。 ## 先确认起始目录 1. 解压 [`Codex首次任务-本地网页练习包.zip`](../练习材料/Codex首次任务-本地网页练习包.zip),或复制仓库中的 `练习材料/首次任务-本地网页/起始文件/`。 2. 把 `起始文件/` 复制到新的测试目录;Codex 应打开这个复制出的目录,直接看到 `index.html` 和 `styles.css`。 3. 先打开 `任务说明.md`,再阅读 `检查清单.md`。`参考差异/` 只在修改后查看。 4. 不要把原始 starter 当作工作区,也不要向目录加入 Token、`.env`、客户资料或生产配置。 ## 给 Codex 的任务 ```text 请先阅读 index.html 和 styles.css,不要修改文件。 然后只做这两处文字修改: 1. 将主标题改为“我的第一个 Codex 练习”; 2. 将简介改为“先看清修改,再确认页面结果。”。 请保留按钮文字、https://example.com 链接、其他 HTML 内容和全部 CSS 样式。 完成后告诉我修改了哪些行,不要运行部署或安装命令。 ``` 如果 Codex 先提出读取或编辑请求,确认路径仍是这个测试目录。App 和 CLI 的按钮、权限显示可能不同;本任务只需要允许当前练习目录内的读取和编辑。 ## 检查修改范围 预期只有 `index.html` 的两处文字变化: ```diff -用十分钟记录今天读到的一段话,慢慢建立自己的阅读清单。
+先看清修改,再确认页面结果。
``` 逐项检查: - `styles.css` 没有变化; - 按钮文字仍是“查看阅读清单”; - 按钮链接仍是 `https://example.com`; - diff 中没有重排、安装、部署或其他文件修改; - 若目录不是 Git 仓库,使用原始 starter 和当前文件做人工比较,不要凭空补写测试命令。 ## 检查实际页面结果 直接在浏览器打开测试目录中的 `index.html`,确认标题、简介、按钮和样式都正常显示。页面能打开只证明浏览器读到了本地文件,不证明 Codex 已经正确完成任务;还要把页面看到的结果和 diff 对照。 ## 出错时怎么处理 - 找不到 `index.html`:停止修改,用 `pwd`、`ls` 或 App 的当前文件夹信息确认打开的是复制出的目录。 - `styles.css` 或按钮链接发生变化:保留当前 diff 作为证据,重新解压到新目录,不要清空真实工作区或执行 `git reset --hard`。 - 页面文字正确但样式异常:比较 `styles.css` 与 starter;如果不能确认,重新解压再练习。 - 登录、权限或客户端入口异常:先看[登录 Codex](./07-登录Codex.md)和[安装登录常见问题](./13-安装登录常见问题.md);仍无法定位时进入[故障排查目录](../15-故障排查与常见问题/README.md)。 ## 当前练习的完成标准 - [ ] 在正确的复制目录中完成修改; - [ ] 只改了 `index.html` 的标题和简介; - [ ] 原有按钮文字、链接和 CSS 保留; - [ ] 已查看 diff 或完成起始文件对照; - [ ] 浏览器页面显示与目标文字一致; - [ ] 记录了客户端、操作系统和任何未验证项。 下面保留此前发布的 README 文档案例,供希望学习“先查项目实际命令,再修改并验证”的读者参考。它依赖一个另行准备的 Node.js 练习项目,不是首期本地网页练习。 ## 历史案例:README 文档修改 ## 开始前确认 准备一个可以随时恢复的练习项目,并确认: - 当前目录是项目根目录; - 项目中没有密码、Token、客户资料或生产配置; - 你知道当前 Git 分支和工作区状态; - 第一次练习只改一个文件。 本次示例项目的目录如下: ```text codex-first-edit-demo/ ├─ README.md ├─ package.json └─ tests/ └─ check.mjs ``` 图一:打开练习项目,确认 README、配置文件和测试目录
## 先做只读检查 先让 Codex 读取项目,不要修改文件。可以直接发送: ```text 请先只读取项目配置和 Git 状态,不要修改文件。 请告诉我: 1. README.md 当前有哪些标题; 2. 项目的启动命令和测试命令; 3. 当前 Git 分支和工作区是否有未提交修改; 4. 完成下一步任务前,你准备读取哪些文件、运行哪些命令。 ``` 图二:先确认项目结构、脚本和 Git 状态
这一步的价值在于先看事实,再写任务。示例项目的 `package.json` 只有 `npm test`,没有 `npm run dev`。如果 README 写入不存在的启动命令,文档就会误导读者。 图三:项目配置没有 dev 脚本,不能把 npm run dev 当成可用命令
## 发送范围明确的修改请求 确认项目现状后,再发送修改请求。下面的写法同时限定了目标文件、禁止事项和验收方式: ```text 请只修改 README.md。 在“开发”这一节补充项目当前实际可用的命令,以 package.json 的配置为准。 限制: - 不修改 package.json 和其他文件; - 不新增依赖; - 不调整现有标题层级; - 不运行会修改数据或删除文件的命令。 如果发现我要求的命令不存在,请先说明,不要自行修改配置。 修改完成后先告诉我改了什么,并展示 diff,等我确认后再验证。 ``` 看到 Codex 请求写入文件或执行命令时,只批准与这次任务直接相关的操作。如果请求扩大到删除目录、覆盖大量文件或安装依赖,先停止并重新确认范围。 图四:再次强调只修改 README,避免任务范围扩大
## 查看修改摘要和 diff Codex 完成编辑后,先看它的摘要,再打开编辑器的 Changes 面板。示例中最终只增加了 `npm test`,没有修改 `package.json` 或其他文件。 图五:修改摘要应说明文件、内容和依据
还可以让 Codex 只审查本次修改: ```text 请只审查刚才的改动:列出修改文件、每处修改的目的,以及是否违反了“只改 README.md”的限制。不要继续编辑。 ``` 重点检查三件事: 1. 修改文件是否只有预期文件; 2. 命令是否来自项目实际配置; 3. 是否混入格式化、重命名或无关内容。 图六:通过 diff 确认新增内容和未改动内容
如果项目已经有其他未提交修改,不要直接恢复整个文件。先区分哪些内容属于本次任务,再决定是否撤销。 ## 做最小验证 diff 看起来正确后,再验证命令确实存在并运行项目已有的测试: ```text 请读取 package.json,确认 README.md 中写入的命令与项目配置一致。 确认没有问题后,只运行项目已有的测试命令 npm test。 不要安装依赖,不要修改配置,不要清理缓存。 请报告实际执行的命令、测试结果和当前 Git 状态。 ``` 示例项目的测试输出为 `README check passed`,退出码为 `0`。这说明本次 README 修改没有破坏已有检查。 图七:运行项目已有测试,确认结果可复现
如果项目没有自动化测试,就做 Markdown、命令名称和 diff 的人工检查,并在记录中说明“未运行自动化测试”。不要为了验证一个小改动擅自升级依赖、清理缓存或修改项目配置。 ## 最后检查 Git 状态 在终端中执行: ```powershell git diff --check git status --short git diff -- README.md ``` `git diff --check` 用来发现多余空格等基础问题;`git status --short` 确认没有意外改动;最后一条只查看目标文件的完整差异。 ## 不符合预期时如何回退 发现修改超出范围或内容不对时,优先使用编辑器撤销,或者在确认目标文件没有其他人的改动后,精确恢复这次修改。不要删除整个项目目录,也不要把 `git reset --hard` 当作第一次练习的默认操作。 ## 完成标准 - [ ] 目标文件和修改范围与任务描述一致; - [ ] 已查看完整 diff,没有无关格式化或敏感信息; - [ ] 已运行项目提供的最小检查,或记录了未运行原因; - [ ] `git diff --check` 通过,工作区状态符合预期; - [ ] 知道如何只撤销本次修改。 第一次修改的重点不是让 Codex 一次做很多事,而是建立一套可重复的节奏:描述目标,批准操作,检查 diff,运行验证,确认状态。后面的开发、修 Bug 和文档更新,都可以沿用这套流程。 接下来可以进入 [核心概念与任务方法](../02-核心概念与任务方法/) 和 [项目理解与上下文](../03-项目理解与上下文/),继续学习任务拆分与项目规则。 ### 用 Codex 批量压缩图片并转换为 WebP URL: https://codexguide.io/guides/codex-batch-image-conversion-skill 文章配图经常需要限制宽度、转换格式和控制文件大小。img-convert Skill 可以让 Codex 按固定规则检查图片,再调用命令行工具批量处理。 # 用 Codex 批量压缩图片并转换为 WebP 文章配图经常需要限制宽度、转换格式和控制文件大小。`img-convert` Skill 可以让 Codex 按固定规则检查图片,再调用命令行工具批量处理。 本文使用 [dutchbase/img-converter](https://github.com/dutchbase/img-converter) 提供的 `img-convert` Skill,把指定目录中的图片限制在 1200px 宽,转换成质量 85 的 WebP,并写入独立输出目录。 > 本次实测环境为 Windows 11 24H2、Node.js 22.22.3 和 img-convert 1.0.4,测试完成于 2026-08-17。 ## 查看 Skill 的能力和来源 `img-convert` 基于 Sharp,仓库使用 MIT 许可证。项目提供命令行工具、Node.js API、MCP 服务和 `SKILL.md`。本文使用 Codex Skill 配合 CLI 完成批量处理。 它支持读取 JPEG、PNG、WebP、AVIF、GIF 和 TIFF,也能调整尺寸、压缩质量、旋转、裁边和读取图片信息。批量任务可以传入 glob 路径,也可以使用 JSON 清单。  > 图片来源:[dutchbase/img-converter](https://github.com/dutchbase/img-converter)。 安装前先读取仓库,确认其中包含 `img-convert` Skill。 ```powershell npx -y skills add https://github.com/dutchbase/img-converter --list ``` 命令应显示名为 `img-convert` 的 Skill。仓库中的 [SKILL.md](https://github.com/dutchbase/img-converter/blob/main/SKILL.md) 是实际执行说明。  > 图片来源:CodexGuide 实测。  > 图片来源:[dutchbase/img-converter SKILL.md](https://github.com/dutchbase/img-converter/blob/main/SKILL.md)。 ## 安装 Skill 和命令行工具 先把 Skill 安装到 Codex 的全局技能目录。 ```powershell npx -y skills add https://github.com/dutchbase/img-converter ` --skill img-convert ` --agent codex ` --global ` --yes ``` Skill 负责告诉 Codex 怎样使用工具,不会自动安装 `img-convert` 命令。还要安装仓库发布的 npm 包。 ```powershell npm install -g @dutchbase/img-convert ``` 本次安装成功,npm 同时提示依赖的 `glob@10.5.0` 已弃用。这个警告没有阻止本文测试。生产目录或自动化流水线使用前,应重新检查包版本、依赖审计结果和仓库更新情况。第一次运行时,先用可恢复的图片副本测试。 工具要求 Node.js 18 或更高版本。安装完成后检查命令是否可用。 ```powershell node --version img-convert --help img-convert info --help img-convert batch --help ```  > 图片来源:CodexGuide 实测。  > 图片来源:CodexGuide 实测。 ## 说明处理规则 本次实测使用下面这组参数。 | 项目 | 设置 | |---|---| | 输入 | 指定目录中的 JPG、JPEG、PNG 和 WebP | | 输出目录 | 新建 `output` 目录 | | 最大宽度 | 1200px | | 输出格式 | WebP | | 图片质量 | 85 | | 原文件 | 保留,不覆盖、不删除 | `img-convert` 默认保持宽高比,也不会放大小图。宽度超过 1200px 的图片会等比缩小,小于 1200px 的图片保持原尺寸。 输出目录应与原图目录分开。命令参数即使写错,原文件仍能保留。 ## 先用 dry-run 预演 假设原图位于 `D:\images\original`,先运行 `--dry-run` 查看将要处理的文件。 ```powershell img-convert "D:/images/original/**/*.{jpg,jpeg,png,webp}" ` --format webp ` --width 1200 ` --quality 85 ` --output "D:\images\output" ` --dry-run ` --json ``` glob 路径放在引号中,让 `img-convert` 展开文件列表。Windows 下的 glob 使用正斜杠 `/`。反斜杠可能被当成转义符,导致工具找不到图片。 预演完成后检查文件数量和输出目录,也要确认不同格式的同名文件不会写成同一个 `.webp`。  > 图片来源:CodexGuide 实测。 ## 确认后执行批量转换 预演结果正确后,去掉 `--dry-run`。 ```powershell img-convert "D:/images/original/**/*.{jpg,jpeg,png,webp}" ` --format webp ` --width 1200 ` --quality 85 ` --output "D:\images\output" ` --json ``` `--json` 返回每张图片的输入大小、输出大小、压缩比例、尺寸和保存路径。截图中的 `compact-json.js` 只调整真实 JSON 的换行,字段和值没有改动。三张图片全部转换成功,失败数为 0。  > 图片来源:CodexGuide 实测。 不同图片需要不同尺寸或格式时,可以让 Codex 先生成 JSON 清单,再运行批处理。 ```powershell img-convert batch jobs.json --json ``` 统一转换使用 glob 即可,不必先做清单。 ## 让 Codex 调用 Skill 安装后重启 Codex,再提交下面的任务。 ```text 使用 img-convert Skill,先检查 D:\images\original 中会被处理的 JPG、JPEG、PNG 和 WebP 图片。 把宽度限制为 1200px,保持比例,不放大小图,统一转成质量 85 的 WebP,输出到 D:\images\output。 保留所有原文件。先 dry-run 并汇报文件数量和命名冲突,确认没有问题后再执行,最后给出处理成功数、失败数和总压缩比例。 ``` 这段任务要求 Codex 先检查和预演,再执行并汇报结果。Skill 也会提醒 Codex 读取陌生图片的信息,留意透明通道和动画图片。 ## 核对三张公开测试图片 测试集包含一张 1800×1200 JPG、一张 560×560 PNG 和一张 550×368 WebP。大图等比缩到 1200×800,两张小图保持原尺寸,说明 `--width 1200` 没有放大小图。 统一转换为 WebP 后,每张图片的体积变化不同。JPG 减少 48.8%,PNG 减少 14.2%,原本已经压缩过的 WebP 重新编码后增加 19.7%。批量任务结束后要检查负压缩率,不能只看成功数量。 | 项目 | 处理前 | 处理后 | |---|---|---| | 图片数量 | 3 | 3 | | 总文件大小 | 237,357 字节 | 144,698 字节 | | 最大宽度 | 1800px | 1200px | | 文件格式 | JPG、PNG、WebP | WebP | | 失败数量 | - | 0 | 总大小减少 92,659 字节,整体压缩率约 39.0%。原图目录没有被覆盖,三个 WebP 都写入独立的 `output` 目录。  > 图片来源:CodexGuide 实测。 ## 完成后检查 - 原图数量、名称和内容没有变化。 - 输出图片都位于独立目录。 - 横图和竖图保持原始比例,小图没有被放大。 - 透明区域正常,动画图片没有意外丢帧。 - 同名输入不会覆盖同一个 WebP 文件。 - 失败文件和原因已经单独列出。 ## 参考资料 - [dutchbase/img-converter](https://github.com/dutchbase/img-converter) - [img-convert SKILL.md](https://github.com/dutchbase/img-converter/blob/main/SKILL.md) - [@dutchbase/img-convert](https://www.npmjs.com/package/@dutchbase/img-convert) - [MIT License](https://github.com/dutchbase/img-converter/blob/main/LICENSE) ### Codex 做上线前端到端验收 URL: https://codexguide.io/guides/codex-browser-e2e-acceptance 最近不停在上一些小功能,就需要验收。 # Codex 做上线前端到端验收 最近不停在上一些小功能,就需要验收。 验收时有几个麻烦点。它涉及登录态、数据、扣费、历史记录等。只看代码或者只跑单元测试都不够,最后一定要有人在真实环境里过一遍完整流程。 可以把测试用例交给 Codex,让它通过浏览器扩展控制已有登录态,直接完成端到端验收。 ## 为什么适合交给 Codex 验收 以前做这种验收,麻烦在于点击过程中要不断判断状态。 比如页面上的入口有没有出现,弹窗或表单里的数据能不能正常选择,选择后的状态有没有回填,点击提交以后有没有前端校验错误,异步任务最终有没有结果,余额有没有变化,历史记录有没有新增。 这些事情连在一起就很容易漏。验收过程里还要截图、记录余额、记录错误文案,最好能把每一步结论都留下。 Codex 做这类任务有一个很舒服的点,它可以按测试用例一步一步执行,同时把过程可视化地反馈出来。哪一步通过了,哪一步有问题,它会直接标出来。需要证据时,它也会把截图保存下来。  这张图里能看到,A 到 H 每个断言都有状态。有些通过,有些失败,另一些因为预算或条件跳过。对我来说,这比口头说"我测过了"可靠很多,因为它保留了过程。 ## Codex 浏览器登录态的优势 Codex 通过 Chrome 插件接管浏览器。 自动化测试也可以处理登录态,但通常需要维护测试账号、登录脚本和状态文件。在研发阶段的人工终验里,我更需要直接使用当前浏览器里已经登录好的账号,让 Codex 接管现有页面继续操作。 这对很多真实产品场景很方便。比如后台权限已经配置好,账号已经在某个分组里,或者页面状态和环境刚刚调好。让 Codex 直接接管这个浏览器,会比重新写一套登录和准备脚本省很多时间。 Codex 适合上线前后的人肉终验、一次性排查、扣费路径和复杂后台状态验证;稳定、可重复的批量回归仍应由项目现有的自动化测试负责。 ## 测试用例越具体,Codex 执行越稳 这次让我感受最明显的一点是,测试用例要写得足够具体。 不要只写"测试这个功能是否可用",这句话太宽了。更好的写法是把每一步拆清楚,写明打开哪个 URL、点击哪个入口、选择什么测试数据、表单里填什么,以及失败时要记录哪些信息。 当流程写清楚以后,Codex 执行起来就很像一个耐心的验收同事。它不会只看页面有没有报错,而是会按断言逐项收集证据。 在一次带扣费的异步任务验收里,它会先记录初始余额,按测试用例选择素材和参数,确认页面预估费用,提交后检查有没有前端校验错误,再等待任务结果。任务完成后,它还会回到 dashboard 和 history 页确认扣费与产物记录。  最后的报告里,它不仅说"通过了",还列出了每张截图证据,包括初始状态、关键输入、提交前参数、生成过程、成功结果和最终历史记录。以后有人要追查这个功能是否真的验过,直接看这些证据就行。 ## 这类验收应该怎么分工 Codex 更适合放在验收阶段。尤其是需要真实浏览器、真实登录态、真实环境和真实产物时,它可以操作页面,并记录每一步。 中间最重要的交接物是一份清楚的测试用例。里面最好包含测试环境、账号或登录方式、初始状态、每一步操作和断言,以及预算、失败证据和禁止动作。 ## 一个可复用的小结论 Codex 可以放在研发流程的不同位置,写代码和验收功能是两类任务。 实现功能是一件事,验证功能又是另一件事。 这次的体验让我觉得,端到端验收很适合交给能控制浏览器、保留上下文并截图取证的 Codex。前提是测试用例要写清楚,尤其是涉及登录态、扣费、权限、历史数据和异步任务的路径。 这套分工适合需要真实登录态和真实产物的验收任务。 ### Codex 在任务结束时捕捉可复用素材 URL: https://codexguide.io/guides/codex-capture-reusable-content 一个任务刚结束时,操作步骤、失败原因和取舍还在当前上下文里。等到几天后再整理,很多细节已经需要重新查。可以给 Codex 增加一条任务结束规则,只在确实出现可复用经验时生成素材候选。 # Codex 在任务结束时捕捉可复用素材 一个任务刚结束时,操作步骤、失败原因和取舍还在当前上下文里。等到几天后再整理,很多细节已经需要重新查。可以给 Codex 增加一条任务结束规则,只在确实出现可复用经验时生成素材候选。 这条规则适合经常用 Codex 做项目维护、工具接入和流程改进的人。它只负责记录线索,不自动发布内容,也不应把私密配置写进素材库。  > 概念示意,任务完成后先判断复用价值,再整理可核对的素材记录。 ## 哪些任务值得记录 触发条件要具体,否则 Codex 每次简单问答后都来提醒,几天以后这条规则就会变成干扰。 适合记录的内容包括一条跑通的工具接入流程、经过验证的配置取舍、具有复现步骤的故障处理,以及可以重复执行的发布或检查方法。 下面几类任务可以直接跳过。 - 纯聊天和简单问答。 - 没有稳定复现方式的偶发故障。 - 只对当前临时环境有效的处理。 - 包含账号凭据、客户数据或内部地址,且无法可靠脱敏的内容。 - 赶时间结束,用户已经明确不需要额外整理的任务。 ## 把规则放在哪里 只服务一个仓库的规则可以写入项目根目录的 `AGENTS.md`。多个项目都要使用时,可以放进 Codex 的用户级 `AGENTS.md`,再让具体项目用更靠近工作目录的规则覆盖它。 项目规则会随仓库一起共享。个人内容规划、私有素材路径和账号信息不要提交到公共仓库,这类设置更适合放在本机用户级规则中。 ## 一份可直接使用的触发规则 ```markdown 任务结束时捕捉可复用素材 完成主要任务后,检查本次工作是否产生了可复用经验。 满足下列任一条件时,输出一个“素材候选”小节。 - 跑通了可以重复执行的工具接入或自动化流程。 - 找到并验证了一个不明显的故障原因和修复方法。 - 形成了有依据的配置、安全或发布取舍。 - 产出了可公开复用的命令、检查清单或操作顺序。 纯聊天、简单问答、机械性修改和没有复现证据的猜测不触发。 素材候选包含任务场景、实际操作、遇到的卡点、解决方法、 可复用结论和证据路径。不得写入密钥、个人信息、客户数据、 内部域名或未经确认的结论。 只生成候选内容。写入素材文件或发布前先取得用户确认。 ``` 规则里的“完成主要任务后”很重要。素材整理不能打断原任务,也不能把尚未验证的中间结果写成经验。  > 原稿中的规则配置示例,展示了触发范围、跳过条件和输出要素。 ## 固定素材候选的格式 稳定格式方便后续筛选,也能减少同一件事被写成多条空泛总结。 ```markdown 素材候选 - 任务场景 - 实际操作 - 卡点与原因 - 解决方法 - 可复用结论 - 证据路径或公开来源 - 需要删除或脱敏的信息 ``` 证据路径可以是改动文件、测试命令、公开文档链接或错误日志位置。它帮助后续写作者重新核对,不代表这些内部路径都可以直接公开。 ## 需要落盘时再增加保存规则 素材候选先显示在任务结果里最稳妥。确定要长期保存后,可以增加一个本机目录,例如 `notes/materials/`,并规定文件名和状态字段。 ```markdown --- title: Codex 任务素材标题 status: candidate created: 2026-08-20 source_task: 任务名称或本机记录 privacy_review: pending --- ``` 公共仓库不适合存放个人内容计划。素材目录如果位于项目内,需要先检查 `.gitignore` 和团队约定,避免把本机记录误提交。 ## 用一个小任务验证规则 配置完成后,分别测试一次应该触发和不应触发的任务。 1. 让 Codex 完成一个带验证步骤的小型流程改动,检查结果中是否出现素材候选。 2. 提一个普通概念问题,确认它不会生成无关提醒。 3. 在测试材料里放入明显的占位密钥,确认输出不会复述敏感值。 4. 拒绝保存一次,确认 Codex 不会擅自写入素材文件。 如果触发太频繁,就收紧条件。候选内容总是很空,说明规则缺少证据字段或任务本身没有足够材料。先把触发和记录做好,再考虑自动分类、定时复盘或发布工作流。 ## 参考资料 - [Codex 的 AGENTS.md 说明](https://developers.openai.com/codex/guides/agents-md) - [Codex 官方文档](https://developers.openai.com/codex/) ### Codex 跨会话协作功能 URL: https://codexguide.io/guides/codex-cross-session-collaboration Codex 的跨会话协作功能,我已经用了一段时间。它帮我省掉了很多来回搬运信息的时间。 # Codex 跨会话协作功能 Codex 的跨会话协作功能,我已经用了一段时间。它帮我省掉了很多来回搬运信息的时间。 下面是我目前的使用场景。 我比较喜欢把一个需求或一项任务完整地放在同一个会话里,从讨论、执行到最后部署上线。这样这个会话会非常清楚整个需求的上下文,从开始一直到最终验收,也能确保不会混入其他内容。 一个会话里要处理的事情太多,经常动不动就是一长串 P0、P1、P2,很容易把需要我决策的关键信息覆盖掉。 如果重新开一个会话,人又像搬运工一样,需要来回复制粘贴,还可能漏掉关键点。 Codex 支持一个会话创建另一个会话,并把任务交过去,这个问题就简单了很多。 比如功能做完之后,我可以直接告诉它:“准备测试用例,在某个文件夹下面创建一个新会话,把测试交给对方来做,你负责验收即可。” 这样一个负责测试,一个负责验收,两个会话之间可以互相交流。我只需要等结果,再做最后的验收就行了。  再比如,一个任务进行过程中衍生出了可以独立处理的其他任务,也可以直接让当前会话创建一个新会话,把任务和上下文一起发送过去,省时省力。  ### Codex 远程连接支持移动端与 Windows 主机 URL: https://codexguide.io/guides/codex-remote-control-mac Codex 的远程连接适合把一台持续在线的电脑作为主机,在另一台设备上发任务、看进度和检查结果。代码、命令和桌面操作仍然发生在主机上。 # Codex 远程连接支持移动端与 Windows 主机 Codex 的远程连接适合把一台持续在线的电脑作为主机,在另一台设备上发任务、看进度和检查结果。代码、命令和桌面操作仍然发生在主机上。 ## 移动端配对 移动端使用同一个 ChatGPT 账号和 workspace。桌面端显示二维码或配对入口后,用 iOS 或 Android 上的 ChatGPT 扫码并确认授权。配对完成后,手机可以继续已有会话、接收完成或需要关注的通知,也可以在已连接主机上创建新任务。 主机必须在线、唤醒并保持 Codex App 可用。手机显示离线时,先检查主机睡眠状态、网络和登录 workspace。 ## Windows 主机的限制 远程连接支持 Windows host。Windows 上的 Computer Use 会占用当前桌面的前台输入,会移动指针并输入文字;任务运行时不能同时操作同一桌面。需要后台处理时,优先使用 CLI、结构化 MCP 或浏览器扩展。 ## Mac、SSH 与安全边界 Mac 主机可以通过 Control this Mac 和 Control other devices 配置单向控制;Linux 或 devbox 通过 SSH 连接。两台设备应使用同一账号,控制方向需要分别授权。 涉及真实项目时仍要检查 Git diff、命令结果和测试。不要把密码、Token、客户数据或生产删除操作交给未经确认的远程任务。 参考:[Codex Remote connections](https://developers.openai.com/codex/remote-connections)、[Work with Codex from anywhere](https://openai.com/index/work-with-codex-from-anywhere/)。 ### Codex 浏览器操作与登录态功能 URL: https://codexguide.io/guides/codex-browser-login-state Codex 现在可以通过浏览器扩展、内置浏览器和 Computer Use 操作网页或桌面应用。这几种入口的登录态、操作范围和限制不同,选错入口容易在任务中途卡住。 # Codex 浏览器操作与登录态功能 Codex 现在可以通过浏览器扩展、内置浏览器和 Computer Use 操作网页或桌面应用。这几种入口的登录态、操作范围和限制不同,选错入口容易在任务中途卡住。 前几天让 Codex 通过浏览器扩展走一遍开放平台的应用权限发布流程。它先在我开着的标签页里找到之前保留的权限页,直接接管并进入发布流程。 每走一步,它都在对话里说清楚自己在干什么。而且边界定的挺好的,不确定的,还有权限相关的问题会停下来确认。 前几天发现Codex有画中画功能,太牛了。 界面右侧多了个画中画小窗,它操作哪个页面,小窗里就实时显示哪个页面,不用再在 Codex 和浏览器之间来回切。  这是最近一次大版本更新带的。那次更新把 Codex 桌面应用的相关能力集中到了新的桌面体验里。 只要 Codex 开始操作电脑或浏览器,小窗就自动弹出。可以拖动位置,点一下直接跳到正在被操作的应用。任务用到多个窗口时,预览叠成一摞,可以切着看。 不想看就关掉,任务运行中随时能从任务摘要视图重新打开,侧边栏的"电脑使用"分区里也有显示开关。 ## 它确实不抢你的鼠标 我注意到一个细节,它在浏览器里点点点,我自己的鼠标不受影响,该干嘛干嘛。 查了一下,Chrome 扩展安装时申请的第一个权限就是页面调试器,也就是 Chrome DevTools Protocol。它的点击和输入是通过调试协议直接发进页面的合成事件,不经过系统鼠标,你的光标不会被拖走。 官方发布 Chrome 扩展时的说法也是这个意思,**它可以在后台跨标签页并行干活,不接管你的浏览器**。 操作 macOS 桌面应用的 Computer Use 同理,它用自己的光标去看、去点、去打字,不干扰你在其他应用里的工作。 例外是 Windows。Windows 上的 Computer Use 只能在当前桌面前台跑,官方文档明确写了会移动指针、打字、占住前台。 ## 三个入口 Codex 现在有三种操作界面的方式。 内置浏览器(@Browser)用独立的浏览器环境,默认没有你的登录态。看公开网页、预览 localhost 上自己开发的页面,用它最干净。 不过最近上了一个"从浏览器导入"功能,可以把 Chrome 的密码和 Cookie 拷一份进内置浏览器,导入时要完全关闭 Chrome。Cookie 本身就是登录凭证,导过之后它也能直接打开需要登录的网站了。 官方文档原来写内置浏览器不支持登录,这次改版已经把这句删掉了。  要注意这是一次性拷贝,不是持续同步。之后你在 Chrome 里新登录的账号、改过的密码不会跟过来。官方也提醒 Cookie 要当敏感数据对待,导了哪些站的登录态,自己心里要有数。 Chrome 扩展(@Chrome)直接用你 Chrome 里已登录的账号。判断标准就一条,任务是否依赖你的账号、cookies 或已经打开的标签页。要就用它,我这次的后台配置就属于这类。和导入过数据的内置浏览器比,扩展用的是活的 Chrome,当下的会话、刚打开的标签页都在。 Computer Use(@Computer)操作桌面应用,活儿完全在浏览器之外时才轮到它。 如果任务有结构化接口,优先让 Codex 使用结构化连接。只有接口覆盖不到时,再让它通过视觉操作完成任务。 ## 别人都拿它干什么 看了一圈国内外的实测分享。 流传最广的一个案例,有人让它盯亚马逊客服的排队页面,每五分钟看一眼,真人客服上线后改成每分钟盯,最后趁主人洗澡的时候把退款办完了。 日常一点的用法也不少。每天定时检查社交账号的私信,把用户反馈收集进笔记库,并且明确禁止它发帖;把领英收件箱里的招聘私信按公司分组整理;从通话笔记更新 CRM 里的客户记录。 开发相关的,登录后才能复现的 bug 直接在真实会话里复现;开多个标签页,并行测试不同用户角色下的流程。 信息整理类,搜十几篇游记,把景点整理进在线表格,再去地图上建好收藏清单。 这些活的共同点是没有 API,界面是唯一入口,以前只能自己点。 ## 想让它干得稳,有几个技巧 看别人的经验,加上我自己这次的体会,有几条值得记下来。 **把禁区和停止点写进指令里。**比如"不要动账号和订阅设置""提交前停下来等我确认"。发送、发布、购买这类动作前必须留人工确认,这是社区的普遍共识。 指令用"做 X,验证 Y,符合 Z 才继续"的写法,能明显减少静默失败。让它汇报具体细节,比如确切的 URL 和页面上的确认信息,别让它只说"完成了"。 **从小任务开始,跑通的指令存下来复用。**一次性的演示跑成功了,把 prompt 原文存住,下次同类活直接用,慢慢攒出自己的自动化清单。 授权按域名管理,首次访问新网站它都会弹窗问你。白名单从空开始按需加,财务、HR 这类后台可以直接拉黑。"始终允许浏览器内容"这种开关官方自己都标了高风险。 要让它往网页表单传文件,得在 Chrome 扩展详情里手动打开文件访问权限,不然会卡在上传那步。 Codex 模型分为 Sol、Terra、Luna 三档之后,派活可以更精细。日常任务用 Terra 就够,难题再上 Sol。Luna 快而便宜,但长上下文能力差得多,别拿它碰大仓库和长文档。 如果上下文或用量紧张,关闭当前任务用不到的连接,并在任务摘要里确认剩余用量。 ## 不该给它的活 反爬严的站点和验证码它过不去,一操作就容易被拦。系统级的安全弹窗它点不了,需要管理员身份的认证也过不去,这些是官方明确的硬边界。 浏览器扩展目前只支持一个浏览器配置档。切换配置档后,需要重新完成扩展连接和授权。 更要紧的是安全边界。授权是按域名给的,一个域名放行之后,上面的页面内容都会进它的上下文,恶意页面理论上可以往里塞指令。这个问题目前没有根治的办法。 所以社区的红线很一致,支付、删除生产数据、改安全设置、大批量导出个人数据,这四类活永远自己点。**它能做,不代表应该让它做。** ## 这个月还上了什么 这波更新里画中画只是个小点,changelog 里还有不少东西。 这次桌面更新除了画中画,还加入了应用内编辑代码和文档、行内批注、代码评审等能力。 GPT-5.6 也在这波全量上线,就是上面说的三个档位,API 定价每百万输入 token 分别是 5、2.5、1 美元。Computer Use 换上 GPT-5.6 之后,操作速度也提了一截。 CLI 也在补充远程连接和任务管理能力,具体入口以当前版本界面为准。  ## 参考资料 - [Codex 官方文档](https://developers.openai.com/codex/) ### 在 Codex 中连接 Notion:把调研结果写入数据库 URL: https://codexguide.io/guides/codex-notion-plugin-workflow 这篇教程适合已经能在 Codex 桌面端创建任务,并希望把调研结果直接整理到 Notion 的读者。完成后,你会连接 Notion 插件、验证页面读取权限,并把一组结构化资料写入两个数据库。 # 在 Codex 中连接 Notion:把调研结果写入数据库 这篇教程适合已经能在 Codex 桌面端创建任务,并希望把调研结果直接整理到 Notion 的读者。完成后,你会连接 Notion 插件、验证页面读取权限,并把一组结构化资料写入两个数据库。 示例只使用测试工作区。不要用客户资料、内部知识库或个人页面做第一次连接测试。 ## 本教程环境 以下环境核验于 2026 年 8 月 13 日。Notion 插件运行在 Codex 桌面端的 Plugins 界面中,不要求通过 IDE 或 Codex CLI 操作。 | 项目 | 本教程使用版本 | 获取方式 | 备注 | |---|---|---|---| | 操作系统 | Windows 11 专业版 64 位,构建 `26100` | Windows 系统信息 | 本机实测环境 | | Codex 桌面端 | `26.803.10989.0` | Windows 应用包信息 | 本教程的插件宿主 | | Notion 插件 | 目录托管版本,界面未展示独立版本号 | Codex Plugins 目录 | 以当前插件详情为准 | | Notion Connector | Web 托管版本,界面未展示独立版本号 | Notion 授权界面 | 可用权限受工作区设置影响 | | Codex CLI | `0.146.1` | `codex --version` | 本教程不在 CLI 中执行 | 界面、插件入口和授权范围可能随 Codex、Notion 或工作区策略调整。操作时以当前页面为准。 ## 先说结论 这套流程分成四步:安装插件、限制授权范围、用测试页面验证读取、确认字段后再写入数据库。 真正需要谨慎的是授权和写入。第一次连接时只开放测试页面;批量创建或更新内容前,先让 Codex 列出准备执行的操作。  ## 1. 安装 Notion 插件 启动 Codex 桌面端,在左侧导航栏打开“插件”。如果没有这个入口,先确认当前版本和工作区支持 Plugins,再检查组织管理员是否限制了插件安装。  进入插件目录,在搜索框输入 `Notion`。核对名称和说明后点击安装。  安装过程中,Windows 可能询问是否允许网页打开 ChatGPT。确认地址和来源无误后再继续。不希望系统以后自动跳转,就不要勾选“始终允许”。  ## 2. 限制 Notion 授权范围 连接窗口会列出 ChatGPT 与 Notion 之间共享的数据。先检查申请的权限,再确认选中的 Notion 工作区。 本教程没有保留工作区选择页,因为原画面包含个人空间名称。制作自己的操作记录时,也应隐藏邮箱、成员名单、内部页面名称和授权令牌。  建议新建一个只含公开示例内容的测试页面,并只把这个页面开放给连接。等读取和写入都验证完成,再根据实际任务扩大范围。 ## 3. 用测试页面验证连接 新建 Codex 任务,在输入框键入 `@notion`,从候选列表中选择 Notion 插件,然后写清楚要读取的测试页面。插件必须加入当前任务,Codex 才能在这轮对话中调用它。  第一次只做只读验证。可以使用下面的任务描述: ```text 请读取 Notion 中的测试页面“Notion-Codex demo”,只返回页面标题、正文是否为空和当前可见的属性。不要创建、修改或删除任何内容。 ``` 本次示例返回的页面只有标题,没有正文。这说明连接已经建立,Codex 也能访问指定页面。  如果提示找不到页面,先检查页面是否属于已授权工作区、当前账号是否有访问权限,以及授权时是否选中了正确页面。不要为了绕过错误直接开放整个工作区。 ## 4. 调研资料并确认字段 连接验证通过后,再提交正式调研任务。本次示例整理主流 AI 图片与视频生成模型,要求优先使用官网、官方文档、公告和定价页,并记录: - 模型名称、厂商、发布时间和版本。 - 核心参数、可用状态和价格。 - 优点、限制、推荐场景和官方来源。 - 官网没有公开的字段标为“暂未公开”,不补猜测值。 Codex 完成检索后,先在任务中检查结构化结果,不要立刻写入 Notion。截图中的调研基准日是 2026 年 8 月 12 日;模型状态和价格变化较快,复用这套表格时需要重新核对。  检查时重点看字段是否一致、每条记录是否有来源、未知信息是否被明确标出。发现无来源的价格或参数,先删除或补证据。 ## 5. 写入 Notion 数据库 确认内容后,再让 Codex 创建一个总览页,并把图片模型和视频模型分别放进两个子数据库。总览页保留调研日期、使用说明和数据库入口。  图片模型数据库使用厂商、可用状态、计费方式、优势标签、推荐场景和官方来源等字段。标签适合筛选,官方来源用于后续复核。  视频模型数据库沿用同一套字段。图片和视频分开后,各自的版本、状态和价格更容易维护。  ## 如何验收 写入完成后,不要只看 Codex 的完成提示。回到 Notion 逐项检查: 1. 总览页和两个数据库位于预期的测试页面下。 2. 数据库字段名称、类型和选项一致。 3. 每条记录都有可打开的官方来源,未知字段没有被猜测值填满。 4. 没有覆盖同名页面,也没有修改授权范围之外的内容。 5. 测试结束后,Notion 连接设置中的访问范围仍符合预期。 如果结果不对,先停止后续写入。记录出错的字段或页面,再让 Codex 只修正这一小部分。 ## 权限与限制 - 插件能看到什么,取决于 Notion 账号、工作区策略和授权页面范围。 - 批量写入前先要求 Codex 列出目标页面、数据库和字段,不要把确认步骤省掉。 - 价格、地区可用性和 Preview 状态会变化,资料库应保留来源与核验日期。 - 不再使用的测试连接可以撤销;测试页面应与正式知识库分开。 - 本教程只验证了页面读取、页面创建和数据库写入,没有验证团队级权限管理或大批量更新。 ## 参考资料 - [Notion 官方网站](https://www.notion.com/) - [OpenAI Codex 文档](https://developers.openai.com/codex/) ### Codex 桌面端协作设置,从入口到权限与任务纠偏 URL: https://codexguide.io/guides/codex-desktop-collaboration-settings 这篇文章写给已经安装 ChatGPT 桌面端,准备让 Codex 读取项目、修改文件并运行命令的读者。 # Codex 桌面端协作设置,从入口到权限与任务纠偏 > 难度 | 基础 > > 类型 | 设置与权限 ## 这篇文章适合谁 这篇文章写给已经安装 ChatGPT 桌面端,准备让 Codex 读取项目、修改文件并运行命令的读者。 你会依次检查工作入口、长期协作习惯、默认表达方式、权限,以及新消息是立即纠偏还是排队等待。 界面会随版本变化。找不到某个选项时,先更新桌面端,再以当前设置页和官方文档为准。 ## 先选对工作入口 桌面端把 ChatGPT 与 Codex 放在同一个产品中,但两者面对的任务不同。  ChatGPT 适合讨论、研究和文件类交付。Codex 面向软件开发任务,可以在你授权的工作区中读取和修改文件、运行命令,并结合测试结果继续工作。 准备改代码、配置或仓库文件时选择 Codex。只想比较方案或整理想法时,可以先在 ChatGPT 中讨论,方向确定后再进入 Codex。 ## 把稳定要求写进自定义指令 设置页的“个性化”区域包含自定义指令和 Memories。两者不能混为一项设置。  自定义指令保存你主动声明的长期要求,例如修改范围、汇报方式和验证标准。可以先写一组短规则。 ```text 开始修改前先读取仓库规则和相关文件。 只处理当前任务需要的范围。 完成后说明改动文件、验证命令和未覆盖的风险。 提交、推送、发布或删除重要数据前先确认授权。 ``` Memories 用来让后续聊天复用过去工作中提取的有用信息。官方文档说明,本地 Codex Memories 默认关闭,可在“设置 > 个性化”中启用,也可以用 `/memories` 控制当前聊天是否读取或生成记忆。 密钥、Cookie、客户资料和私人聊天原文不要写进自定义指令或长期记忆。项目事实仍应保存在项目文档、代码和版本记录中,并在使用前重新核对。 ## 个性只改变表达方式 如果回复经常太长,可以在“个性”中选择更直接的表达方式。  个性会影响默认语气和解释多少,不会提高模型能力,也不会覆盖当前任务的明确要求。与其只靠一个全局选项,不如在重要任务里写清交付格式。 ```text 先给处理结果,再列验证情况和剩余风险。 解释控制在读者能够复核修改的范围内。 ``` ## 权限要跟任务风险匹配 Codex 的权限决定它能读取哪些路径、能否写入工作区,以及网络或工作区之外的操作是否需要审批。  第一次进入陌生项目,先使用受限权限完成只读检查。确认项目结构、Git 状态和计划后,再允许工作区写入。只有任务确实需要广泛文件或网络访问,并且你清楚影响范围时,才考虑更宽的权限。 完整访问会减少中途审批,也会扩大误删文件、泄露数据或执行意外命令的影响。生产数据库、账号安全设置、公开发布和费用相关操作应保留人工确认点。 ## 用 Follow-up behavior 控制临时消息 Codex 工作时仍然可以接收新消息。设置页的 Follow-up behavior 决定消息进入当前执行,还是等待下一轮。  Steer 会把新消息加入当前执行,适合纠正范围、补充遗漏条件或提供新证据。Queue 会把消息留到下一轮,适合不应打断当前工作的后续任务。 发现 Codex 正在修改无关文件时应立即 Steer。想让它完成测试后再整理文档,则可以 Queue。队列中的消息可以在发送前编辑、调整顺序或删除。 ## 设置完成后再扩展 Skills Skills 用来保存可复用的工作流程,不负责修复含糊的任务边界。先把入口、指令和权限调顺,再根据重复出现的真实任务选择 Skill。  官方文档建议让每个 Skill 聚焦一个任务,写清触发条件、输入、步骤和输出。安装第三方 Skill 前,还要检查来源、脚本、依赖、文件访问和网络请求,并用可丢弃的样例做第一次测试。 ## 验证设置是否生效 选一个有 Git 版本控制的小项目,先让 Codex 只读检查,再交给它一项可以撤销的小修改。 ```text 先读取 README、仓库规则和 Git 状态,不要修改文件。 说明完成这项小改动需要哪些文件、命令和权限,等我确认后再执行。 ``` 执行中补一条范围限制,观察消息是立即 Steer 还是进入 Queue。完成后检查 `git diff` 和验证命令。能够看清修改范围、审批节点和验证结果,说明这套设置已经可以用于日常任务。 ## 参考资料 - [Codex Quickstart](https://developers.openai.com/codex/quickstart) - [Codex app settings](https://developers.openai.com/codex/app/settings) - [Codex permissions](https://developers.openai.com/codex/permissions) - [Codex Memories](https://developers.openai.com/codex/memories) - [Prompting 中的 Steering 与 Queue](https://learn.chatgpt.com/docs/prompting) - [Codex Skills](https://developers.openai.com/codex/skills) ### Codex 长任务工作流,分开讨论、执行、审查与交接 URL: https://codexguide.io/guides/codex-long-task-collaboration-workflow 这篇文章适合已经能用 Codex 完成小修改,但在长任务中遇到上下文混乱、讨论打断执行、审查缺少独立视角或跨聊天交接困难的读者。 # Codex 长任务工作流,分开讨论、执行、审查与交接 > 难度 | 进阶 > > 类型 | 长任务与多 Agent 协作 ## 这篇文章适合谁 这篇文章适合已经能用 Codex 完成小修改,但在长任务中遇到上下文混乱、讨论打断执行、审查缺少独立视角或跨聊天交接困难的读者。 核心做法很简单。临时问题放进 Quick Chat,围绕当前任务的方案讨论放进 Side Chat,范围明确的独立工作交给 Subagent,修改完成后单独 Review,最后留下可以复核的交接记录。 ## 推理强度只解决一部分问题 复杂任务需要足够的推理强度,但把所有工作塞进一个聊天,选择更高档位也不会自动消除上下文噪声。  先按任务难度选择模型和推理强度。架构取舍、跨模块修改和回归风险较高的排查需要更充分的推理;机械搜索、读取日志或执行边界已经确定的小步骤,可以交给更快的模型或独立工作线程。 模型名称和可用档位可能随账号与版本变化。不要把某个档位写成长期规则,先在当前模型选择器中确认。 ## 临时问题放进 Quick Chat Quick Chat 适合处理不应打断主任务的短问题。Windows 可以使用 `Ctrl + Alt + N`,也可以从“新聊天”旁的入口打开。  例如主任务正在运行测试,你想确认一个配置字段的含义。把问题放进 Quick Chat,等结论明确后再决定是否加入主任务。  回传时只发送已经确认的要求,不要把整段试探性讨论全部带回去。 ## 方案分歧放进 Side Chat Side Chat 会带着当前任务的相关上下文开始一段临时讨论,同时不打断主聊天。IDE 中可以使用 `/side`。  看到某段内容需要单独展开时,也可以选中文字后进入 Side Chat。  桌面端任务菜单同样提供入口。  Side Chat 适合比较两种实现、检查迁移风险或整理新的执行指令。讨论结束后,把决定和理由压缩成几句话送回主任务。 ## 独立工作交给 Subagent 官方文档将 Subagent 定位为并行处理独立子任务的方式。每个 Subagent 有自己的上下文,主聊天负责委派、等待和汇总。 适合委派的任务包括只读扫描某个模块、补一组测试、核对文档来源或从不同角度审查同一分支。需求仍在变化、多个子任务会同时修改同一文件,或者工作量很小的时候,不要为了并行而并行。 可以直接在提示词里规定分工。 ```text 把当前分支的审查拆给两个 Subagent。 一个只检查行为回归和缺失测试,另一个只检查权限与敏感数据风险。 两边都只读,不要修改文件。等待全部完成后,按严重程度汇总并附文件位置。 ``` Codex 也支持把自定义 Agent 定义放在用户或项目的 `.codex/agents/` 目录。自定义 Agent 应只负责一个清楚的角色,并限制修改范围、工具和验证要求。没有必要时可以省略固定模型,让 Codex 按任务选择。 ## 修改完成后单独 Review 实现任务完成后,打开 Review 面板或运行 `/review`,让 Codex只看当前差异、行为风险和缺失测试。 ```text 审查当前分支相对 main 的差异。 只报告能够由代码、测试或运行路径证明的问题,标明文件和位置。 先不要修改内容。 ``` 审查和修复分开,可以保留问题出现时的证据。确认哪些发现需要处理后,再开始下一轮修改。 ## 交接记录必须区分状态 长任务暂停前,可以在项目中写一份临时 `HANDOFF.md`,或在新的聊天中引用原聊天的技术 ID。交接记录不能替代当前文件和 Git 状态。 一份可用的交接至少要写清当前目标、已经完成的内容、未解决问题、下一步动作和已知风险。状态要分开记录。 ```markdown ## 当前状态 - 本地修改:已完成 - 测试:已通过指定命令 - 提交:未创建 - 远端:未推送 - 部署:未开始 - 线上验证:未进行 ``` 下一次继续时,先读交接,再检查真实状态。 ```text 先读 HANDOFF.md,再检查当前文件、Git 状态和最近的验证结果。 指出交接记录与现场不一致的地方,然后给出下一步。 ``` ## 一套可执行的长任务顺序 1. 在主聊天中确认目标、限制和完成标准。 2. 临时问题放进 Quick Chat,较长的方案分歧放进 Side Chat。 3. 只把独立、边界稳定的工作交给 Subagent。 4. 主聊天整合结果并完成实现和验证。 5. 用独立 Review 检查当前差异。 6. 暂停前写交接,继续时重新核对现场。 这套顺序的价值在于隔离不同种类的上下文。主聊天保留最终决定和项目状态,旁支讨论与并行搜索不会把执行要求淹没。 ## 参考资料 - [Codex app commands](https://developers.openai.com/codex/app/commands) - [Codex IDE commands](https://developers.openai.com/codex/ide/commands) - [Codex Subagents](https://developers.openai.com/codex/subagents) - [Codex Developer commands](https://developers.openai.com/codex/developer-commands) - [Prompting 中的 Steering 与 Queue](https://learn.chatgpt.com/docs/prompting) ### Codex 任务收尾系统,用 Markdown 保存状态、决策与可复用流程 URL: https://codexguide.io/guides/codex-task-closeout-memory-system 这篇文章写给需要长期维护多个项目,已经发现“任务做完了,下一次还要重新解释”的读者。 # Codex 任务收尾系统,用 Markdown 保存状态、决策与可复用流程 > 难度 | 进阶 > > 类型 | 知识管理与任务交接 ## 这篇文章适合谁 这篇文章写给需要长期维护多个项目,已经发现“任务做完了,下一次还要重新解释”的读者。 你会建立一套本地 Markdown 收尾流程。它记录本轮已经证实的状态、选择方案的理由和下次可以复用的步骤,同时把密钥、私人内容和没有证据的推测挡在长期记录之外。 ## 聊天摘要不能代替任务状态 普通摘要能说明刚才讨论了什么,却不一定能回答项目现在处于哪个阶段。 本地测试通过、代码已经合并、服务已经部署和公开页面完成验证是四种不同状态。收尾记录应写到证据能够支持的位置,不能提前升级。 例如只运行了本地测试,可以记录测试命令和结果。没有检查远端分支与线上页面时,就保留“未推送”和“未部署”。 ## LLM Wiki 提供了一个可借鉴的结构 Andrej Karpathy 在 2026 年 4 月 4 日发布了 LLM Wiki 构想,提出让 Agent 持续维护相互连接的 Markdown 知识库。原始资料、整理后的 Wiki 和规则文件承担不同责任,新材料进入后还要处理来源、矛盾和更新。  这个构想没有规定唯一目录。下面的结构是一套个人实践,用来管理 Codex 任务收尾,不代表 Karpathy、OpenAI 或 Obsidian 的官方方案。 ## 用目录区分写入责任 可以先建立一个很小的本地目录。 ```text Codex/ ├── AGENTS.md ├── INDEX.md ├── 项目/ ├── 工作流/ ├── 决策/ └── 用户记忆/ ```  `INDEX.md` 只保存入口和关键词,避免每次扫描整个目录。项目记录保存当前可核验状态和下一步;工作流保存能够重复使用的操作顺序;决策记录备选方案、最终选择和重新评估条件;用户记忆只保存稳定偏好与授权边界。 `AGENTS.md` 规定读取顺序、写入位置、敏感信息和冲突处理。项目私有规则放在项目中,个人规则留在用户目录,不要把本机习惯复制进公开仓库。 ## 任务结束时走完五步 一次重要任务完成后,按下面顺序收尾。 1. 提取本轮新确认的事实,并记录证据位置。 2. 区分本地、提交、远端、部署和线上验证状态。 3. 判断内容属于项目、工作流、决策或用户记忆。 4. 写入前检查重复、冲突、过时内容和敏感信息。 5. 只更新本轮真正影响到的少量文件。  一次性命令输出、可以直接从代码读取的细节和未验证猜测通常不值得长期保存。记忆负责提供线索,真实项目和外部服务仍要在下一次任务中重新核对。 ## 写入前先判断动作 为了避免知识库不断堆叠重复内容,可以给每条候选信息分配一个动作。 | 动作 | 什么时候使用 | |---|---| | `ADD` | 当前没有对应记录,需要新建 | | `UPDATE` | 已有事实发生变化,应更新原记录 | | `NOOP` | 内容已经存在,不重复写入 | | `MARK_OUTDATED` | 旧结论失效,但需要保留变化痕迹 | | `MERGE_REQUIRED` | 多处记录重复或冲突,需要人工合并 | | `ASK_USER` | 涉及敏感信息或无法判断归属 |  假设项目记录原来写着“功能尚未部署”,新任务只看到公开页面出现了新入口。当前证据只能支持“公开页面可见”。接口是否可用、是否需要登录、后端是否已经切换仍要继续验证。 ## 先生成计划,再允许写入 第一次使用这套方法时,不要让 Codex 直接批量更新知识库。先让它生成写入计划。 ```text 请为本轮任务做一次记忆收尾,先不要写入文件。 1. 列出本轮新确认的事实和证据来源。 2. 分开记录本地修改、测试、提交、远端、部署和线上验证。 3. 判断每条内容应进入项目、工作流、决策、用户记忆,或不写入。 4. 标记 ADD、UPDATE、NOOP、MARK_OUTDATED、MERGE_REQUIRED 或 ASK_USER。 5. 检查密码、密钥、Cookie、账号信息和私人聊天原文。 6. 列出拟修改文件,等我确认后再执行。 ``` 审核几次真实任务以后,再把稳定规则写入 `AGENTS.md` 或制作成 Skill。目录和字段应跟着实际问题调整,不需要一开始搭建复杂系统。 ## 本地文件仍有隐私边界 文件保存在本地,不代表模型处理过程完全离线。内容是否发送到云端、怎样保存以及谁能访问,取决于产品、账号、插件和连接方式。 长期记录至少遵守下面几条边界。 - 不保存 API Key、Token、Cookie 和密码。 - 不把完整私人聊天或客户资料写进通用记忆。 - 共享项目的事实以项目文档和版本记录为准。 - 删除、发布、费用和账号操作保留人工确认。 - 使用旧记录前重新检查当前文件和外部状态。 ## 怎样验证这套系统 选一个刚完成且有 Git 记录的任务,让 Codex只生成收尾计划。逐条检查事实是否有证据、状态是否提前升级、文件归属是否合理,并确认没有敏感信息。 写入后重新打开一个不带聊天上下文的任务,让它先读 `INDEX.md` 和相关项目记录,再检查 Git 与真实文件。如果它能指出旧记录与现场的差异,并从正确位置继续,说明收尾记录已经发挥作用。 ## 参考资料 - [Andrej Karpathy 的 LLM Wiki 原始构想](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) - [Codex AGENTS.md](https://developers.openai.com/codex/guides/agents-md) - [Codex Memories](https://developers.openai.com/codex/memories) - [Obsidian Create a vault](https://help.obsidian.md/vault) ### Codex 视频工作流,4 个第三方 Skill 的用途、依赖与限制 URL: https://codexguide.io/guides/codex-video-workflow-skills 这篇文章写给希望用 Codex 处理视频生成、素材粗剪、字幕动画和发布前转码的读者。 # Codex 视频工作流,4 个第三方 Skill 的用途、依赖与限制 > 难度 | 进阶 > > 类型 | 第三方项目观察 > > 核验日期 | 2026-08-18 ## 这篇文章适合谁 这篇文章写给希望用 Codex 处理视频生成、素材粗剪、字幕动画和发布前转码的读者。 文中检查了四个公开仓库的用途、安装方式、依赖、许可证和 Codex 兼容情况。它们可以覆盖一条视频生产链的不同阶段,但 CodexGuide 没有在同一台机器上完成付费生成、粗剪、Remotion 包装和最终导出的端到端实测。因此本文是选型与测试计划,不是“安装后即可自动出片”的保证。 ## 四个项目分别解决什么问题  | 阶段 | 项目 | 主要用途 | 重要限制 | |---|---|---|---| | 生成 | HiAPI Seedance 2.0 Skill | 文生视频、图生视频并轮询下载结果 | 需要 `HIAPI_API_KEY`,生成会消耗付费额度 | | 粗剪 | `browser-use/video-use` | 转写素材、找切点、去停顿、加字幕并渲染 | 需要 Python、FFmpeg 和 ElevenLabs API Key | | 包装 | `remotion-dev/skills` | 指导 Agent 使用 Remotion 编写字幕、动画和模板 | 仍需 Node.js、Remotion 项目和人工预览 | | 转码 | Digital Samba Video Toolkit | 提供 FFmpeg 等视频处理知识和完整工具包 | 项目以 Claude Code 为主,Codex 迁移脚本标为实验性 | 这四个仓库不是一套由同一团队维护的产品。安装目录、依赖和授权方式各不相同,不能把它们视为一个已经集成好的流水线。 ## 用 HiAPI Skill 生成视频 HiAPI Seedance 2.0 Skill 的仓库明确列出 Codex 安装方式,并提供文本生成、首帧图生视频、首尾帧和多模态参考模式。结果可下载时会保存到本地 `outputs/`。  安装命令来自项目 README。 ```bash npx -y github:HiAPIAI/hiapi-seedance-2-0-video-skill --codex ``` 执行前需要设置 `HIAPI_API_KEY`。不要把 Key 写进提示词、截图或仓库文件。第一次生成先使用短时长和较低分辨率,确认画面方向后再增加成本。 ```text 使用 $hiapi-seedance-2-0-video 生成一段 5 秒竖版测试视频。 先检查配置和费用参数,展示最终请求,不要在我确认前提交付费任务。 生成完成后保留原始返回信息,并把可下载结果保存到 outputs/。 ``` 截至核验日期,该仓库使用 MIT License,公开元数据显示最近推送时间为 2026-07-21。仓库规模和社区采用量仍较小,使用前应自行检查脚本和 API 请求地址。 ## 用 video-use 整理多段素材 `video-use` 面向带有口播、访谈或录屏的多段素材。项目 README 说明,它会结合转写、时间戳和 FFmpeg 完成切点处理、字幕与渲染。  它的安装比普通说明型 Skill 更重。项目要求先阅读 `install.md`,手动路径包含 `uv sync`、FFmpeg,以及用于转写的 ElevenLabs API Key。在线素材下载还可能需要 `yt-dlp`。 ```text 检查 https://github.com/browser-use/video-use 的 install.md 和 SKILL.md。 先列出要安装的系统依赖、Python 包、Skill 目录和环境变量。 不要写入全局目录,也不要索取 API Key,等我确认安装计划后再继续。 ``` 截至核验日期,该仓库使用 MIT License,最近推送时间为 2026-07-01。README 明确提到 Codex,但安装脚本会修改本地环境并接触原始视频,建议先在隔离目录和无敏感信息的短素材上测试。 ## 用 Remotion Skills 编写包装层 Remotion 使用 React 生成视频。`remotion-dev/skills` 为 Codex 等 Agent 提供 Remotion 的结构、动画、字幕、多媒体和渲染规则。 ```bash npx skills add remotion-dev/skills ``` Skill 负责让 Agent 遵循 Remotion 的用法,并不会代替审美判断或浏览器预览。每次修改后仍要在 Remotion Studio 中检查文字是否溢出、动画时间是否正确、音画是否同步,再执行最终渲染。 截至核验日期,仓库最近推送时间为 2026-08-14。GitHub 元数据没有识别到仓库级许可证,准备把内容用于商业项目或再分发前,应进一步确认各文件和 Remotion 本身的许可条款。 ## FFmpeg 阶段要分清 Skill 与工具包 原稿引用的 Digital Samba Video Toolkit 是一个完整的 Claude Code 视频生产项目,其中包含 FFmpeg、Remotion、配音、图像和云端 GPU 工具。它不是只包装几条 FFmpeg 命令的小型 Codex Skill。 项目提供 `scripts/migrate_to_codex.py`,会把 `.claude/skills/` 和工作流迁入 Codex,并根据 `CLAUDE.md` 生成 `AGENTS.md` 管理区块。项目文档把这条路径标为实验性。 ```bash python3 scripts/migrate_to_codex.py --force ``` 这条命令会写入用户 Skill 目录和当前仓库的 `AGENTS.md`,不能在不了解差异时直接运行。只需要压缩、缩放或转格式时,直接审查并执行 FFmpeg 命令通常更简单。 ```text 读取 final.mp4 的编码、分辨率、帧率、音轨和文件大小。 先给出 FFmpeg 命令及输出文件名,不覆盖原文件。 目标是 1080×1920,保持比例,不拉伸画面。等我确认后再执行。 ``` 截至核验日期,该工具包使用 MIT License,最近推送时间为 2026-08-13。项目能力很多,依赖和权限范围也更大,适合愿意维护完整视频工程的读者。 ## 推荐的最小测试顺序 不要第一次就把四个项目全部装进常用环境。按当前痛点选择一段开始。 1. 只需要生成镜头时,先审查 HiAPI Skill,使用低成本参数生成一条测试视频。 2. 已有多段口播时,在隔离目录安装 `video-use`,先处理一段可丢弃素材。 3. 需要统一字幕和动画时,新建最小 Remotion 项目并在 Studio 中预览。 4. 发布前只做格式处理时,先用 `ffprobe` 读取源文件,再确认 FFmpeg 命令。 每一步都保留原文件,并把生成、剪辑、包装和导出放在不同目录。这样出现问题时,可以知道失败发生在哪个阶段,也能单独替换其中一个工具。 ## 参考资料 - [HiAPI Seedance 2.0 Video Skill](https://github.com/HiAPIAI/hiapi-seedance-2-0-video-skill) - [browser-use/video-use](https://github.com/browser-use/video-use) - [Remotion Agent Skills](https://github.com/remotion-dev/skills) - [Digital Samba Video Toolkit](https://github.com/digitalsamba/claude-code-video-toolkit) - [Digital Samba 的 Codex 迁移说明](https://github.com/digitalsamba/claude-code-video-toolkit/blob/main/docs/codex.md) - [Codex Skills 官方文档](https://developers.openai.com/codex/skills) ### Codex 是如何工作的 URL: https://codexguide.io/guides/codex-shi-ru-he-gong-zuo 第一次看 Codex 工作,很容易把它理解成“会写代码的 ChatGPT”。你输入一句话,等一会儿,它就改好了几个文件。 # Codex 是如何工作的 > 难度 基础 > > 类型 核心概念 ## 这篇文章适合谁 第一次看 Codex 工作,很容易把它理解成“会写代码的 ChatGPT”。你输入一句话,等一会儿,它就改好了几个文件。 关键区别藏在中间那段看不见的工作里。Codex 会进入项目,查看代码,调用工具,修改文件,再用测试或构建结果检查改动。理解这套过程以后,你会更清楚任务该怎样描述,也知道什么时候该让它停下来解释,什么时候可以直接执行。 ## 先记住这个工作模型 可以先把 Codex 理解成一个能使用开发工具的编码 Agent。模型负责判断下一步该做什么,工具负责把动作落到真实环境中。 一次典型任务大致经过下面几个阶段。 ```mermaid flowchart LR A[用户提出任务] --> B[读取项目与分析代码] B --> C[确定方案与执行顺序] C --> D[修改文件] D --> E[运行测试或检查] E --> F{结果符合要求吗} F -- 否 --> B F -- 是 --> G[汇报改动与验证结果] ``` 这条流程经常要走好几遍。测试失败后,Codex 可能重新读代码,修正判断,再次修改和验证。小任务有时不会单独展示计划,分析和安排依然存在,只是没有专门写成清单。 ## 第一步 用户提出任务 Agent 首先要把自然语言转成可执行目标。 例如,你可以这样写。 > 修复登录页面中“发送验证码”按钮点击后没有反应的问题,不要改变登录接口,并补一个相关测试。 这句话交代了故障现象、修改边界和完成标准。Codex 接下来会先寻找登录页面、按钮事件、验证码请求和现有测试,然后再决定改哪里。  如果任务只有“登录坏了,修一下”,Codex 也可以开始调查,但需要探索的范围更大。它可能先检查浏览器报错、最近改动或相关接口。目标越具体,Agent 越容易把时间花在真正的问题上。 ## 第二步 分析代码和项目上下文 Codex 并不会在开始任务时把整个仓库一次性塞进模型。真实项目可能有几万甚至几十万个文件,这样做既慢,也会带来大量无关信息。 它通常先查看项目结构和规则,再通过文件名、代码搜索、依赖关系逐步缩小范围。对于刚才的例子,它可能会做下面几件事。 - 读取项目根目录的 `AGENTS.md`、`package.json` 和测试配置; - 搜索“发送验证码”对应的组件与点击处理函数; - 查看请求函数、状态管理和相邻测试的写法; - 用 `git status` 判断工作区是否已有未提交改动。 这个过程叫收集上下文。Codex 需要拿到足够的证据,弄清问题发生在哪里、项目采用什么写法、修改会影响谁,以及该用什么命令验证。单纯增加阅读量没有多少帮助。 Codex 还会受到项目指令和权限限制。比如 `AGENTS.md` 要求使用 `pnpm`、禁止修改生成文件,Agent 应把这些规则带入后续判断。当前工作区里如果已经有你的改动,它也不应随意覆盖。 ## 第三步 制定计划 计划用来安排动作,一份好看的待办清单本身没有价值。 修复一个拼写错误时,Codex 可能读完文件就直接修改并检查差异。涉及多个模块、数据库迁移或行为不明确时,它通常需要先确定修改范围和验证顺序。一个合理的内部思路可能是下面这样。 1. 复现或定位按钮事件没有触发的原因。 2. 用项目现有模式修复组件,不改接口契约。 3. 增加一个能覆盖故障场景的测试。 4. 运行聚焦测试,再检查代码差异。 执行中发现原判断不成立,计划也会变化。例如按钮事件已经触发,问题出在表单校验提前返回,那么 Codex 应回到代码证据重新判断,及时放弃第一版计划中的错误路径。 这也是 Agent 和一次性代码生成的重要区别。它能根据工具返回的新信息继续决策。 ## 第四步 修改文件 找到原因后,Codex 会通过文件编辑工具把改动写入项目。它可能修改组件、测试或配置,也可能新建文件。模型无法隔空“碰到”硬盘,它发起的是一次次明确的工具调用,例如读取某个路径、应用补丁或运行格式化命令。 好的修改一般有下面几个特点。 - 范围和任务一致,不顺手重构无关代码; - 遵循仓库已有的命名、组件和测试模式; - 保留用户现有改动,不把脏工作区恢复成自己的理想状态。 你仍然应该查看最终差异。Codex 能操作文件,不代表每次判断都正确。尤其是公共接口、依赖升级、权限配置和数据迁移,改动本身比聊天中的解释更值得审查。 ## 第五步 验证结果 “文件已经改了”还不能算完成。Codex 需要拿出可以观察的证据。 根据项目类型,可以选择下面这些验证方式。 - 运行与改动相关的单元测试或集成测试; - 执行类型检查、lint 或构建; - 启动应用,实际点击页面并查看浏览器状态; - 检查 `git diff`,确认没有混入无关文件; - 对照任务要求,检查接口和行为是否保持不变。 如果测试失败,Agent 要先分辨失败是否由本次修改引起。相关失败通常需要继续修复;无关的既有失败应该如实报告,不能为了让输出变绿而随便改测试。 验证也有成本。改一个文案没有必要默认跑十几分钟的全量测试,修改共享认证逻辑却不能只看格式检查。合适的做法是先运行最贴近改动的检查,再根据影响范围决定是否扩大验证。 ## Codex Agent 实际上在反复做什么 从内部行为看,一次任务可以简化成一个循环。Codex 先观察当前状态,选择下一步动作,读取动作结果,再决定后续动作。 ```text 目标 ↓ 观察 任务、项目规则、文件内容、命令输出 ↓ 判断 现在缺什么信息,下一步风险是什么 ↓ 行动 搜索、读取、编辑、运行命令或请求确认 ↓ 新结果回到“观察”,直到达到完成标准 ```  因此,同一句提示词在两个项目中可能产生不同步骤。React 项目和 Django 项目的目录、命令、测试方式不同;即使技术栈一样,仓库规则和当前代码状态也会改变 Agent 的选择。 ## Codex 和普通 ChatGPT 对话有什么区别 这里说的“普通 ChatGPT 对话”,指主要通过文字问答获得解释、建议或代码片段的使用方式。ChatGPT 的产品能力还在扩展,某些模式同样可以处理文件或使用工具。因此,更值得关注的是两者面对的工作对象和最终交付方式。 | 对比项 | 普通 ChatGPT 对话 | Codex 任务 | |---|---|---| | 主要对象 | 你在对话中提供的文字、图片或附件 | 选定的项目、代码、配置和开发工具 | | 常见输出 | 解释、建议、示例代码 | 项目中的实际改动和验证记录 | | 获取上下文 | 主要依赖你主动提供 | 可以按需搜索和读取工作区 | | 执行方式 | 通常由你把答案复制到项目并运行 | Agent 可以编辑文件、运行命令,再根据结果继续处理 | | 完成判断 | 回答是否解决了问题 | 代码是否改对、检查是否通过、边界是否遵守 |  举个简单例子。你问普通对话“React 按钮为什么点了没反应”,它可以列出常见原因并给出示例。你把一个项目交给 Codex 并要求修复,它可以找到真实组件,检查事件绑定,修改对应文件,运行项目里的测试,最后告诉你改了什么。 普通对话更适合学习概念、比较方案或讨论尚未落地的想法。目标已经位于某个项目中,并且希望得到可审查的文件改动时,Codex 更合适。 ## 为什么 Codex 能操作项目文件 因为你把一个运行环境和一组受控工具交给了它。模型本身并不知道你的电脑里有什么。 在本地模式中,Codex 运行在你的电脑上,并以你选择的项目目录作为工作区。官方文档说明,Codex CLI 可以直接针对本地仓库检查文件、编辑代码,并调用机器上已经安装的工具。在桌面 App 中,本地任务也直接作用于当前项目目录;Worktree 模式仍在本机运行,只是把改动隔离到 Git worktree。Cloud 模式则在配置好的远程环境中执行。 文件访问仍有边界,常见控制来自下面几层。 1. **工作区范围** 任务关联到哪个目录,Codex 就从哪里获取项目上下文。 2. **工具能力** 读取、搜索、编辑和命令执行由具体工具完成,模型只能通过这些入口行动。 3. **沙箱** 沙箱决定哪些路径可读、哪些路径可写,以及网络是否可用。 4. **审批策略** 超出当前权限的操作可以要求用户确认,也可以被配置为直接拒绝。 5. **项目规则** `AGENTS.md` 等指令告诉 Codex 在技术权限允许的范围内,哪些操作仍然不该做。  权限会直接改变 Codex 能做的事。只读模式下,Codex 可以分析代码但不能落盘修改;工作区写入模式通常允许编辑项目文件,访问工作区外路径或网络时可能需要批准。给出更高权限会减少中途确认,也会扩大错误操作的影响范围。 所以,第一次把项目交给 Codex 时,不要用“它能不能操作电脑”来笼统判断风险。应该具体看任务在哪个环境运行、当前允许访问哪些路径,以及什么动作需要审批。 ## 一次任务怎样才算真正完成 可以用下面四个问题检查 Codex 的交付。 - 它是否找到了真实原因,有没有停留在表面现象? - 修改是否只覆盖任务需要的范围? - 是否运行了与风险相称的验证,并报告实际结果? - 有没有说明未完成、无法验证或需要人工决定的部分? Codex 的最后一条消息只是摘要。真正的结果在文件差异、测试输出和运行行为里。把这些证据看明白,比研究它用了多少步更重要。 ## 参考资料 - [OpenAI 官方文档 Codex CLI](https://learn.chatgpt.com/docs/codex/cli) - [OpenAI 官方文档 Codex environments](https://learn.chatgpt.com/docs/environments/modes) - [OpenAI 官方文档 Agent approvals & security](https://learn.chatgpt.com/docs/agent-approvals-security) - [OpenAI 官方文档 Sandbox](https://learn.chatgpt.com/docs/sandboxing) ### Codex 安全与风险边界:什么时候该收紧权限 URL: https://codexguide.io/guides/codex-an-quan-yu-feng-xian-bian-jie 如果你还不熟悉 Codex 接收任务和执行命令的方式,可以先读《别再把 Codex 当成“会写代码的 ChatGPT”:一文看懂它到底怎么工作》;已经上手的读者直接进入下面的止损步骤即可。 # 安全与风险边界:到底该不该放手让它碰你的代码 > 测试环境:Windows 11 24H2(build 26100);Codex CLI 0.147.0;2026-08-20 核验。 如果你还不熟悉 Codex 接收任务和执行命令的方式,可以先读《别再把 Codex 当成“会写代码的 ChatGPT”:一文看懂它到底怎么工作》;已经上手的读者直接进入下面的止损步骤即可。 ## 先处理警告,不要和它赌一把 Codex 出现“提示词可能违反使用政策”的错误,或者突然连续弹出异常提醒时,第一反应不该是换一种说法继续轰炸。也不要在警告窗口里急着补充身份证明、公司资料、密钥或完整项目压缩包。警告的成因可能是提示内容、上下文、网络或服务端误判,单凭一条错误信息无法判断是哪一种。 我建议按这个顺序止损: 1. 停止当前会话,不要反复提交同一段被拦截的提示。 2. 如果会话已经混入敏感信息,先记录发生时间和错误原文,再按产品提供的删除入口清理会话;不要为了“证明自己没问题”继续上传更多资料。 3. 检查网络是否稳定,确认没有频繁切换出口、异常代理或共享 IP 的情况。网络检查只能排除一类因素,不能保证解除限制。 4. 重启 Codex,先开一个全新的、内容最小的测试会话。若新会话仍然出现同样的政策错误,停下来走官方支持渠道,不要继续试探边界。 这套处理方法是降低损失的建议,不是“删掉对话就一定解封”的承诺。账号状态、内容审核和风控决定权仍在服务提供方。 ## 两种警告不要混为一谈 “Invalid prompt: your prompt was flagged as potentially violating our usage policy”属于内容或风控层面的拒绝。它不等于 Codex 已经执行了危险命令,也不等于账号一定会被封。新开会话有时能绕开异常上下文,但如果提示本身确实触及限制内容,换会话不能替代修改任务目标。 另一类是执行层警告:Codex 要访问工作区外的文件、联网、删除目录,或者需要提高权限。它关注的是“这一步能不能执行”,不是“这段文字是否违规”。这时要看命令、目标路径和影响范围,不能只看一个醒目的“允许”按钮。  图一 OpenAI 官方文档将沙箱描述为技术边界,将审批描述为越界前的停顿机制。来源:OpenAI Developers,2026-08-21 核验。 ### 新开会话能解决什么 新开会话的价值,是把可能已经污染的上下文清掉。长对话里如果出现了大量网页内容、代码片段、系统错误或被拦截的提示,后续每次重试都可能继续带上同一段上下文。换到一个空会话,用最小化的非敏感任务验证服务是否恢复,这是合理的排查动作。 但新会话不是“绕过审核”的技巧。下面三种情况不能靠换会话解决: - 原始任务本身就涉及受限制的内容。 - 任务需要上传密钥、身份证明、客户数据等敏感资料。 - 账号或网络出口已经触发服务端风控。 遇到这些情况,继续换标题、拆分提示、反复提交,只会让排查变得更混乱。保留错误原文和时间,停止试探,转到官方支持流程更稳妥。 ## 误删文件的复盘:问题不在临时目录四个字 2026 年 7 月,OpenAI 工程负责人 Thibault Sottiaux 公开回应了少量 GPT-5.6 在 Codex 中意外删除文件的报告。公开转述中反复出现的条件是:运行在 Full access、没有沙箱边界,并且关闭了 Auto-review。最严重的路径错误与 `$HOME` 有关:模型本想把它改成临时工作目录,却在清理时把真正的 home 目录当成了删除目标。 Codex 创建临时文件夹本身并不能解释这起事故。真正需要追问的是两个失败点:删除前没有再次核对目标;临时路径的变量复用让一个本应短命的目录指向了真实用户目录。只要执行器允许无审批地运行破坏性命令,模型一次路径判断错误就有机会变成真实损失。 OpenAI 后续公开提到的改进方向包括:在删除前核验目标、创建新的临时目录、避免复用系统环境变量、加强对高风险删除命令的审核、让 Full access 更难被误开,并用事故回放和专项评测继续检查。公开表述只到“在回放评测中显著减少”,没有承诺以后绝不发生,转述这起事故时这个限定不能省。  图二 OpenAI Windows Sandbox 文档明确提醒,Full access 可能导致非预期的破坏性操作和数据损失。来源:OpenAI Developers,2026-08-21 核验。 这次修复值得关注的地方,是它没有只给模型补一句“请小心删除”。防线被拆到了几个位置:模型收到的开发者指令、临时目录的创建方式、执行器对删除命令的识别、权限模式的默认入口、Auto-review 的拦截,以及针对真实失败轨迹的回放评测和训练。任何一层都可能失效,所以不能把“模型记住了规则”当成唯一保险。 换句话说,安全边界不只属于模型。执行器要能拒绝越界命令,权限系统要让高风险模式显眼,审核器要能发现破坏性动作,评测要持续复现事故,用户还要保留最后的人工检查点。对 Coding Agent 来说,这些部分合在一起才叫 harness。  图三 Agent harness 将模型指令、执行器、沙箱、审批、自动审核和事故回放等环节串成多层防线。AI 生成/教学示意,不代表 Codex 当前界面。 这次复盘说的是官方层面的事故,日常使用中类似的放手代价我也遇到过,记录在《别一上来就让 Codex 改项目,我已经替你踩过坑了》里,可以对照着看。 ## 现在该怎么保护自己的文件 把下面几件事当成最低限度的工作习惯: - 重要项目先提交或打包一个可恢复的版本,再让 Agent 改动。 - 真实账号、生产数据库、客户资料和密钥不要放进一次性试验目录。 - 任务只需要改项目文件时,就把工作范围留在项目目录;遇到权限错误,先缩小任务或补充明确的只读路径,不要直接把权限拉满。 - 任何包含递归删除、覆盖、迁移、发布或外发数据的命令,都要人工看完整命令和完整目标路径。 - 测试通过后仍然查看 `git diff --stat`、`git diff` 和实际运行过的测试。通过只说明某些检查通过,不说明未覆盖的行为没有变化。 ### 按四个问题判断风险  图四 判断任务前,先看资产、回退能力、验证方式和影响范围。AI 生成/教学示意,不代表 Codex 当前界面。 1. 它会接触什么:示例代码、个人文件、凭据、客户数据,还是生产资源? 2. 能不能回退:有 Git、备份、事务或可丢弃环境吗? 3. 怎么验证:有聚焦测试、构建、预览和人工复核吗? 4. 出错会怎样:影响一个分支,还是会删除、发送、发布或改变云资源? 四个问题里只要有一个答不上来,就把任务降级为只读分析,或先建立隔离环境。风险要结合资产、回退能力和影响范围来判断,红黄绿标签只能做提示。 ## 适合交给 Codex 的任务,也要有边界 代码搜索、只读解释、隔离分支里的小范围修改,以及能运行聚焦测试的修复,通常适合交给 Codex。前提是目标文件明确、变更可回退、结果有人检查。 认证、支付、加密、权限、依赖升级、公共接口、大范围重构、生产 DDL、批量删除和对外发布,都应该保留人工检查点。检查时要看实际差异、命令和目标资源,不能只扫一眼摘要。 如果你还没让 Codex 改过真实项目,可以先从《第一次让 Codex 改项目,我建议你先从这个小任务开始》里的低风险任务练手,再回到上面的边界清单逐条对照。 ## Mac 内存问题要单独看 不少用户还会遇到另一种烦恼:Codex Desktop 在 Mac 上运行一段时间后占用越来越高。长会话历史、图片附件、本地工具和子进程都可能增加客户端负担,但这和“误删文件”不是同一个安全事件,也不能用一次安全更新推断内存问题已经解决或必然存在。 目前能确认的是,Codex 会在本地保存会话历史,并提供关闭历史持久化、限制历史文件大小等设置。至于某个版本到底是哪一部分占内存,需要在目标机器上看 Activity Monitor,记录会话长度、附件数量、子进程和重启前后的内存曲线。没有这组数据时,最好写成“待实测的稳定性问题”,不要写成官方已经承认的缺陷。 实用的处理方式很朴素:长任务拆成短会话,减少不必要的图片和整仓库上下文,完成一个阶段就关闭闲置线程;如果内存持续上涨,先保存工作结果、退出并重启客户端,再决定是否提交反馈。这样做解决的是资源占用,不是权限风险,两个问题要分开处理。 ## 和下一篇的分工 这篇只回答“为什么要收紧、出现警告怎么止损、哪些动作不能直接放手”。下一篇《权限、沙箱与审批:什么时候放行,什么时候收紧》再回答“权限、沙箱和审批分别控制什么、审批窗口该看哪些字段、如何在可丢弃仓库里验证读写和联网边界”,具体菜单、CLI 参数和 `config.toml` 的用法也留到那一篇。 ## 资料来源 - 沙箱、权限、审批和 Windows 隔离机制的描述,以 OpenAI 官方文档为准。 - 文件删除案例的 `$HOME` 细节来自负责人公开表述的媒体转述;原始帖子未能直接核验,以上转述只用于还原事件脉络。 - Mac 客户端内存占用属于用户社区反馈和个人观察,不能与文件删除安全事件混为同一项官方修复;具体内存曲线需要在你自己的版本上实测。 下一篇《权限、沙箱与审批:什么时候放行,什么时候收紧》会把权限、沙箱和审批拆成可操作的配置与检查步骤。 ### Codex 权限、沙箱与审批的放行与收紧 URL: https://codexguide.io/guides/codex-quan-xian-sha-xiang-yu-shen-pi Codex 有时只能读,不能写;有时访问网络或工作区外的文件会停下来询问。遇到这些提示,先分清权限、沙箱和审批,再决定是否放行。 # Codex 权限、沙箱与审批的放行与收紧 > 测试环境:Windows 11 24H2(构建 26100);Codex Desktop 26.814.5517.0;Codex CLI 0.147.0;2026-08-21 核验。 Codex 有时只能读,不能写;有时访问网络或工作区外的文件会停下来询问。遇到这些提示,先分清权限、沙箱和审批,再决定是否放行。 本文只讨论日常任务中的判断方法。涉及具体配置文件和团队级策略时,应按所在环境的安全要求单独处理。 如果你还不熟悉 Codex 接收任务和执行命令的方式,可以先阅读“Codex 是如何工作的”;已经遇到审批提示的读者可以直接进入正文。 ## 正文 ### 1. 先把三个概念分开 遇到权限提示时,先别急着点允许。权限、沙箱和审批解决的是三件不同的事。 权限说明当前任务可以做什么。沙箱划出文件、命令和网络能够触达的范围。审批则处理越过当前范围的动作,决定这一步要不要交给人确认。  *图一 OpenAI 官方文档对 Sandbox mode 与 Approval policy 的并列说明。它用于核对概念边界,不代表某个具体桌面端会显示完全相同的文案。* 可以把它们放进同一个任务里理解。读取项目文件通常只需要访问当前工作区。修改文件会改变磁盘内容,安装依赖还可能访问网络。任务越过当前边界时,审批才会出现。 在 Windows 上使用 VS Code 的读者,经常会遇到另一个选择:是否把项目放进 WSL,再用 VS Code 的 Remote - WSL 连接。WSL 能提供更接近 Linux 的工具链,某些 Node、Python 或 shell 项目也会因此少碰到路径和脚本兼容问题。不过,WSL 不是权限开关,更不是把 Windows 文件和网络自动变成安全区。连接到 WSL 后,仍然要确认 Codex 当前看到的工作区、挂载目录和网络边界;不要因为“现在是在 Linux 终端里”就直接给出全盘访问或长期免审批。  *图二 油画风格教学示意图。外层表示网络与工作区边界,中间表示沙箱范围,右侧审批闸门表示需要人工确认的动作。该图为 AI 生成示意,不代表 Codex 当前界面。* ### 2. 常见动作分别需要什么能力 读取工作区文件和在工作区内运行检查,通常属于低风险动作。新建文件、修改代码或执行构建,会改变工作区状态,需要确认目标范围。安装依赖、调用外部服务或读取工作区之外的路径,则多了一层网络或边界风险。 判断时看动作本身,不要只看命令名字。同一个脚本,在测试仓库里运行和在生产目录里运行,风险完全不同。  *图三 OpenAI 官方 Sandbox 页面,说明沙箱如何限制代理可触达的文件、命令和网络边界。* 官方文档说明了沙箱的边界,但桌面端、CLI 和 IDE 扩展的菜单名称可能不同。本文的截图用于解释概念,具体选项仍应以当前客户端显示为准。 除了简单的档位开关,官方还在完善更细的权限档案(permission profiles,目前处于 Beta,可能继续变化)。它把命令能读写哪些文件、能访问哪些网络目标组合成一个命名策略,只给当前任务够用的访问,而不是把整台机器敞开。官方文档自己的定位也是最小权限。具体配置本文不展开,先知道有这条路即可。  *图四 OpenAI 官方 Permissions 文档:权限档案把文件读写规则和网络访问规则组合成命名策略,目前处于 Beta。档位名称和默认值可能随版本调整,以当前客户端显示为准。* ### 3. “允许命令”和“脱离沙箱”不是一回事 Windows Codex App 用户有时会发现,`rg`、只读的 `git status` 也会触发审批;反过来,某些允许规则又可能让命令在沙箱边界之外运行。这两种现象看起来矛盾,其实是在问不同的问题:前者是“这条命令现在能不能执行”,后者是“它执行时是否还受当前沙箱限制”。 所以不建议把所有看起来安全的命令都加入白名单。先看命令的完整参数、当前工作目录和实际访问路径,再确认允许规则是否同时改变了沙箱或网络边界。GitHub Issue [#26108](https://github.com/openai/codex/issues/26108) 记录了 Windows 场景下这类边界混淆,适合作为排查审批异常的背景材料。 如果你的环境支持在 `~/.codex/AGENTS.md` 中声明团队约定,可以把“低影响改动直接执行,高影响改动先审查批准”写成任务规则。例如,读取文件、运行已有的格式检查、查看 `git diff` 可以归入低影响;删除文件、改生产配置、写入真实数据、上传外部服务则归入高影响。这个文件只能表达协作约定,不能替代沙箱、操作系统权限或审批策略,实际生效范围仍以当前客户端和配置为准。 ### 4. 不同权限档位,先看它们改变了什么 Codex App 的文案会随版本变化。GitHub Issue [#29452](https://github.com/openai/codex/issues/29452) 讨论过当前界面常见的四种说法,可以先按下面的含义理解。 | 界面文案 | 更接近的含义 | 使用时要问自己 | | --- | --- | --- | | Ask for approval | 每次越界动作交给人确认 | 我能否读懂这一次的完整命令和目标? | | Approve for me | 由系统按既定规则自动处理审批 | 规则是否足够窄,是否会覆盖后续命令? | | Full access | 放开更多文件、命令或网络边界 | 这是不是一次性给了超出任务所需的范围? | | Custom (config.toml) | 使用配置文件自定义策略 | 配置是否经过 review,能否回退和审计? | 这张表是阅读 UI 的辅助,不是官方稳定的等级定义。审批弹窗通常会给出“允许一次”“以后允许以某个前缀开头的命令”“拒绝”等选择。OpenAI 的[审批弹窗示例](https://openai.com/index/unlocking-the-codex-harness/)展示了这种差异。第二个选项不会让所有命令都变得安全,它只是把一个命令前缀加入后续自动处理范围,仍要检查前缀是否过宽。  *图五 用户提供的 Codex 命令审批弹窗。它同时展示了单次允许、按命令前缀长期允许和拒绝,实际文案可能因客户端版本而不同。*  *图六 用户提供的 OpenAI 官方审批示例截图。它适合说明“允许一次”和“以后允许类似命令”的范围差异,不应被理解为 Full access。*  *图七 用户提供的 Codex 权限菜单截图。菜单中的“请求批准”“帮助我批准”和“完全访问”是当前界面文案,阅读时应把它们映射回审批、自动处理和边界范围三个问题。* ### 5. 审批窗口里应该看什么 审批出现时,按下面的顺序读一遍。 先看它准备做什么,是读取、写入、删除、联网,还是调用外部服务。再看完整目标,包括文件路径、命令参数和域名。然后问一句,这一步和当前任务有什么关系。 最后检查回退办法。目标是否在测试仓库里,是否有 Git 或备份,是否会碰到账号、密钥、客户数据或生产环境。如果只是为了完成一个小动作,却要求打开更大的权限,先停下来改写任务范围。 下面是在可丢弃测试仓库里的一次真实审批。任务是新建一个明确命名的文本文件,Codex 在写入前先列出了准备执行的动作、完整目标路径和这一步需要审批的原因,然后停下来等待批准。按上面的顺序读一遍:动作是写入,目标是测试仓库里的单个文件,和当前任务直接相关,写完还能删除。这类请求可以放心放行。  *图八 本机可丢弃测试仓库中的写入审批(Codex Desktop 实测)。画面中 Codex 先列出动作、完整路径和审批原因,再等待人工确认;目标路径只指向测试目录,不含账号或敏感信息。* ### 6. 哪些情况可以放行 可以放行的请求通常有几个共同点。动作直接服务于当前任务,目标路径或域名写得清楚,影响范围容易检查,结果也能通过 Git 或备份回退。 例如,在可丢弃测试仓库里创建一个明确命名的测试文件,审批内容包含完整路径,写入完成后还能删除或回退,这类请求比较容易判断。放行前仍要确认命令没有夹带额外的删除、上传或全盘扫描动作。 如果你还没有在真实项目里放过权,可以先照着《第一次让 Codex 改项目,我建议你先从这个小任务开始》做一次低风险练习,再回来对照上面的放行条件。 ### 7. 哪些情况应该收紧或拒绝 理由说不清楚、目标路径过于宽泛、包含批量删除或不可逆操作时,应收紧权限。生产数据库、真实客户数据、密钥和账号权限也不适合在普通任务里直接放行。 工作区已经有重要改动,却没有隔离分支、备份或回退方案时,也应先停下来。拒绝审批不是把任务丢掉。可以让 Codex 先解释方案、列出将要执行的命令,或者给出只读分析,让人确认后再决定下一步。 放手之后收不回来的具体代价,《别一上来就让 Codex 改项目,我已经替你踩过坑了》里有完整记录,可以对照着看。 还有一种风险不在单次审批里。审批连续弹出时,人容易进入机械点允许的状态,不再逐条读内容。发现自己开始不经看就点,先暂停任务。“不再询问”或“始终允许”一类的选项(名称以当前客户端为准),只留给可丢弃环境和明确重复的窄动作,不要在真实项目里图省事常开。 审批太多时,官方提供了自动审阅(Auto-review)。越过沙箱边界的审批可以交给单独的审阅代理处理。主代理仍在同一个沙箱里,受同样的审批策略以及网络、文件限制,变化的只是由谁来审。只有审批处于交互状态时它才介入。自动审阅用于减少重复确认,不会扩大权限。  *图九 OpenAI 官方 Auto-review 文档:自动审阅只改变越界请求的审阅者,沙箱边界、审批策略和网络与文件限制保持不变。* ### 8. 用最小权限完成一次真实任务 一个稳妥的顺序是从只读分析开始。先让 Codex 说明将检查哪些文件,再在确实需要修改时开放工作区内写入。安装依赖或访问外部服务时,只为这一步申请网络权限,并确认域名和命令参数。 任务结束后,把权限收回到日常需要的范围。高权限扩大的是可执行范围,不会让答案自动变得更准确。权限越大,人工检查就越不能省。 ## 最后检查这五件事 看到审批请求时,可以按这五个问题快速过一遍。 1. Codex 准备执行什么动作,是读取、写入、删除还是联网。 2. 完整目标在哪里,路径、命令参数和域名是否写清楚。 3. 这一步和当前任务有什么关系,能不能换成只读分析或更窄的权限。 4. 结果是否可回退,是否会碰到生产数据、客户信息、密钥或账号权限。 5. 任务结束后,是否可以把权限收回到日常需要的范围。 只要其中一项说不清楚,就先拒绝或暂停。让 Codex 解释方案、列出命令,再决定下一步,通常比一次性打开最大权限更容易检查。 本文没有展开具体配置文件和团队级策略。涉及生产数据、真实账号或无法回退的操作时,应先让负责人确认权限范围和回滚路径。 ### Codex 从目录到入口:找到真正需要修改的代码 URL: https://codexguide.io/guides/codex-cong-mu-lu-dao-ru-kou 拿到一个需求,最费时间的往往不是改代码,而是回答一个问题:真正需要动的文件是哪几个。范围圈大了,Codex 会在无关目录里反复翻找;范围圈错了,改完才发现入口在别处。 # 别再让 Codex 全仓库乱翻了:先找到真正需要修改的代码 > 配图采集环境:macOS 15.7.5(Build 24G624);Codex/ChatGPT App 26.721.41059;2026-08-21 核验。Codex 实操部分在 Windows PowerShell 环境完成,正文会单独说明。 ## 真正需要动的文件是哪几个 拿到一个需求,最费时间的往往不是改代码,而是回答一个问题:真正需要动的文件是哪几个。范围圈大了,Codex 会在无关目录里反复翻找;范围圈错了,改完才发现入口在别处。 这篇文章我用两种方式各走了一遍完整的入口追踪。先在本机用只读命令手动追一次,再把同样的问题交给 Codex 做一次只读调查。两次都停在应用补丁之前,重点看每一步排除了什么、留下了什么证据。  > 图一 从整个仓库出发,逐层排除无关目录,最后落在真正需要修改的文件上。 如果你还没让 Codex 改过项目,建议先看《别一上来就让 Codex 改项目,我已经替你踩过坑了》,再回来对照这里的调查步骤。 ## 先确认仓库状态和目录边界 入口追踪的第一步不是搜索关键词,而是确认自己站在哪里。我固定先跑两条只读命令: ```bash git status --short --branch rg --files ``` 第一条确认当前分支和未提交改动,避免把别人留下的现场误当成调查结论。第二条列出文件全貌,先建立“这个仓库里有什么”的边界感,再决定往哪里挖。 我用本机一个练习用的订单管理小项目做了第一次演示。需求是“修复订单列表金额偶尔显示为 NaN”,任务是确认真正需要继续编辑的最小文件集。  > 图二 本机只读调查记录:先看分支状态,再用 `rg --files` 和 `rg -n "NaN|formatAmount"` 圈出入口和最小改动范围。 这次调查锁定了四类入口:页面入口是 `src/pages/OrderList.vue`,数据入口是 `src/api/orders.js`,格式化入口是 `src/utils/format.js`,测试入口是 `tests/orders.spec.js`。最后得出的最小改动范围只有 `format.js` 里的金额格式化函数和它的测试,其他页面、路由和构建配置一律不碰。 注意这个顺序:先有目录边界,再有入口判断,最后才有改动范围。跳过前两步直接改文件,是范围失控最常见的原因。 ## 从需求里的词开始搜索 确认边界之后,搜索词不要自己造,直接从需求里取。页面名、接口名、报错文本、业务术语,这些词在代码里往往有唯一或接近唯一的命中。 为了用一个公开仓库演示,我选了 GitHub 上的 `githubtraining/hellogitworld`,假设需求是“修复 plus 计算结果的显示问题”。只读查看,不执行任何修改。  > 图三 公开示例仓库的静态入口追踪:`src/Main.groovy` 第 9~14 行依次调用 square、divide、subtract、sum,沿 `import static` 找到 `src/Sum.groovy` 的实现。 静态追踪的顺序是:先找到程序入口 `src/Main.groovy`,再沿 `import static Sum.sum` 这样的符号引用找到实现文件,最后用一条命令复核: ```bash rg -n 'println|static (int|void)|import static' src ``` 这条命令同时命中输出语句、方法定义和符号引用,一次就能把“入口在哪、实现者有谁”对上。 ## 把“暂不相关”也写下来 圈定范围时,排除项和候选文件同样重要。只写“要改什么”,下次复查时无法判断某个文件是没看过,还是看过之后排除了。  > 图四 建议先读的文件、关联验证命令和暂不相关项都留痕;结论停在应用补丁之前。 这份记录里,`src/Division.groovy` 和 `src/Square.groovy` 被明确标注为“与 plus 逻辑无关”,`build.gradle` 标注为“本次不改依赖”。关联验证用 `rg -n 'sum|plus|println' src README.txt` 和 `git status --short` 两条,确认调查前后工作区保持干净。 最终的最小候选文件只有 `src/Main.groovy` 和 `src/Sum.groovy`。范围能收得这么小,靠的不是一次精准搜索,而是每一步都把排除理由写了下来。 ## 把同一个问题交给 Codex 手动流程走完,我把一个同类需求交给 Codex 做只读调查。测试项目有 `src`、`test`、`notes` 三个顶层目录,需求写在 `notes/需求说明.md` 里:`Sum.add(2, 3)` 保持返回整数 5,`Report.render(5)` 返回字符串 `"5"`,但实际输出多了一个 `debug-sum=` 前缀。 我给 Codex 的指令是:先只读调查,不要改文件、不要装依赖、不要提交;从仓库状态、目录结构和关键词搜索开始,逐步找出真正相关的入口;每一步说明查了什么、排除了什么、下一步为什么查;证据不够就明说还缺什么,不要猜。  > 图五 Codex 的只读调查结果:仓库状态、入口定位、关键词搜索与排除、运行环境核对,全程未修改文件。 有几个细节值得单独说。 Codex 先确认仓库在 `main` 分支、工作区干净,再读 README 确认 `src/Main.groovy` 是程序入口。搜索阶段 `rg` 在当前环境启动失败,它没有卡住,改用 PowerShell 文本搜索和 `git grep` 继续,把“加法、结果、显示、`Sum.add`、`Report.render`、`debug-sum`”都搜了一遍。 搜索结论很干脆:`Sum.add` 只有一个生产调用点,在 `Main.main` 第 5 行;`src/Sum.groovy` 第 2 行的实现就是 `left + right`,和需求一致,加法逻辑被证据排除;`src/Report.groovy` 第 3 行拼接了 `"debug-sum=${value}"`,这才是显示错误的直接原因。它同时注意到测试 `test/SumTest.groovy` 第 2 行已经写明了期望行为 `Report.render(5) == "5"`。 最后它还核对了运行环境:找到了 Java,没找到 `groovy` 命令,所以没有执行测试,并明确写出“静态证据已经足够定位问题,但运行时验证仍缺失”。环境不够时不硬跑、也不假装跑过,这正是只读调查该有的边界感。 ## 最小改动文件集:让结论分三栏 调查完成后,我追问了一步:给出最小改动文件集,只列真正需要修改的文件和理由,同时列出关联测试、配置和调用方证据,按“确认需要改、只需要查看、当前没有证据不应该改”分成三栏,不执行修改,也不生成补丁。  > 图六 三栏分类后的结论:最小改动文件集只剩 `src/Report.groovy`,并附完整证据链。 分类之后,调用方 `Main.main` 归入“只需要查看”,它只是 `println Report.render(Sum.add(left, right))` 的组装者,自身没有错误证据;`Sum.groovy` 归入“不应该改”,需求要求它继续返回整数 5;`notes/需求说明.md` 是验收依据,不是实现文件。最小改动文件集最终只剩一个 `src/Report.groovy`。 底部的证据链把整条路径写了出来:`Main.main` → `Sum.add(left, right)`(计算正确)→ `Report.render(result)`(添加了错误的 `debug-sum=` 前缀)→ `println`(输出错误结果)。这样的结论不需要信任,可以直接核对。 如果你希望 Codex 每次进项目都先读这类规则,比如“先只读调查再动手”,可以把稳定的要求写进项目规则文件,具体做法见《别再重复提醒 Codex:用 AGENTS.md 让它读项目先读规则》。 ## 入口不唯一时怎么办 有些需求会命中多个入口,比如同一个接口同时被页面和定时任务调用。这时不要急着二选一,先做三件事: 1. 把每个入口的调用方列全,确认它们是同一条链路还是互相独立。 2. 看测试覆盖在哪一侧,有测试的一侧优先作为修改点。 3. 仍然无法区分时,把两个入口和各自证据交给需求方确认,不要替业务做决定。 入口追踪的终点不是“找到一个文件”,而是“找到能被证据支撑的最小文件集”。证据不够时,继续查,或者停下来问。 ## 小结 完整流程回顾一遍:先用 `git status` 和 `rg --files` 确认仓库状态和目录边界;再从需求原文取词搜索,沿符号引用追到真实入口;排除项和候选文件一起留痕;最后把结论分成“需要改、只需看、不应改”三栏,停在应用补丁之前。 这套顺序手动跑得通,交给 Codex 也跑得通。差别只在于,手动流程练的是你自己的判断,Codex 流程省的是你的时间,两者的验收标准是同一套。 第一次让 Codex 参与真实项目时,建议就从这种只读调查任务开始,具体理由可以看《第一次让 Codex 改项目,我建议你先从这个小任务开始》。 这套入口追踪流程适合在真实项目中反复练习:先调查、再收敛范围,最后才决定是否修改。 ### 给 Codex 多大上下文才够用:三组实验的结果 URL: https://codexguide.io/guides/codex-shang-xia-wen-gei-duo-shao 用 Codex 处理任务时,上下文给多少,直接决定它先做什么。给少了,它反复追问;给多了,它要在噪声里翻找目标;给到刚好,它能直接定位问题。 # 给 Codex 喂上下文,喂多少才算够?我用三组实验测出来了 > 配图采集环境:macOS 15.7.5(Build 24G624);Codex/ChatGPT App 26.721.41059;2026-08-21 核验。Codex 三组实验在 Windows 环境完成,正文会单独说明。 ## 上下文给多少,决定它先做什么 用 Codex 处理任务时,上下文给多少,直接决定它先做什么。给少了,它反复追问;给多了,它要在噪声里翻找目标;给到刚好,它能直接定位问题。 为了弄清“刚好”是多少,我用同一个任务设计了三组输入:信息不足、信息过量和最小充分上下文,分别交给 Codex 处理,对比它的调查路线、追问次数和最终判断。这篇文章是三组真实实验的记录。  > 图一 上下文不足、过量和最小充分三种输入,对应三种完全不同的任务开局。 ## 三种输入长什么样 实验任务是一个公开示例问题:修复加法结果的显示错误。三组输入的差异只在信息量,任务本身完全相同。  > 图二 三组输入的结构对照:A 组缺关键信息,B 组把仓库整个倒进去,C 组只给目标、范围、证据和验收。 A 组只说“帮我修一下页面问题”,缺目标路由、复现步骤、错误证据和验收标准,预期信号是 Codex 必须先追问,不能直接修改。B 组把整个仓库、历史日志、无关截图和过期讨论全部附上,风险是调查噪声增大,冲突信息掩盖当前目标。C 组给出明确目标、检查范围、复现证据、约束条件和验收方式。 这里先纠正一个常见误解:模型的上下文窗口上限不是推荐输入量。窗口能装下,不等于装进去有帮助。B 组那种“反正都给它”的做法,恰恰是实验里噪声最大的一组。 ## 第一组:信息不足,Codex 会怎么做 A 组输入只有一句话加一个目录线索:修复加法结果显示错误的问题,目前只知道项目目录里有一个 `src` 文件夹。我同时要求它先告诉我还缺什么,不要改文件。  > 图三 信息不足时,Codex 用 11 秒列出了还缺的关键信息,没有修改任何文件。 Codex 没有猜,而是列出五类缺失信息:哪个文件或页面出现问题、如何复现、当前显示结果与期望结果、项目的技术栈和启动/测试命令、是否有相关报错或已有测试。最后还主动提出,如果不清楚文件位置,它可以先只读检查 `src`。 这个反应是正确的开局。信息不足时,可靠的行为是追问和提议只读调查,而不是直接动手。如果你的任务描述只有一句话,看到它开始大范围修改,反而应该停下来。 ## 第二组:信息过量,噪声从哪来 B 组输入是另一个极端:项目目录、所有 README、完整 Git diff、最近 20 条提交记录、全部测试日志和所有配置文件,任务不变,让它先判断哪些信息真正相关。  > 图四 面对过量材料,Codex 先按相关性把信息分成“真正相关”和“大概率是噪声”两类。 Codex 把 `src` 中负责加法计算和结果渲染的代码、复现输入、相关测试和涉及这些代码的 Git diff 列为相关;把无关的 README、不涉及相关文件的 diff、无关提交和通用配置归为噪声。它还特别指出两点:项目目录和完整配置只能用于定位环境,不能直接说明问题原因;完整 Git diff 还要区分用户已有改动和本任务相关改动,不能整体当作修复依据。 这组实验说明,过量上下文不会直接让结果出错,但会把第一轮时间花在筛选上,而且噪声里的冲突信息(比如过期讨论里的旧结论)随时可能带偏判断。信息多不等于信息足。 ## 第三组:最小充分上下文 C 组输入只有五样东西:目标(修复加法结果显示错误)、相关文件(`src/Main.groovy`、`src/Sum.groovy`、`README.txt`)、已知证据(`Sum.groovy` 返回两个整数之和,当前输出与预期不一致)、范围(只读检查这些文件和相关测试,不改文件)、验收(指出最可能的问题、还需要确认的证据和下一步最小检查范围)。  > 图五 最小充分输入下,Codex 直接把问题定位到 `src/Report.groovy`,并列出仍需确认的证据。 这一轮 Codex 没有追问,直接给出判断:最可能的问题在 `src/Report.groovy`,不是加法计算。`Sum.add(2, 3)` 正确返回整数 5,`Report.render(5)` 当前返回 `"debug-sum=5"`,测试 `test/SumTest.groovy` 期望 `"5"`,当前断言会失败。 两个细节值得注意。一是它列出了仍需确认的证据:实际执行的是哪个测试入口、运行时是否真的观察到 `debug-sum=5`、是否有未说明的输出格式要求。定位到结论不等于跳过验证。二是它发现一个输入错误:我写的相关文件是 `README.txt`,目录里实际只有 `README.md`,它在补充说明里纠正了这一点。给对范围,它不仅能定位问题,还能反过来校正你的输入。 如果你还不确定什么样的任务适合先让 Codex 只读检查,可以对照《第一次让 Codex 改项目,我建议你先从这个小任务开始》里的任务尺度。 ## 三组结果放在一起 三轮跑完,我让 Codex 把结果整理成对照表,并明确要求:不要把模型上下文上限写成推荐输入量。  > 图六 三组输入的追问次数、调查范围、噪声和判断稳定性对照。 对照结果很直观。A 组追问 1 次,调查范围是“尚未检查代码”,判断不稳定,缺的是复现步骤、当前结果、期望结果和允许检查的目录。B 组追问 0 次,但第一轮时间花在按相关性筛选信息上,出现大量无关上下文,判断需要先排除噪声。C 组追问 0 次,调查只读覆盖相关源码、调用方、格式化逻辑和测试,基本没有噪声,最终判断稳定。 最小充分信息的核心,Codex 总结为六条:明确目标;指出相关文件或允许检查的范围;给出一组可复现输入;说明当前结果和期望结果;提供相关测试或验收条件;如需执行验证,提供运行命令或测试入口。 ## 可以直接复制的模板 实验最后产出了一个可直接复制的最小充分上下文模板。  > 图七 模板包含目标、相关范围、复现、当前结果、期望结果、已知证据、验收条件和约束八个部分。 模板原文如下,把方括号换成你的任务信息即可: ```text 目标: 修复【功能/页面】中的【具体问题】。 相关范围: 只检查【文件/目录/测试文件】。 未经确认不要修改其他文件。 复现: 使用输入【例如:2 和 3】, 执行【命令/操作】。 当前结果: 【实际输出或行为】 期望结果: 【应有输出或行为】 已知证据: 【已确认的计算结果、报错、失败断言或截图说明】 验收条件: - 【条件 1】 - 【条件 2】 约束: 先只读分析,不修改文件;先报告最可能原因、证据和最小修复范围。 ``` 实际使用时不用机械填满每一项。没有报错日志就不写,但“目标、范围、当前结果、期望结果”这四项几乎总是必须的——它们正是 A 组缺失、导致追问的那部分。 ## 分轮补充,而不是一次倒完 如果一开始给不齐最小充分上下文,也不用把整个仓库倒进去补救。更好的做法是分轮补充:第一轮给目标和范围,看 Codex 追问什么;第二轮只补它追问的内容;它不再追问、开始给出可核对的事实时,信息基本就够了。 停止继续堆叠信息的信号有三个:它的提问从“缺信息”变成“确认理解”;它给出的下一步是可执行的检查而不是继续索要材料;它开始区分事实、推断和待确认项。出现这些信号,再往上堆材料只会增加噪声。 这类“先调查、后执行”的节奏,和《别一上来就让 Codex 改项目,我已经替你踩过坑了》里讲的是同一个原则:让结论跑在修改前面。 ## 小结 三组实验的结论可以压成一句话:上下文的质量按“够不够定位问题”衡量,不按字数衡量。不足时 Codex 会追问,这是正常信号;过量时它先筛噪声,冲突信息可能带偏判断;最小充分输入是目标、范围、复现、当前结果、期望结果、证据、验收和约束这八项的按需组合。 下次给 Codex 派任务前,可以先对照模板检查一遍输入,缺的补上,多的删掉。 这套模板适合在任务开始前快速检查输入质量:缺信息时分轮补充,信息足够后就停止继续堆叠。 ### Codex 只读调查:先把项目摸清楚再改代码 URL: https://codexguide.io/guides/codex-zhi-du-diao-cha-xian-ba-xiang-mu-mo-qing-chu-zai-gai-dai-ma 面对复杂或高风险的任务,直接让 Codex 动手是最贵的做法。改错了要回滚,改多了要排查,而它本来可以先只做一件事:把项目摸清楚,把证据交给你,再由你决定改不改。 # Codex 只读调查:先把项目摸清楚再改代码 > 配图采集环境:macOS 15.7.5(Build 24G624);Codex/ChatGPT App 26.721.41059;2026-08-21 核验。Codex 实操部分在 Windows 环境完成,正文会单独说明。 ## 先摸清项目,再决定改不改 面对复杂或高风险的任务,直接让 Codex 动手是最贵的做法。改错了要回滚,改多了要排查,而它本来可以先只做一件事:把项目摸清楚,把证据交给你,再由你决定改不改。 这篇文章我把一次完整的只读调查走了两遍:先在本机用只读命令手动做一遍,再把同一个调查框架交给 Codex 执行。两遍都停在批准修改之前,并且用 Git 状态证明调查期间没有产生任何改动。  > 图一 只读调查的核心:先把事实、推断和未知项分开,再决定要不要允许修改。 如果你还没区分过“让 Codex 调查”和“让 Codex 修改”,可以先阅读“Codex 从目录到入口”,再回到本文的调查步骤。 ## 哪些任务适合先调查 不是所有任务都需要只读调查。改一行文案、加一个日志,直接做更快。值得先调查的通常是这几类: - 涉及多个目录或模块,影响范围一眼看不全。 - 仓库里有历史代码、生成代码或你不熟悉的依赖。 - 失败代价高,比如动数据库结构、构建配置或线上脚本。 - 你对需求的理解本身还没被验证,改下去可能方向就是错的。 判断标准很简单:如果“改错了再退回来”的代价比“先花几分钟调查”高,就先调查。 ## 先把边界写清楚 只读调查的第一步是把“不许做什么”写明白。我为本机演示整理的边界如下:允许执行的只有 `git status --short --branch`、`git log --oneline --max-count=5`、`rg --files`、`rg -n` 和 `find` 这类只读命令;明确不执行的包括切换分支、同步 main、stash/merge/rebase/reset、修改演示项目以外的目录,以及提交、推送这类状态变更。  > 图二 调查前先把允许执行的动作和明确不执行的动作逐条写下,结论也注明当前真实状态。 注意边界不只在命令层面,也包括不伪造进度。这次调查如实记录了演示项目的订单模块还没有测试覆盖,真实状态是“待补测试”。只读调查要把看到的内容完整写下来,包括那些说明“还没做完”的证据。 ## 调查报告要分四栏 调查最大的浪费,是产出一篇读起来很顺、但分不清哪些是事实的总结。我要求的报告格式固定分四栏:事实、推断、未知项、建议步骤。  > 图三 公开示例仓库的只读调查报告:事实都有命令依据,推断标注依据,未知项不猜,建议步骤停在批准修改之前。 这份针对公开示例仓库的报告里,事实栏的每一条都能对上证据:`src/Main.groovy` 静态导入 `Sum.sum`,最后一行调用 `sum(programmingPoints, 3)`,`src/Sum.groovy` 定义 `static int sum(int val1, val2)`,调查前后 `git status --short` 均无输出。推断栏只写“plus 显示问题的直接候选是 Main.groovy 的输出行或 Sum.groovy 的返回值”,并注明 Division、Square、Subtract 暂不相关。未知栏承认两件事:尚未执行构建或运行命令,尚未确认用户期望的最终文案。建议先让需求方确认复现输出和期望值,再安排修改。 这个顺序是有意为之的。只读调查的产出是一份能支持下一位维护者决策的报告,修改补丁要留到后续任务。 ## 把调查框架交给 Codex 手动流程验证过之后,我把同一个框架写成指令交给 Codex,调查对象是一个涉及 `src`、`test`、`notes` 多个目录的测试项目。指令里写死四条禁令:不修改任何文件,不安装依赖,不运行删除、覆盖、迁移或其他破坏性命令,不提交、不切换分支。调查顺序固定为六步:当前 Git 状态、项目目录和技术栈、需求相关入口、约束和风险、未知项、建议的下一步。输出必须分成四部分:已确认事实、基于证据的推断、仍需人工确认的未知项、可以执行但尚未执行的修改计划,每一项都附文件路径、命令结果或其他证据。  > 图四 Codex 的只读调查报告开头:Git 状态和项目结构逐条附命令与结果,耗时 1 分 2 秒。 报告的事实栏完全按证据组织。Git 状态部分写明用了 `git status --branch --short`,结果是 `## main`,`git status --porcelain=v1` 无输出,说明工作区和暂存区干净;当前提交是 `c574445`,`git remote -v` 无输出,未执行切换、提交、推送或拉取。项目结构部分列出 `README.md`、`notes/需求说明.md`、`src/Main.groovy`、`src/Sum.groovy`、`src/Report.groovy`、`test/SumTest.groovy`,并根据 `.groovy` 文件和 README 判断这是 Groovy 示例项目,同时注明没有发现 `package.json`、Gradle/Maven 配置、构建脚本或 CI 配置。 每一条事实都自带“怎么知道的”。这样的报告你可以抽查任意一行,而不是只能整体信任或整体怀疑。 如果你希望这类禁令和调查顺序不用每次重写,可以把稳定的部分沉淀成项目规则,具体写法见《别再重复提醒 Codex:用 AGENTS.md 让它读项目先读规则》。 ## 调查结束后,先证明它没动过 只读调查最容易被跳过的一步,是验收“只读”本身。报告写得再规矩,也可能有意外改动混在里面。我的做法是让 Codex 在调查结束后再次执行 `git status --short`,和调查开始前的状态并列对比:两次一致就明确说明“调查期间没有发现新增或意外修改”,不一致就逐项解释变化来源,不要自行清理。  > 图五 调查开始前和结束后的 Git 状态对照:两次均无文件变更,确认没有新增或意外修改。 这次验收的结果是两次输出一致,调查期间没有新增或意外修改。指令里特意写了“不要自行清理”。如果发现意外改动,应报告来源并保留现场,才能知道调查过程碰过什么。 这一步成本只有几十秒,但它把“我相信它没改”变成“有证据证明它没改”。高风险任务里,这个区别就是敢不敢授权下一步的区别。 ## 从调查报告到下一轮任务 只读调查最终要形成可执行的修改计划。报告第四栏“可以执行但尚未执行的修改计划”就是下一轮的输入,其中列出要改的文件、理由、关联证据和验证方式。你批准之后,Codex 进入修改流程时不需要重新调查。 交接时建议保留三样东西:报告原文、调查前后的 Git 状态对照、你批准或否决的决定。批准了,报告就是修改任务的上下文;否决了,报告是下次讨论的依据。两种情况下调查都不算浪费。 更多关于“批准后怎么把修改范围管住”的做法,可以看《第一次让 Codex 改项目,我建议你先从这个小任务开始》。 ## 小结 只读调查的完整动作是:先判断是否值得调查,再写清允许和禁止的边界,然后按现状、入口、约束、风险、未知项、建议步骤的顺序收集证据,输出时把事实、推断、未知项和未执行的修改计划分开,最后用 Git 状态对照证明调查期间没有改动。 它不能替代的部分也要说清楚:调查结论里的推断仍需人来确认,修改计划仍需人来批准。Codex 负责把项目摸清楚,决定权留在你手里。 只读调查结束后,把事实、推断、未知项和未执行的计划分别记录,下一轮任务就能直接从这份报告开始。 ### Codex 如何从报错反推影响范围 URL: https://codexguide.io/guides/codex-cong-bao-cuo-huo-xu-qiu-fan-tui-ying-xiang-fan-wei 拿到一条报错,最直接的反应是找到出错的那一行改掉。很多时候这一改确实能修好。过几天,另一个页面、另一份导出或定时任务可能暴露新的问题,原因仍然是同一个函数。 # Codex 如何从报错反推影响范围 > 测试环境:Windows 11 24H2(Build 26100);Codex Desktop 26.814.5167.0;Codex CLI 0.147.0;2026-08-19 核验。 ## 修对地方,只是第一步 拿到一条报错,最直接的反应是找到出错的那一行改掉。很多时候这一改确实能修好。过几天,另一个页面、另一份导出或定时任务可能暴露新的问题,原因仍然是同一个函数。 这篇文章只做一件事,把“改之前先算影响范围”变成固定动作。我用两个案例各走一遍流程,一个从报错出发,一个从需求出发,最后都落到同一张影响范围表上。两个案例的证据起点不同,落点一样。 如果你还没让 Codex 改过项目,可以先阅读“Codex 从目录到入口”,再回来对照这里的范围分析方法。 ## 先把现象拆成四格 影响范围分析先从现象开始。报错案例沿用本机练习用的订单管理项目,订单列表页金额偶尔显示为 NaN。动手之前,先把它拆成四格写下来: - 输入:打开订单列表页,列表中包含特定订单。 - 触发条件:订单金额字段为 null 或字符串,而不是数字。 - 实际结果:金额列显示 NaN。 - 预期结果:显示格式化后的金额,或一个明确的占位。 四格写完,“偶尔”这个词就有了具体含义。它只在特定数据形状下出现。后续应沿数据处理路径排查,先不要把注意力放在渲染层。 ## 从堆栈和日志定位直接入口 现象拆完,才轮到代码。报错类案例的证据起点是堆栈、日志和复现步骤。目标很简单,找到直接入口,也就是错误第一次产生的那一行。 本例中沿日志和复现步骤定位到 `src/utils/format.js` 的 `formatAmount`:它直接对金额字段做算术运算,输入不是数字时就产出 NaN。这就是直接入口。 报错证据具体长什么样,可以看另一组真实截图。它来自我机器上另一个 Next.js 练习项目的 hydration 报错,和订单案例无关,但证据的形态是通用的:先是浏览器给出的报错文本,再是控制台里的完整原因和组件树,最后是逐层向下的调用栈。  > 图一 报错提示条:错误类型和排查文档入口(hydration 报错示例)。  > 图二 控制台完整报错:可能原因列表和组件树。  > 图三 调用栈详情:从报错入口逐层向下。 注意“直接入口”不等于“唯一改动点”。它只是故障传播的起点,接下来要查的是这个起点往外连着什么。 ## 间接影响查五类 直接入口确定后,沿五个方向查间接影响,每查一处都留下证据: 1. 调用方:`src/pages/OrderList.vue` 调用 `formatAmount` 渲染金额列;其他页面有没有也在调它,逐个搜出来。 2. 共享模块:`format.js` 是工具模块,被共享的面越广,改动传导得越远。 3. 数据结构:`src/api/orders.js` 返回的订单金额字段类型不稳定,这才是 NaN 的数据来源。 4. 配置:没有证据表明构建配置或环境变量参与金额格式化,标记为暂不相关。 5. 缓存:本例中列表页没有金额缓存逻辑,排除。 查完把结果填进影响范围表,分三档:直接影响、间接影响、暂不相关。每一档都要带证据。“没查到”和“查到并排除”是两回事,都要写下来。 | 区域 | 档位 | 证据 | 验证方式 | | --- | --- | --- | --- | | `src/utils/format.js` 的 `formatAmount` | 直接影响 | 对非数字输入产出 NaN | 边界值单元测试 | | `src/pages/OrderList.vue` | 间接影响 | 调用 `formatAmount` 渲染金额列 | 页面人工回归 | | `src/api/orders.js` | 间接影响 | 金额字段可能返回 null 或字符串 | 接口数据抽查 | | `tests/orders.spec.js` | 间接影响 | 覆盖订单列表,未覆盖异常金额 | 补充用例 | | 路由、构建配置 | 暂不相关 | 无金额逻辑引用 | 不动 | ## 用证据给风险分级 影响范围表填完,再给每一档标风险。分级只看证据,不看感觉: - `formatAmount` 被多个页面共享,改它的行为会传导到所有调用方,定中高风险,需要回归所有调用页面。 - `OrderList.vue` 只是展示调用,定低风险。 - 路由和构建配置没有任何金额相关证据,不定级,不动。 分级的意义是管住手:没有证据的区域一行都不改,哪怕它“看起来也有点可疑”。可疑就继续查,查不到证据就保持原样。 如果你想让“先出影响范围表再动手”成为 Codex 的默认动作,可以把它写进项目规则,具体写法见《别再重复提醒 Codex:用 AGENTS.md 让它读项目先读规则》。 ## 需求案例:同一张表,换一个证据起点 再看需求案例。新需求是“订单金额按千分位显示”。没有报错,没有堆栈,证据起点换成需求里的词:金额、显示、格式化。 用这些词搜索,命中的是同一个 `format.js`。这恰恰说明影响范围表的价值:报错从堆栈往里追,需求从关键词往外扩,两条路最后落在同一张表上,表的结构不变。 差别出在间接影响。千分位是展示规则的变化,所有调用 `formatAmount` 的页面都会跟着变样;如果项目里还有导出、打印这类同样展示金额的环节,也要列入检查。而 NaN 修复只影响异常数据的展示。同一张表,填出来的行不一样。 ## 把影响范围表交给 Codex 两个案例手动走完,我把同一套方法写成指令交给 Codex。要求是只读调查,不修改文件;先确认仓库状态,再从报错文本或需求关键词出发定位直接入口;沿调用方、共享模块、数据结构、配置、缓存五个方向查间接影响;输出影响范围表,分直接、间接、暂不相关三档,每一行附文件路径和证据;最后由影响范围推导出验证清单。证据不足的行明确标注“待确认”,不猜。 有一类问题不该替业务做决定。比如“金额为 null 时显示占位符还是显示 0”,这是业务取舍,不是技术判断。影响范围表里遇到这种情况,正确的动作是停下来,把选项和各自的影响写给业务方确认,而不是挑一个顺手的实现。 影响范围表也很适合作为第一次真实改动任务的输入:范围小、证据全、验收标准明确。为什么建议从小任务开始,可以看《第一次让 Codex 改项目,我建议你先从这个小任务开始》。 ## 小结 完整流程可以这样回顾。先把现象拆成输入、触发条件、实际结果和预期结果四格;再从堆栈、日志或需求关键词出发定位直接入口;沿调用方、共享模块、数据结构、配置、缓存五个方向查间接影响;把结果分成直接影响、间接影响和暂不相关三档,每档附证据;按证据给风险分级,没证据的区域不动;最后把影响范围表转换成验证清单。 报错和需求用的是同一张表,差别只在证据起点。范围算清楚之后,改代码反而成了整个流程里最不紧张的一步。 范围表的价值在于让每个待改区域都有证据和验证动作。没有证据的区域先保持不动。 ### Codex 读懂配置、环境变量和启动脚本 URL: https://codexguide.io/guides/codex-du-dong-pei-zhi-huan-jing-bian-liang-he-qi-dong-jiao-ben 很多项目第一次启动失败,表面上是端口占用、数据库连不上,或者页面拿不到接口地址。真正的原因往往藏在几层配置之间:package.json 调了哪个脚本,脚本又传了什么参数,程序从哪些文件读取环境变量,最后哪个值覆盖了哪个值。 # Codex 读懂配置、环境变量和启动脚本 ## 配置问题,通常不是“少写一行” 很多项目第一次启动失败,表面上是端口占用、数据库连不上,或者页面拿不到接口地址。真正的原因往往藏在几层配置之间:`package.json` 调了哪个脚本,脚本又传了什么参数,程序从哪些文件读取环境变量,最后哪个值覆盖了哪个值。 如果没有先把这条链路读清楚,直接改 `.env` 可能只让本地暂时跑起来,随后又把测试环境的行为改坏。真实密钥、内部地址和个人路径也可能因此进入截图、提交记录或聊天记录。 这篇文章用一个最小 Node 示例说明一套读法。示例中的服务地址、令牌和数据库名都是虚构值,不能连接任何真实服务。你可以把相同步骤套到前端项目、后端服务、脚本仓库或 monorepo 的某个应用上。 ## 先画出“启动到配置”的路径 拿到陌生项目时,我先不打开 `.env`,而是按下面的顺序找入口: ```text package.json scripts ↓ 启动脚本(node、tsx、vite、docker compose) ↓ 入口文件(src/server.ts) ↓ 配置加载(process.env、dotenv、配置模块) ↓ 端口、数据库、第三方服务和功能开关 ``` 顺序很重要。先知道程序怎么启动,再看它在哪里加载配置,最后才判断某个变量应该写在哪里。否则只看到一个变量名,很难知道它是构建时使用、启动时使用,还是运行过程中才读取。 ## 先分清三件事:配置文件、环境变量、启动参数 这三者经常同时出现在一条启动命令里,但职责不同: | 组成 | 它回答的问题 | 常见例子 | | --- | --- | --- | | 配置文件 | 程序启动或运行时从哪里读取设置 | `config.toml`、`package.json`、`.env` | | 环境变量 | 当前进程继承到了哪些键值 | `PATH`、`NODE_ENV`、`HTTP_PROXY` | | 启动参数 | 这一次启动额外改变什么行为 | `codex --help`、`node server.js --port 4317` | 比如下面这条命令同时用了三层信息: ```powershell $env:APP_MODE = "check" npm run dev -- --port 4317 ``` `APP_MODE` 属于当前 PowerShell 进程的环境变量,`--port 4317` 是传给脚本的启动参数,而脚本仍可能继续读取 `.env` 或配置模块。排查时要分别记录,不能把“命令行里出现过”理解成“配置文件里已经保存”。 ### PATH 决定“能不能找到命令” 安装成功不等于当前 shell 能找到程序。遇到 `codex: command not found`、`rg is not installed` 或 Windows 下的 `不是内部或外部命令`,先查解析结果,不要马上重装: ```powershell Get-Command codex -ErrorAction SilentlyContinue Get-Command rg -ErrorAction SilentlyContinue where.exe codex where.exe rg ``` 在 Linux、WSL 或 tmux 中对应的是: ```bash command -v codex command -v rg printf '%s\\n' "$PATH" ``` 如果安装器刚刚修改了 shell 配置文件,已经打开的终端未必会自动读取新 PATH。重新打开一个终端,或在确认文件来源后执行 `source ~/.zshrc`、`source ~/.bashrc`。不要把别人的 shell 文件整段复制过来;先用 `type -a codex` 或 `Get-Command codex -All` 确认当前命中的是哪一个版本。 GitHub 上的 [Issue #34947](https://github.com/openai/codex/issues/34947) 提供了一个可复核的 WSL 案例:Windows 11 + WSL2 + VS Code 终端中,关闭 `appendWindowsPath` 后,WSL 里的 `powershell.exe`、`pwsh` 和 `powershell` 都无法通过命令名解析;把 Windows PowerShell 目录临时加入 PATH 后,同一调用恢复。这个案例说明的是 PATH 和 WSL 互操作边界,不代表所有 WSL 安装都必须修改全局 PATH。 一则 Reddit 讨论也报告过 `codex: command not found` 和 `rg is not installed`,但 Reddit 当前无法通过公开读取接口核验正文与截图。它只能作为排查线索,不能替代本机的 `where.exe`、`command -v` 和版本输出。 这里有一个很容易被忽略的边界:Windows 应用、WSL 里的 Codex CLI 和集成终端可能不是同一个运行环境。一则 Reddit 案例里,界面显示 Agent 在 WSL 中运行、终端也使用 WSL,但“打开 `config.toml`”却打开了 Windows 用户目录下的 `C:\Users\