Skip to main content

本页目标

本页只讲 Codex 在 VS Code 及兼容编辑器中的实际工作流。完成后,你应能独立完成下面这条闭环:
  1. 安装并确认官方扩展。
  2. 登录账号并打开正确的项目目录。
  3. 把当前文件、选区和相关文件准确交给 Codex。
  4. 在 Ask 和 Edit 模式之间选择合适的授权方式。
  5. 阅读、审批或拒绝文件修改的 diff。
  6. 在编辑器面板和集成终端之间切换。
  7. 遇到扩展不显示、登录失败、上下文不准或命令失败时,按步骤定位。
  8. 在不泄露密钥、客户数据或内部代码的前提下完成验收。
界面名称、图标位置、可用模型和功能开关会随扩展版本、编辑器分支及账号权限变化。以下步骤中的菜单文字以你本机显示为准;当文字不一致时,先打开命令面板或扩展详情页确认当前版本,不要根据旧截图猜测。

先建立正确的模型

IDE 扩展是 Codex 在编辑器中的工作入口。它和 CLI 使用同一套代理能力、项目规则和大部分配置思路,但它额外知道编辑器当前打开的文件、光标位置和选中文本。桌面 App 与 Cloud 则是另外的入口,不是本页的重点。 Codex 的工作方式可以概括为“想、做、看”:
  • 想:读取项目文件、理解请求、列出计划。
  • 做:修改文件、运行命令或调用项目工具。
  • 看:检查命令输出、测试结果和当前 diff,必要时继续修复。
IDE 面板并不会替你完成工程判断。你仍然要确认工作区、授权范围、要执行的命令和最终差异。模型给出的总结不是验收证据,编辑器中的 diff、终端退出码和测试输出才是证据。

扩展、CLI 和编辑器终端的分工

扩展与 CLI 可以在同一个项目里交替使用。切换前先确认它们位于同一个项目根目录,并查看 git status --short,避免把两个会话的改动混在一起。

开始前检查

准备一个安全的工作区

第一次练习使用新建的演示目录或测试分支。不要直接在生产目录、包含客户数据的目录或正在发布的工作区里测试自动编辑。 在项目根目录打开终端,确认路径和工作区状态:
如果已有未提交修改,记录它们属于谁、哪些文件已经被改过。不要为了让页面“干净”而删除他人的修改。实际任务开始前,准备以下信息:
  • 项目根目录的绝对路径。
  • 当前分支或提交号。
  • 项目的启动、测试、格式化和构建命令。
  • 本次允许修改的文件和明确禁止触碰的目录。
  • 成功时可观察到的结果。
可在提示中明确写出:“不要提交、不要推送、不要删除文件,不修改目标范围外的内容。”这类边界不是替代权限控制,但能减少代理的猜测。

确认编辑器和 CLI

在终端检查编辑器版本和 Codex CLI 是否可用:
如果使用 Cursor、Windsurf 或 VS Code Insiders,把 code 替换为对应的命令;如果命令不存在,直接从图形界面打开项目即可。CLI 不是安装 IDE 扩展的硬性前提,但集成终端协同需要它已经在 PATH 中。

安装官方扩展

通过扩展市场安装

  1. 打开 VS Code、VS Code Insiders 或兼容编辑器。
  2. 打开扩展视图。Windows/Linux 通常使用 Ctrl+Shift+X,macOS 通常使用 Cmd+Shift+X。
  3. 搜索 Codex 或 ChatGPT。
  4. 核对发布者为 OpenAI,并核对扩展标识为 openai.chatgpt(若详情页显示的标识与此不同,以官方发布页和本机详情为准)。
  5. 点击安装,等待安装和激活完成。
  6. 首次安装后按提示重新加载窗口或重启编辑器。
预期界面行为:扩展详情页显示已安装,活动栏或侧边栏出现 Codex/ChatGPT 入口。VS Code 的入口可能在右侧,兼容编辑器可能出现在左侧、右侧或活动栏的更多菜单中。

通过命令行安装

如果编辑器命令已加入 PATH,可以运行:
Cursor 等编辑器将 code 换成其命令行名称。预期输出会包含安装开始和成功完成的信息。若命令返回“无法连接市场”或下载超时,先检查代理、防火墙和编辑器的网络设置,不要从不明网站下载 .vsix。

安装后核对清单

