# Codex /goal 怎么用：开启目标模式、管理任务与验收结果

> 在支持 Goals 的 Codex 中，输入 /goal 加上具体目标，就能让任务围绕同一结果持续推进。命令缺失时先检查版本与 features.goals；完成与否要看测试和交付物，预算耗尽只是停止条件。

- URL: https://blog.laozhang.ai/zh/posts/codex-goal
- Published: 2026-05-04
- Updated: 2026-10-07
- Author: LaoZhang AI Team (https://blog.laozhang.ai/zh/about)
- Topic: 开发工具与智能体
- Tags: OpenAI Codex, Codex CLI, Codex /goal, AI 编程助手, 开发工具

---
Codex `/goal` 的用法是：<strong>在 Codex 对话输入框中输入 `/goal <具体目标>`，把希望达到的结果和验收方式交给当前对话持续推进。</strong>随后用 `/goal` 查看目标，用 `/goal edit` 修改目标，用 `/goal pause`、`/goal resume` 和 `/goal clear` 控制后续工作。当前 [官方命令文档](https://learn.chatgpt.com/docs/developer-commands?surface=cli#set-or-view-a-task-goal-with-goal)已经说明这些操作。

如果你看不到 `/goal`，先确认客户端支持 Goals，再按官方方法开启 `features.goals`。如果你已经能设置目标，下一步最重要的是写清楚“做到什么才算完成”：修复代码后测试通过、生成的文件符合要求，或调查结论有可核对的证据。运行时间长、Token 用完、助手说“已完成”，都不能单独替代验收。

下面的设置和行为说明依据 2026 年 10 月 7 日的官方资料；示例是为说明写法设计的项目场景，不是一次实际无人值守运行记录。

## `/goal` 是什么，什么任务值得用

`/goal` 为<strong>当前对话</strong>保存一个持续目标。一次工作结束后，目标仍在；当任务还没完成且满足继续条件时，Codex 可以根据刚得到的结果选择下一步，不必等你反复发送“继续”。目标属于该对话，不是全局记忆，也不会自动变成项目的 `AGENTS.md` 规则。[官方 Goals 说明](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex)对此区分得很清楚。

这种方式适合“终点明确，路线需要边做边查”的工作。例如，一组导入测试失败，你知道最终要恢复正确的导入行为，但还不知道问题出在解析、字段转换还是后续处理。Codex 需要先复现，再修复，再检查相关测试，可能不止一轮。

| 你的请求 | 更合适的起点 | 原因 |
| --- | --- | --- |
| 解释一段代码、改一个按钮文案 | 普通对话 | 一次明确回答或修改就能交付 |
| 想改造模块，但还没确定应保留哪些行为 | 先讨论或规划 | 先确定结果，避免把模糊需求带入长任务 |
| 修好一组失败测试，并保持现有数据格式 | `/goal` | 可以用测试持续检查，下一步取决于失败原因 |
| 调查间歇性故障，交付复现条件与证据 | `/goal` | 即使最后不能修复，也能事先定义合格的调查结果 |
| “把整个项目都优化一下” | 先缩小任务 | 没有明确终点，难以判断何时停止 |

目标不需要列出每一步。你可以让 Codex 自己判断下一处该查什么，但不能省略成功标准。否则它可能做了很多改动，你却无法确认这些改动是否解决了原问题。

## 没有 `/goal` 命令时，先检查版本和功能开关

官方说明 Goals 从 <strong>Codex 0.128.0</strong> 开始提供。这个数字是功能引入版本，不是当前最新版，也不能单凭版本号证明桌面应用、IDE 扩展和 CLI 的实际入口完全一致。[版本前提与安装说明](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex#quickstart-using-goals)提供了以下检查方式。

### 1. 确认你检查的是正在使用的客户端

CLI 用户在系统终端中检查版本：

```bash
codex --version
```

低于 0.128.0 时，先更新原先使用的安装方式。通过 npm 安装的 CLI，官方示例是：

```bash
npm install -g @openai/codex@latest
codex --version
```

通过 Homebrew cask 安装的，则使用对应方式：

```bash
brew update
brew upgrade --cask codex
codex --version
```

选与你的原安装方式一致的一组即可。若你实际使用桌面应用或 IDE 扩展，终端中另一个 CLI 的版本不能证明那个客户端已经更新；还要检查该客户端的版本和命令列表。

### 2. 开启 `features.goals`

当前官方 [Follow a goal](https://learn.chatgpt.com/use-cases/follow-goals#introduction)明确给出了命令不显示时的处理方法：在 Codex 的 `config.toml` 中启用 Goals。

```toml
[features]
goals = true
```

已有 `[features]` 时，把 `goals = true` 放进现有表中，不要再重复创建同名表。CLI 也提供了对应的启用命令，在<strong>系统终端</strong>中输入：

```bash
codex features enable goals
```

这两种方式用于开启同一个功能，不必两种都做。这里不需要为了 Goals 另加 `multi_agent = true`，也不要把配置写进 `config.yaml` 或 `settings.toml`。开启后回到你正在用的 Codex 客户端，重新检查斜杠命令列表；仍不显示时，再核对当前会话是否读到了该配置。

### 3. 区分命令入口和系统终端

`codex features enable goals` 是终端命令；`/goal 修复商品导入错误` 则输入在<strong>Codex 的对话输入框</strong>中。不要在 shell 中直接运行 `/goal ...`，也不要拼成 `codex /goal ...`。

官方命令页当前也列出了桌面和 IDE 的 `/goal` 入口，但文档列出功能，不代表每个账户、安装包和版本都已在你的界面中可用。启用开关后仍没有入口时，保留客户端名称、版本、是否能看到其他斜杠命令，以及 Goals 配置；用这些信息继续定位，别直接把问题归结为提示词写得不好。

![Codex 版本与命令入口检查的流程示意](https://blog.laozhang.ai/posts/zh/codex-goal/img/entry-check.webp)

## 设置、查看、编辑、暂停、恢复和清除

支持 Goals 的客户端中，使用以下命令管理<strong>当前对话</strong>的目标。[官方命令说明](https://learn.chatgpt.com/docs/developer-commands?surface=cli#set-or-view-a-task-goal-with-goal)给出的操作包括：

| 要做的事 | 在 Codex 对话中输入 | 接下来确认什么 |
| --- | --- | --- |
| 设置目标 | `/goal <目标内容>` | 当前目标记录是否包含你要完成的结果 |
| 查看目标 | `/goal` | 目标内容和当前状态是否仍符合本轮任务 |
| 修改目标 | `/goal edit` | 修改后的验收条件是否准确，再查看目标确认 |
| 暂停目标 | `/goal pause` | 目标进入暂停状态，等待你决定后续工作 |
| 恢复目标 | `/goal resume` | 恢复的是正确的目标，原有约束仍适用 |
| 移除目标 | `/goal clear` | 当前目标被移除，后续不再围绕它自动继续 |

目标内容必须非空，长度最多 <strong>4,000 个字符</strong>。详细需求太长时，可以放在项目中已有的需求文件里，让目标指向准确路径，并在短目标中保留核心结果与验收条件。这样既能控制目标长度，也方便检查细节是否发生变化。

第一次使用时，设置一个范围明确的小目标，再用 `/goal` 读回记录，比直接丢入整个项目的待办清单更容易检查。任务中途改变时，用 `/goal edit` 修订目标；不要只在普通消息里宣布一个新终点，却一直保留与之冲突的旧目标。

暂停与清除只控制目标的后续推进。它们<strong>不会撤销已经修改的文件</strong>，也不能追回已经发出的请求。需要保留当前工作、回退代码或处理外部操作时，要分别检查对应结果，不能把 `/goal clear` 当作撤销按钮。

## 一个能验收的目标：修复商品 CSV 导入

假设你的商品管理项目把货号 `00127` 导入成了 `127`，部分带逗号的商品名也被拆错了列。与其写“优化导入功能”，不如把目标落到实际行为和现有测试上。

下面假设项目已有 `npm test -- <测试文件>` 的运行方式；路径和测试脚本都只是<strong>示例前提</strong>。使用前替换成你项目里真实存在的文件和命令：

```text
/goal 修复商品目录 CSV 导入，保留货号前导零，并正确读取带逗号或引号的商品名。
先阅读 src/catalog/import-csv.ts、tests/catalog/import-csv.test.ts 和 tests/fixtures/catalog/。
只修改导入实现、相关测试和测试样本，保持现有导入结果的字段名与返回类型。
补充回归测试，覆盖货号 00127、带逗号的商品名、字段内双引号，以及带 BOM 的 UTF-8 文件。
每次修改后运行 npm test -- tests/catalog/import-csv.test.ts，再运行项目原有的相关测试。
只有这些用例和原有相关测试均通过才算完成。交付改动文件、实际测试命令和结果、尚未覆盖的情况。
如果问题需要改变重复货号的处理规则，先说明冲突并等待产品决定；不要自行改变该规则。
```

这个目标让 Codex 有足够空间调查原因，同时把终点固定下来。它可以先看解析库配置，也可以先追踪字段转换；但不能为了让测试通过，把货号字段改成数字，或者改变重复货号的业务规则。

可以把验收项进一步写成下面这样的输入输出对照，放进目标引用的需求文件中：

| 输入情形 | 应满足的结果 | 能证明什么 |
| --- | --- | --- |
| 货号字段为 `00127` | 导入后仍是字符串 `00127` | 前导零被保留 |
| 商品名字段为 `"杯子,蓝色"` | 得到一个完整的商品名字段 | 引号内的逗号没有被当成分隔符 |
| 商品名字段为 `"12"" 圆盘"` | 字段值包含一个实际的双引号 | CSV 转义引号被正确解析 |
| 文件以 UTF-8 BOM 开头 | 首列表头正确识别，不夹带 BOM | 编码标记没有污染表头 |

这些是<strong>拟定的测试标准</strong>，不是已经通过的测试报告。最终仍要看项目中的测试是否实际执行、输出是否符合预期。只补一个“货号不为空”的断言，证明不了前导零是否保留；只测试普通商品名，也覆盖不了带逗号的字段。

如果你还不知道该改哪些文件，可以先让 Codex 检查失败用例和调用链，形成候选范围，再确认目标。目标里的路径应该帮助定位，不应迫使它无视已发现的真正原因；需要扩大范围时，先说明为什么原范围不足。

## Codex 为什么会继续，什么时候会停

按 [官方 Goals 机制说明](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex#what-changes-when-a-goal-is-active)，自动继续需要目标处于活动状态、预算允许，而且当前对话已经空闲。另一个回合还在运行、你有新消息等待处理，或对话还有未结束的工作时，不会简单地再启动一轮。

因此，`/goal` 不是一个固定周期的无限循环。官方还说明：仅做计划不会触发自动继续；中断会暂停目标；某次继续没有调用工具时，系统会抑制下一次自动继续，避免空转。这些行为说明了为什么“还没做完”不必然等于“马上又跑一轮”。

![Codex 长任务从推进、检查到停止的流程示意](https://blog.laozhang.ai/posts/zh/codex-goal/img/task-lifecycle.webp)

对长任务，重点看停止的<strong>原因</strong>，而不是只看它是否停止：

| 停止原因 | 你应如何理解 | 下一动作 |
| --- | --- | --- |
| 目标已完成 | 应已有满足验收条件的结果 | 对照测试、文件或最终报告验收 |
| 你暂停或中断了目标 | 目标尚未必完成 | 查看当前进度，决定是否恢复 |
| 达到预算限制 | 本轮可用预算结束 | 核对已完成部分和剩余工作，再决定后续安排 |
| 缺少必要输入或遇到无法继续的阻碍 | 当前条件不足以达到目标 | 补充所需信息，或调整目标范围 |
| 目标被清除 | 持续目标记录已移除 | 如需新的任务，重新确定目标 |

例如，上面的 CSV 用例全部通过，但原有相关测试出现新的失败，目标仍未满足。反过来，已经查到问题原因却还没修复，也只能算调查取得进展。让 Codex 报告“哪些验收项有证据、哪些还没满足”，比只询问完成百分比更有用。

## 预算到了不等于完成，也不等于美元花费上限

Goal 的预算限制是继续工作的边界。官方要求预算达到限制后停止实质工作，说明进度、阻碍和下一步；<strong>不能因为预算用完就把目标标为成功</strong>。[预算行为说明](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex#how-goals-are-designed-in-codex)明确区分了这两件事。

还要区分三种看起来相似的要求：

- <strong>目标指令：</strong>“同类失败尝试三次就停下来说明原因”，告诉 Codex 怎么安排工作。
- <strong>客户端支持的目标预算：</strong>用于限制目标继续，并记录相关用量。
- <strong>实际账单或套餐额度：</strong>由使用的计费账户、模型和用量规则决定。

写进目标的停止要求，并不会自动生成一个强制计费开关。当前这里引用的用户命令文档也没有提供 `/goal budget` 参数；不要根据 API 字段猜一个 CLI 命令。

如果担心长任务支出，先区分 ChatGPT 套餐用量与 API 按量计费，再设置适合自己的检查点。需要按模型和请求量估算费用时，参见 [Codex CLI 长任务的每日 API 成本估算](https://blog.laozhang.ai/zh/posts/codex-cli-token-cost-estimate)。Goal 的 Token 计数不能直接换算成确定的美元金额或订阅剩余任务数。

### 开发者接入：目标 API 和聊天命令的区别

自建 Codex 客户端时，官方 [app-server 的目标管理接口](https://learn.chatgpt.com/docs/app-server#manage-a-thread-goal)提供 `thread/goal/set`、`thread/goal/get` 和 `thread/goal/clear`，管理与 TUI `/goal` 对应的持久目标。

其中 `tokenBudget` 是接口中的 Token 预算字段，`tokensUsed` 和 `timeUsedSeconds` 是用量记录。换成<strong>新目标</strong>会替换原目标并重置计数；使用当前尚未结束的目标内容，或省略 `objective` 来更新状态、预算时，会保留用量历史。接入方要先分清“开始另一件事”和“调整同一件事”，否则显示出来的进度可能失去原来的累计口径。

这些是开发者接口，不是需要粘贴到终端的斜杠命令。普通用户按前面的功能开关和对话命令使用 Goals，不需要先启动 app-server。

## 已有命令，但设置或读取目标失败怎么办

“找不到 `/goal`”和“命令存在但设置失败”需要分开处理。前者先检查版本、入口和 `features.goals`；后者不能只凭一句失败提示就断定是功能开关问题。

可以先整理下面几项信息：

1. <strong>客户端与版本：</strong>错误发生在 CLI、桌面应用、IDE，还是自建接入中？
2. <strong>失败动作：</strong>是新建目标、编辑现有目标，还是用 `/goal` 读取？保留准确错误文字。
3. <strong>目标内容：</strong>是否非空、是否超过 4,000 个字符？这是官方明确要求，可先排除。
4. <strong>当前对话状态：</strong>已有目标吗？查看和编辑是否发生在同一个对话中？
5. <strong>相关日志：</strong>保留时间与涉及目标操作的片段，分享前去掉凭证、私人路径和私有目标内容。

能查看目标、但编辑失败时，先保留原目标及错误，不要急着清除；清除可能让你丢掉继续定位所需的状态。只在某个客户端失败时，也不要把另一个客户端成功读取当成问题已解决。以上是用于缩小排查范围的检查，不是对所有错误根因的统一诊断。

## 常见问题

### Codex goal 模式怎么开启？

在支持 Goals 的版本中，命令不显示时，按官方方法在 `config.toml` 的 `[features]` 中加入 `goals = true`，或在终端运行 `codex features enable goals`。然后回到当前客户端检查 `/goal` 入口。版本、客户端及配置读取仍需要对应核对，开启开关不保证所有界面故障都会消失。依据：[官方开启方法](https://learn.chatgpt.com/use-cases/follow-goals#introduction)。

### `/goal edit` 可以修改正在做的目标吗？

当前官方命令文档提供 `/goal edit` 用于修订目标。修改后再用 `/goal` 确认记录与新的要求一致。如果只是补充一个约束，说明它如何影响已有结果；如果任务方向已经改变，重新明确验收标准。依据：[目标命令说明](https://learn.chatgpt.com/docs/developer-commands?surface=cli#set-or-view-a-task-goal-with-goal)。

### `/goal` 和计划模式有什么区别？

计划用于确定怎么做；Goal 把要达到的结果保存在当前对话中，支持围绕它继续工作。问题还不清楚时先规划，目标和验收方式明确后再设置 Goal。官方说明仅做计划不会触发目标自动继续。依据：[Goals 的继续机制](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex#how-goals-are-designed-in-codex)。

### 可以让 Codex 一直运行到第二天吗？

Goals 能用于需要多轮推进的长任务，但不能承诺固定运行一整晚。暂停、中断、预算限制、缺少输入等都可能让工作停止；本地电脑关机也不能凭 Goal 推断任务会在云端接着跑。先定义能检查的结果、可用资源和停止条件，再按实际状态决定是否继续。依据：[官方生命周期说明](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex#what-changes-when-a-goal-is-active)。

### 清除目标会回退代码吗？

不会。`/goal clear` 用于移除当前目标，代码和其他已发生的操作要分别检查。想恢复到修改前的状态，需要查看实际差异并使用项目的版本管理流程；不要把“没有目标了”理解成“工作没有发生”。依据：[目标管理命令](https://learn.chatgpt.com/docs/developer-commands?surface=cli#set-or-view-a-task-goal-with-goal)。

## 参考来源

本文引用的外部页面，按正文出现顺序排列。最后更新于 2026-10-07。

- [官方命令文档](https://learn.chatgpt.com/docs/developer-commands?surface=cli) (learn.chatgpt.com)
- [官方 Goals 说明](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex) (developers.openai.com)
- [Follow a goal](https://learn.chatgpt.com/use-cases/follow-goals) (learn.chatgpt.com)
- [app-server 的目标管理接口](https://learn.chatgpt.com/docs/app-server) (learn.chatgpt.com)
