Codex CLI 的 /goal:让 AI 记住你要做什么
一个问题
用过 AI 编程的人大概都经历过这个场景:你让 AI 改一个功能,改了十分钟还没改完,你关掉终端去开会。回来之后重新打开,AI 已经不记得刚才在做什么了。你得重新说一遍需求,重新推送给它上下文,浪费十分钟进入状态。
这不是 AI 的错——每次对话都是新的开始。AI 没有长期记忆,你跟它说的每一段话都只在这段对话里有效。
如果能让 AI 记住一个目标,每次回来都自动继续做呢?
什么是 /goal
Codex CLI(OpenAI 的命令行编程工具,80k+ stars)内置了一个 /goal 命令。它不是第三方插件,不是 skill,是 CLI 自带的原生功能。
/goal让 Codex 记住一个长期目标,跨对话轮次持续工作,直到完成、暂停或取消。
用法很简单:
/goal 给搜索页面加上分页功能
设完之后,AI 会把"给搜索页面加分页"记下来。接下来的对话,每次开始时 AI 都会检查这个目标,主动继续推进。如果你问的事情和目标无关,它会提醒你:"当前目标是给搜索页加分页,要继续做这个还是先暂停?"
你也可以检查进度:
/goal status # 看当前目标是什么、做到哪了
/goal pause # 暂停,去做别的事
/goal resume # 恢复,继续做
/goal clear # 清除目标生命周期
一个目标有几种状态:
pursuing → 正在做
paused → 暂停了,但目标还在
achieved → 完成了
unmet → 没完成(比如方案不可行)
budget-limited → 配额用完了
设完目标之后,Codex 会处于 pursuing 状态。每次对话它都会检查目标进度,自动往下推。你做完了就告诉它"这个完成了",它标记为 achieved。
和普通对话有什么区别
没有 /goal 的时候,对话是这样的:
你:给搜索页面加上分页功能
AI:好,改了 xxx 文件
你:(关掉终端,去吃饭)
你:(一小时后再打开)给搜索页面加上分页功能
AI:好,改了 xxx 文件——等等,它又从头开始做了。它不记得刚才改过。
有 /goal 的时候:
你:给搜索页面加上分页功能
AI:好,开始改
(你关掉终端,去吃饭,回来)
你:继续
AI:上次改到了分页参数解析的部分,遇到一个问题:页码从 1 开始还是从 0 开始。我看了下现有 API 的规范,应该从 1 开始,继续改?
你:继续
AI:好,继续改分页逻辑...
它记住了进度,不需要你重新描述上下文。
当前状态
/goal 是 Codex CLI 自带的功能,但目前官方文档还没有完整列出它(GitHub issue #20536 就是提这个的)。所以很多人不知道有这个东西。
已知的问题:
但这些 bug 说明的是它在积极开发中,不是功能不可用。
适配 OpenCode 的 goal 技能
我们基于这个思路为 OpenCode 定制了 /goal 技能,见 opencode_skill 仓库。原理类似但实现方式不同:
| 维度 | Codex CLI | OpenCode (定制 skill) |
|---|---|---|
| 实现方式 | CLI 原生内置 | Markdown skill + 文件持久化 |
| 存储 | 内部状态管理 | .opencode/goal.json 文件 |
| 命令 | /goal / /goal status / /goal pause / /goal resume / /goal clear | /goal / /goal status / /goal pause / /goal resume / /goal clear |
| 生命周期 | pursuing/paused/achieved/unmet/budget-limited | pursuing/paused/achieved/unmet |
| 维护方式 | OpenAI 官方维护,但未文档化 | 开源 skill,自维护 |
两个工具的核心思路一样:让 AI 不要每次都从头开始。
和 autoresearch 的区别
本博客另一篇文章介绍了 autoresearch——让 AI 自己跑实验做优化。两个技能容易混淆,但解决的问题不同:
| 维度 | /goal | /autoresearch |
|---|---|---|
| 要解决的问题 | AI 不记得上次在做什么 | 人不想手工跑几十次实验 |
| 作用范围 | 跨对话轮次(天/周) | 单次对话内(小时) |
| 核心机制 | 读取 .opencode/goal.json 记住目标 | 循环:改→测→保留或回滚 |
| 是否需要指标 | 不需要,纯目标描述 | 必须,需要可量化的 Verify 命令 |
| 典型场景 | "写个注册系统,今天做一半明天继续" | "测试覆盖率从 72% 提升到 90%,一晚上跑 100 次" |
| 输出 | 进度追踪 + 冲突提醒 | 实验日志 + 指标变化趋势 |
可以串用。 用 /goal 记住大目标("优化搜索性能"),在具体 session 里用 /autoresearch 优化具体指标("p99 延迟降到 100ms")。
如果你在用 Codex CLI,试试:
/goal 给搜索页面加上分页功能
/goal status
它解决的不是"AI 能不能写代码"的问题,而是"AI 能不能持续做完一件事"的问题。后者在实际使用中可能更重要。