安装完成后,在扩展详情页核对:
  • 发布者是 OpenAI。
  • 状态是已启用,而不是“已禁用”或“在远程中禁用”。
  • 扩展没有被工作区的受限模式阻止。
  • 编辑器版本满足扩展详情页列出的最低版本。
  • 你打开的是桌面版编辑器,而不是无法运行扩展的纯文本预览窗口。
如果活动栏看不到入口,先执行“Developer: Reload Window”或重启编辑器,再检查活动栏的溢出菜单。入口被收起不等于扩展没有安装。

登录和会话

第一次登录

  1. 打开 Codex 面板。
  2. 选择登录方式。常见方式是使用 ChatGPT/OpenAI 账号在浏览器完成授权;某些环境也可能提供 API Key 选项。
  3. 若浏览器没有自动跳回编辑器,复制授权页面给出的回调提示,或回到编辑器查看登录通知。
  4. 登录完成后回到 Codex 面板,确认账号状态已经变为已登录。
预期界面行为:面板可以显示对话输入区、当前模型或模式选择器,登录按钮不再持续提示。不要把 API Key 直接写入项目文件、settings.json、终端脚本或截图。

登录失败时的处理顺序

按以下顺序缩小范围:
  1. 确认系统时间正确,浏览器能打开 OpenAI 登录页面。
  2. 在编辑器账户菜单中退出再登录,避免授权到了另一个账号。
  3. 检查公司代理、防火墙、VPN 或 DNS 是否阻断授权回调。
  4. 检查编辑器是否处于远程窗口,判断扩展运行在本机还是远程主机。
  5. 更新扩展和编辑器到兼容版本,再重新加载窗口。
  6. 打开扩展的日志或“输出”面板,记录错误码和时间。
不要把完整日志公开粘贴到 Issue 或群聊。日志可能包含工作区路径、组织信息、请求标识甚至文件片段;分享前先脱敏。

账号和项目边界

登录账号决定服务权限和配额,不等于自动获得本机所有文件的权限。文件能否读取、能否修改、命令是否需要确认,还受工作区、沙箱、审批模式和编辑器信任状态影响。 如果编辑器打开了一个包含多个仓库的父目录,Codex 可能把整个父目录当作上下文范围。敏感项目应单独打开仓库根目录,而不是打开用户主目录或包含多个项目的上级目录。

打开正确的项目

从文件夹打开

使用“File: Open Folder”打开仓库根目录。不要只打开一份孤立文件,因为这样可能缺少依赖清单、测试配置、项目规则和版本控制信息。 也可以在终端运行:
Windows PowerShell 示例:
预期界面行为:资源管理器显示项目根目录,源代码管理视图显示当前仓库和分支,终端的新会话默认位于该目录。

通过工作区文件打开

.code-workspace 可以包含多个文件夹。使用多根工作区时,在提示中明确要操作哪一个根目录,例如“只修改 frontend 根目录中的文件”。没有明确范围时,先让 Codex 列出它识别到的项目根和候选文件。

打开后先做一次只读探索

在 Codex 面板先选择 Ask 或只读权限,发送:
预期:Codex 读取少量相关文件并给出结构化说明,不产生文件 diff,也不执行未授权的写入命令。若它把别的目录当作项目,立即停止并重新打开正确文件夹。

当前文件、选区和文件引用

上下文越准确,提示越短,结果越容易审查。但“自动上下文”不是无限读取,也不代表你可以省略目标、约束和验收标准。

当前文件上下文

打开目标文件并保持编辑器焦点在文件中,然后在面板中提问:
预期:回答围绕当前文件展开,并引用实际符号或行附近内容。若回答涉及不相关目录,改用明确的文件引用和范围。

选区上下文

  1. 在编辑器中选中目标函数、模板片段或报错附近的几行。
  2. 确认选区没有遗漏函数签名、条件分支和相关注释。
  3. 在面板中询问选区的行为或问题。
示例:
预期:回答明确对应选区;不应要求你再次描述“哪一段”。如果你切换了文件,重新选择目标范围,避免旧上下文继续影响新问题。

使用 @ 引用文件

在提示框输入 @,从候选列表选择文件或工作区资源。不同编辑器对文件引用的显示形式可能不同,但原则相同:点名资料,不让代理猜路径。
引用整个大文件可能增加上下文负担。优先引用接口、测试和实现中真正相关的部分。需要多个文件时,说明每个文件的作用,例如“第一个是类型定义,第二个是实现”。

图片、截图和二进制文件

遇到 UI 错位或报错截图,使用扩展支持的附件方式添加图片。拖放时若编辑器拦截普通拖放,可按当前版本提示使用复制粘贴或带修饰键拖放。发送前检查截图中没有密码、Token、客户姓名、内部域名和浏览器标签页。

上下文失真时的信号

出现以下现象时,不要继续批准修改:
  • Codex 提到不存在的文件或旧分支内容。
  • 回答混入另一个项目的类名、端口或依赖。
  • 你切换文件后,它仍然围绕上一段选区回答。
  • 它声称“已验证”,但没有列出命令和输出。
处理方法是新建对话,重新打开目标文件并显式引用路径,然后让它先复述目标、范围和验收标准。

Ask 与 Edit 模式

不同扩展版本可能把模式称为 Ask、Chat、Edit、Agent 或类似名称。判断模式时看它是否允许写文件和运行命令,不要只依赖颜色或图标。

Ask 模式:先问、先读、先出方案

Ask 适合:
  • 了解陌生项目。
  • 解释当前文件或选区。
  • 审查代码和列出风险。
  • 设计跨文件改动方案。
  • 还没有决定是否要修改时。
练习提示:
预期:面板给出计划和待确认事项,资源管理器中没有新文件或修改标记,源代码管理视图没有新增 diff。若 Ask 模式仍提议执行命令,检查该命令是否为只读命令;仍不确定时拒绝并要求先说明原因。

Edit 模式:在明确边界后实施

Edit 适合目标、范围和验证都已明确的局部任务。提示应包含四件套:
  • 目标:改完要得到什么结果。
  • 范围:允许改哪些文件、函数或选区。
  • 约束:不能引入什么、不能改变什么行为。
  • 验证:要运行什么测试、lint 或构建命令。
示例:

先计划再编辑的节奏

复杂任务分两轮:
  1. 在 Ask 模式请求探索和计划。
  2. 检查计划中的文件、接口和验证命令。
  3. 切到 Edit 模式,只放行一个小步骤。
  4. 查看 diff 和测试结果。
  5. 再决定是否继续下一步。
跨模块重构、认证、支付、数据库迁移和权限逻辑不应一次性授权全部修改。每个小步骤都应有可观察的结果和可回滚点。

阅读和审批 diff

为什么必须看 diff

Codex 的总结只能说明它认为自己做了什么。diff 才能显示:
  • 实际修改了哪些文件。
  • 是否改到了目标范围之外。
  • 是否删除了注释、配置或错误处理。
  • 是否产生格式化噪声或换行符大面积变化。
  • 是否把凭据、调试输出或个人路径写入文件。

审批一个文件修改

当面板展示待应用修改时,按这个顺序检查:
  1. 文件路径是否属于当前项目和本次范围。
  2. diff 的上下文是否对应你刚才指定的函数或选区。
  3. 新代码是否符合项目既有风格和接口约定。
  4. 是否改变了错误处理、权限检查或数据校验。
  5. 是否新增依赖、脚本、网络请求或配置文件。
  6. 测试是否覆盖了正常、边界和失败路径。
  7. 变更是否足够小,能在一次审查中看完。
确认后点击 Apply、Accept 或当前版本对应的应用按钮。发现问题则选择 Reject、Discard 或取消,不要为了“先试试看”批准无法解释的改动。

应用后再次核对

应用 diff 后,在集成终端运行:
再运行项目已有的最小验证命令。例如:
预期:变更文件与目标一致,空白检查通过,测试退出码为 0。测试失败时保留完整输出,回到同一个对话要求“只修复这个失败,不扩大文件范围”。

不要混淆编辑器保存和审批

编辑器可能自动保存文件,也可能在应用 diff 前先写入临时内容。无论界面如何显示,都要以源代码管理视图和 git diff 为准。应用修改后如果看不到 diff,检查文件是否未保存、是否被 .gitignore 忽略,或是否实际写入了另一个工作区。

终端与 CLI 协同

在同一个工作区切换

打开集成终端(Windows/Linux 常见为 Ctrl+` ,macOS 常见为 Cmd+` ),先确认:
然后可以直接运行项目命令,或启动 CLI:
预期:CLI 的当前目录与编辑器打开的项目根一致。若不一致,先 cd 到正确目录,不要在主目录启动代理。

IDE 负责上下文,CLI 负责脚本

推荐的协同方式是:
  1. 在 IDE 选中代码,用 Ask 模式理解问题。
  2. 在 Edit 模式应用小范围修改。
  3. 在终端运行完整测试、构建或类型检查。
  4. 用 git diff 审查结果。
  5. 对批量、SSH 或重复任务切换到 CLI,但保持同样的范围和审批纪律。
CLI 会话和 IDE 会话可能同时修改同一文件。不要并行批准两个会话的编辑;每次切换前保存、查看状态并确认没有冲突。

让代理执行终端命令时的检查

以下动作需要特别谨慎:安装依赖、联网、删除或移动文件、修改环境变量、访问数据库、调用部署接口、提交和推送。批准前先问清:
  • 命令的完整文本是什么。
  • 当前工作目录是什么。
  • 会读取或写入哪些路径。
  • 是否联网,目标主机是什么。
  • 失败时如何回滚。
对未知脚本先打开 package.json、Makefile、任务配置或项目文档查看定义。不要只因为命令名字包含 test、check 或 fix 就认为它无副作用。

一次完整练习

下面的练习验证安装、登录、上下文、Ask/Edit、diff 和终端协同。请在临时目录或测试分支进行。

第一步:创建练习项目

创建目录并在编辑器中打开。文件内容可以手动建立,避免依赖系统 shell 的换行差异。
greet.py 内容:
预期:资源管理器显示 greet.py,编辑器可以正常语法着色,终端位于 ide-demo。

第二步:用 Ask 模式分析

选中 greet 函数,发送:
预期:出现文字分析,没有文件 diff。若出现待批准的写操作,拒绝并检查当前模式是否确实是 Ask。

第三步:用 Edit 模式修改

切换到 Edit/Agent 模式,发送:
预期:待应用的 diff 只涉及 greet.py 中的函数。应看到类似以下变化:
逐行阅读后再应用。若它同时改了 print、空白或其他文件,拒绝这次修改,重新强调范围。

第四步:在终端验证

应用后运行:
预期:终端输出 Hello, world,空白检查没有错误,统计结果只显示预期文件。若系统中命令名是 python3,使用项目实际约定的解释器。

第五步:回到 Ask 做复查

新建或切回 Ask 对话,发送:
预期:得到审查结论而没有新增 diff。最后用编辑器源代码管理视图和终端输出互相核对。

常见故障和修复

扩展搜不到或装错

现象:搜索结果很多,找不到官方入口。 处理:搜索 ChatGPT,核对发布者 OpenAI 和详情页标识;确认编辑器版本和网络;不要安装仅凭名称相似的第三方扩展。命令行安装时使用 openai.chatgpt,并检查命令输出。

已安装但入口不见

现象:扩展详情页显示已安装,活动栏没有入口。 处理:重新加载窗口;检查活动栏的更多菜单和右侧面板;确认扩展已启用;检查当前窗口是不是远程窗口或受限模式;在“扩展”视图查看错误提示。必要时关闭其他会改变活动栏布局的扩展,再重启编辑器。

面板空白、卡在加载中

处理顺序:
  1. 重新加载窗口。
  2. 检查登录状态。
  3. 查看“View: Output”中的 Codex/扩展日志。
  4. 检查网络、代理和系统时间。
  5. 更新扩展和编辑器。
  6. 在最小测试项目中重现,判断是项目配置问题还是扩展问题。
记录版本、操作系统、是否远程开发、发生时间和脱敏后的错误信息。不要反复删除配置目录,除非已备份并确认其中没有需要保留的本地设置。

登录反复失效

确认浏览器登录的是预期账号,清理无关的旧授权会话后重新登录。企业网络可能拦截浏览器回调或服务域名;让网络管理员确认允许的域名和代理方式。不要把临时令牌复制到聊天、项目配置或脚本中。

Codex 读不到当前文件

确认文件已经保存,编辑器焦点在目标文件,选区仍然存在,并且文件位于当前工作区。新建对话后用 @ 显式引用文件,再让 Codex 复述路径。若文件被 .gitignore 忽略或属于未信任目录,先检查编辑器是否允许扩展访问。

Codex 改了错误的文件

立即拒绝或撤销待应用 diff。不要继续在错误上下文上追加提示。重新打开正确的仓库根目录,明确写出绝对或工作区相对路径、函数名、允许修改的文件和禁止修改的目录。先 Ask 让它列出计划,确认后再 Edit。

命令被拒绝或无法执行

先区分三种原因:沙箱阻止、审批未批准、系统本身找不到命令。查看面板中的完整命令和原因,再在终端手动检查:
Windows PowerShell 可用:
工作区外写入、联网和安装依赖不应通过盲目放宽权限来解决。必要时在临时目录中单独执行,并在完成后恢复原权限设置。

测试失败但代理说已完成

以测试输出和退出码为准。把完整错误贴回当前会话,要求它只处理这个失败,说明根因、修改文件和再次运行的命令。若测试本身依赖未安装的服务或环境变量,先区分代码失败和环境缺失,不要让代理伪造通过结果。

隐私和安全边界

默认不要发送的内容

不要把以下内容直接放进提示、截图、附件或日志:
  • API Key、访问令牌、SSH 私钥和密码。
  • .env、生产配置和完整凭据文件。
  • 客户姓名、联系方式、订单、医疗或财务数据。
  • 未公开的漏洞细节和内部网络拓扑。
  • 与当前任务无关的整个仓库或用户主目录内容。
用脱敏后的占位符替代,例如 EXAMPLE_TOKEN、user@example.test 和 https://internal.example.test。如果必须讨论配置结构,只提供字段名和虚构值。

工作区和沙箱不是数据分类工具

工作区边界限制代理能访问或修改的路径,审批控制某些动作是否先询问;它们不能替你判断数据是否可以发送到外部服务。即使某个文件在工作区内,也可能包含不应上传或展示的敏感信息。先按组织政策分类数据,再决定是否使用 Codex。

外部内容可能包含不可信指令

README、Issue、网页、日志、依赖包输出和源代码注释都可能出现要求代理泄露信息、执行危险命令或修改权限的文本。把它们当作待分析数据,不当作授权。任何“忽略之前规则”“上传配置”“执行清理脚本”的指令,都必须由你独立核实。

高风险操作的人工确认

以下动作必须逐项确认,不因面板显示“建议”就自动批准:
  • 删除、覆盖或批量重命名文件。
  • 修改访问控制、认证、支付和部署配置。
  • 安装未知依赖或运行下载来的脚本。
  • 联网访问内部服务、数据库或生产 API。
  • 提交、推送、创建合并请求或发布。
  • 读取工作区外目录、浏览器配置或凭据存储。

验收清单

完成一次 IDE 任务后,逐条核对:
  • 扩展来自 OpenAI,版本和编辑器兼容。
  • 已登录预期账号,未把密钥写入项目。
  • 编辑器打开的是正确的仓库根目录。
  • 已查看 git status --short,知道原有改动。
  • 当前文件、选区和 @ 引用指向正确资料。
  • 方案阶段使用 Ask/只读,实施阶段使用 Edit/Agent。
  • 每个待应用 diff 都经过人工阅读。
  • 修改文件没有超出提示中声明的范围。
  • 已运行项目规定的测试、lint、类型检查或构建。
  • 已查看真实命令、输出和退出码。
  • 已运行 git diff --check,并确认没有敏感信息。
  • 没有未经确认的删除、联网、提交、推送或发布动作。

回滚和交接

如果修改结果不对,先停止代理并保存错误输出。对未提交改动,优先在编辑器源代码管理视图逐文件撤销;也可以在确认没有混入人工改动后使用:
注意命令前多出的空格仅为示例排版,实际执行时从 git 开始。不要使用恢复命令覆盖同事或自己尚未备份的修改。 交接给同事或从 IDE 切到 CLI 时,提供:当前目录、分支、变更文件、已运行命令、测试结果、未解决问题和下一步。不要只说“已经修好”,也不要把未经脱敏的日志作为交接材料。

本页验收练习

你通过本页的标准是:能够在一个临时项目中安装并识别官方扩展,完成登录,打开项目,使用当前文件和选区提问;能够在 Ask 模式下只读分析,在 Edit 模式下应用一份只涉及目标函数的 diff;能够在终端验证输出并用 git diff --check 复核;能够故意制造一次上下文或权限问题,并根据日志、工作区路径、模式和命令输出定位原因;最后能说清哪些内容不应发送给 Codex,以及如何撤销未提交改动。 下一步可以回到 CLI 页面,用同一个项目运行只读审查或测试命令,比较 IDE 的上下文能力与终端的自动化能力。无论入口如何切换,都保持“明确目标、限定范围、人工审 diff、运行验证、保留回滚点”的节奏。 参考资料:参考/codex/09-ide.md、参考/codex/13-prompting.md、参考/codex/02-core-concepts.md。