Transcript
00:00:00随着全新的实验性 Goals 功能发布,Codex 可能会在此击败 Claude Code
00:00:05Codex 现在是执行长时间运行的自主编码任务最简单的方法,而且
00:00:10无需包含任何额外的编排层;Goals 的作用更像是一个
00:00:15更高级、集成的 Ralph 循环:你给它一个目标,它就会
00:00:19持续工作数小时甚至更久来解决问题,期间完全不需要你干预
00:00:25今天我将向大家展示它的运作方式、如何设置,并进行
00:00:29实操演示,让大家亲眼看看它的威力。今天我们将制作《Rift Salvage》,一款 2D 战斗游戏
00:00:35它使用了完全原创的素材,而且我们完全是通过 Goals 功能构建的。Goals 功能
00:00:42是目前 Codex 真正的杀手锏之一,而且使用起来简单得离谱
00:00:47这只是一个斜杠命令的事,所以它能带来巨大的价值。无论
00:00:51你是在使用 Codex 桌面应用还是 Codex CLI,都必须启用 Goals,因为它是
00:00:56一个实验性功能。现在你可以提示 Codex 来开启,或者你自己快速操作
00:01:01在 Codex 应用内部,我只需进入设置,然后进入配置
00:01:07就在这里写着“打开 config.toml”,点击它,然后用 VS Code 打开
00:01:15在下面你需要添加两行(如果还没有的话):features 然后是 goals = true
00:01:22就这样,应该只需要两秒钟。如果这太复杂,你也可以告诉 Codex
00:01:27“嘿,帮我启用 Goals 吧”,也就是 features goals = true。好了,要实际使用 Goals
00:01:35在桌面应用和 CLI 中,只需输入 /goal。出于某种原因
00:01:40我想是因为它是新的实验性功能,当你输入 /goal 时,你不会
00:01:43收到任何它正在运行的通知,但一旦我们给它一个正确的提示词
00:01:48你就会看到一个图标,让我们知道 Goal 正在运行。所以如果你启用了它
00:01:53确保之后重启一下 Claude Code,以确保更改生效。但当你输入
00:01:58/goal 时,你不会看到任何类似平时的反馈,比如你使用
00:02:02某种技能(skill)时会得到的反馈。但这没关系
00:02:08但在应用内实际演示 Goal 之前,让我先解释一下它底层的运行机制
00:02:13但首先,插播一段今天赞助商的话,也就是我自己。如你所知
00:02:18在 Chase AI Plus 中,我有 Claude Code 大师课,但我刚刚也发布了
00:02:24Codex 大师课,所以你现在有两个工具可以帮你从零开始成为 AI 开发者
00:02:29这是学习的最佳场所,因为我会假设你没有任何技术知识,并且专注于真实案例
00:02:34如果你想亲身体验,或者想听我几天后举办的免费网络研讨会,链接
00:02:40就在置顶评论中。希望能见到你。正如我在开头所说,Codex Goals 基本上
00:02:46是一个更高级、集成的 Ralph 循环。你可能会问,什么是 Ralph 循环?
00:02:51我们会为那些不记得的人快速回顾一下。Ralph 循环的核心,如果我们是在
00:02:57Claude Code 之类的工具中使用,它其实就是一行代码。就是一个 Bash 循环,正如
00:03:03你在这里看到的一样。这个概念是,我运行这行代码,接着发生的是
00:03:09它会启动 Claude Code 或 Codex 或任何 AI 系统,并查看一个 prompt.md 文件
00:03:16这个提示词会说明:嘿,这是我们要做的,这是我想怎么做,顺便说下
00:03:21这是任务完成的标准。在这个例子中,我们想提高
00:03:28身份验证文件的测试覆盖率,这意味着我们需要编写更多测试,当覆盖率
00:03:33测试覆盖率达到 75% 就是最终目标。运行方式是先启动这个循环,然后
00:03:41循环开始运行,读取提示词,然后将其注入 AI 会话。会话运行
00:03:48一轮,读取提示词,同时也会读取一个 state.md 文件。State 文件
00:03:56基本上是一个记录文件,让它能查看:如果我们有任务 1、2、3,目前完成了什么
00:04:03以及是否有效。假设前几轮完成了任务 1,下一轮它就会
00:04:10查看 State 文件并说:嘿,任务 2 还没完成,猜猜我们
00:04:14在这一轮要做什么?我们要开始第二轮。可能第一轮没成功,它会说
00:04:18“嘿,这是我尝试过的”,下一个人接着来,以此类推,直到完成所有任务。所以在
00:04:25代理运行完一轮后,它会更新文件,一轮结束,循环继续。所以你会得到这种
00:04:30持续的循环,它不断检查几个不同的文件来确认:我们做了什么
00:04:35还需要做什么,最终状态是什么,最终一旦达到完成标准
00:04:41它就会说:嘿,我们搞定了,全程自主。这就是 Ralph 循环的理念。现在如果你想让
00:04:48Ralph 循环做更多事,就需要额外的脚手架,比如处理计费、
00:04:53如果你这样做会发生什么,是否有智能 Token 使用机制?并不一定。如果它宕机了怎么办?
00:04:58代理崩溃了,你按了 Ctrl+C,它怎么知道是否真的完成了?有没有
00:05:02内置的第三方来验证一切是否完成?并没有。因为归根结底,它只是
00:05:08单行代码。现在将它与 Goals 进行对比。Goals 从大局上看运作方式相同:我们告诉它
00:05:15去做某事,它对如何执行有个概念,并不断更新内部文件,记录
00:05:19我已经做了什么,还需要做什么,并努力达到最终状态。所以从大局来看
00:05:23它们几乎是一样的。不过,有几点不同。首先,我们有两个
00:05:29对你不可见的 Markdown 文件,分别是 continuation(续航)和 budget limit(预算限制)。
00:05:35这两样东西有什么用?它们允许 Codex 在你即将
00:05:40触碰使用限制时采取不同的行为方式,这很重要。所以它实际上能
00:05:46优雅地结束系统在 Goals 循环中的任务处理。而在 Ralph 循环中
00:05:52一旦用完预算,任务就断了。Codex 则不一定,它会想出一个好办法让你
00:05:57停在稍后可以继续工作的位置。这在现实中的运作方式是,Codex
00:06:03在 Goals 循环(或 Ralph 循环,随你怎么想)中运行一轮。当这一轮
00:06:08结束时,它有四条路径可选:第一,如果还有活儿要干且预算充足
00:06:13“嘿,我们继续干”。第二,如果我们接近 Token 上限,它会
00:06:19注入 budget limit.md 文件,实质上是优雅地收尾这一轮
00:06:25并为你提供已完成内容的最终报告,以及如果你更新了限制后下一步该做什么。
00:06:29如果项目完成了,它会调用 update goal 工具;
00:06:34它会去更改状态,确保所有交付物都经过审计,如果
00:06:39一切反馈都通过,“嘿,目标完成”,我们就收工了。最后,我们还有办法暂停目标、
00:06:45编辑目标、处理崩溃。万一在我们循环过程中出了什么问题
00:06:49也不会像传统的 Ralph 循环那样直接“歇菜”。所以它比
00:06:54Ralph 循环更复杂,但在宏观上很相似,而且我们不需要做任何
00:06:59额外的编排。这一切对你来说听起来应该很耳熟,如果你曾用过
00:07:05像 GSD、GSD Superpowers 这些工具,它们都是坐在 Claude Code 之上的编排层
00:07:11实质上是在做我们现在用 Codex 里的一个斜杠命令就能做的事。正因为
00:07:18它真的只是一个斜杠命令,执行起来极其简单。你不需要看
00:07:2440 分钟关于 GSD 复杂细节的演示,你只需要输入 /goal,Codex 就会
00:07:30勇往直前,克敌制胜。考虑到这一点,让我们来实际测试一下。首先
00:07:35我们将它置于 Plan(计划)模式,因为我们可以很容易地从计划模式转入 Goals
00:07:39我们要让它为我们创建一个顶视角的街机生存游戏,并且
00:07:44让它创建所有的素材。Codex 与 Claude Code 相比
00:07:49一个很酷的地方是,因为它是 OpenAI 的产品,我们可以使用 GPT 的图像生成。
00:07:56所以它会为这款游戏创建所有的素材。我想要玩家的无人机精灵图
00:08:01三个敌人、一个 Boss 生物、能量核心、危险地雷、背景、徽章、UI
00:08:07点缀素材,我要让它创建相当多的内容。这个提示词相当复杂
00:08:15因为它可能会运行很长时间。我也许应该已经给你们看过那张截图了
00:08:18那个说“我让它跑了连续 50 小时”的人。我的意思是,谁知道连续跑 50 小时
00:08:23是否真的是最佳方式,但核心理念是:我们有一个模糊的想法,进入计划模式
00:08:31我们会制定一个非常严密、紧凑的计划,而且非常重要的一点是,
00:08:36对于这类事情,你必须非常具体地明确最终结果的需求,因为如果我们没有
00:08:43一个非常具体的目标结果,或者一组非常量化的指标,让它必须达成
00:08:50才能完成循环,那么你得到的结果可能会很平庸,甚至是半成品。
00:08:55所以我强烈建议你通过计划模式,花时间真正完善计划
00:09:02而不是只说“/goal 帮我做一个能赚十亿美元的 SaaS 产品”。这是
00:09:07我们游戏的计划,而在进行验证时,它会重点查看这些内容
00:09:12这正是它在宣布完成之前会实际测试的内容。显然它需要
00:09:17即运行 npm run build 并修复所有错误,启动开发服务器并提供本地 URL,添加并
00:09:24运行自动化的 Playwright 验证脚本来打开应用,确认一切正常加载
00:09:29检查画布是否非空白,模拟键盘移动,模拟收集事件,强制造成伤害
00:09:34确认血量变化、Boss 获胜状态、UI 等等。所以这些才是你真正需要
00:09:39关注的。如果你看着这些验证项并说:嘿,如果这些都
00:09:44完成了,我就满意了。那么你就可以继续了。现在当它说“执行计划”时
00:09:49你可以输入 /goal,使用 goal
00:09:54来执行这个计划,然后我们提交。看最上面,你看到了什么?
00:10:02这个写着 Goal 的小徽章,现在我知道我们正在运行 Goal 了,这里也写着。
00:10:09就像我之前说的,当你输入 /goal 时,不会得到任何命令提示
00:10:12但它在运行。我觉得这只是实验性功能的 UI 漏洞。它说
00:10:17仍在计划模式中,所以我们先取消那个 Goal,再次输入:使用 goal 执行此计划。目前还
00:10:28稍微有点不够完善,但让我们看看它究竟能为我们做什么。这个想法是,我现在完全放手了
00:10:34它会执行它的 Ralph 循环、它的 Goal 任务,最后我们
00:10:39会得到一个最终产品。它已经运行了大约 12 分钟,你可以看到
00:10:43它已经在用 Image Gen 2 模型创建所有不同的素材了
00:10:49这真的很酷。此外,另一件好事是,当你使用桌面应用而不是
00:10:54直接在原始终端里操作时,所有这些信息都是直接内联展示的,这很赞。我
00:11:00个人对 Codex 桌面应用印象非常深刻。并不是说我不再爱 Claude
00:11:06Code 了,我觉得我会交替使用这两个工具。大家可以看我上一段视频
00:11:11关于这方面的见解,我认为必须在两者中选一个的想法有点愚蠢
00:11:15为什么不两个都用呢?而且通常是串联使用。对于 Claude Code,我
00:11:20更倾向于纯终端操作,但对于 Codex,我很享受它的桌面应用,部分原因
00:11:26可能只是偶尔换个口味,而不是一直呆在终端里
00:11:32所以我目前真的很喜欢它。大约 30 分钟后,它说完成了,实际上它
00:11:38完成得比我想象的还要快。让我们看看第一遍的效果如何。因为
00:11:44它完成得这么快,我待会儿可能会要求它再加点料。它说已经实现了
00:11:49《Rift Salvage》,本地开发服务器正在运行;这是一个具有键盘和触摸控制、生成
00:11:56敌人、地雷、得分、护盾强化、Boss 阶段、胜负、暂停和重启功能的画布游戏。11 个带透明遮罩的
00:12:03Image Gen 位图素材,自动化的 Playwright 验证器。然后展示了它构建的所有内容
00:12:10这真的很酷。让我们看看它是否能运行,以及我们可以添加什么来进一步测试它
00:12:17甚至更多 让我们在真实的浏览器中运行它 好的 这里有一个加载界面
00:12:27对比度有点低 很难看清楚 你们看起可能也会觉得有些费劲
00:12:32但我有我的小飞船,那是地雷,我想我应该去抓这些东西
00:12:39同时它会生成敌人追着我。它能运行,看起来还挺酷的。我觉得我们
00:12:49可能还需要打磨一下画面,但这里的所有东西都是独立创建的
00:12:56作为独特的图像,这真的很了不起。我想我们可以增加……首先我想看看
00:13:00Boss 战长什么样,看看我们能不能加快进度,同时加上某种
00:13:04射击系统,比如激光之类的酷炫玩意。那我们就
00:13:11这样做吧,我们先让它完成这个。我要把它切换到计划模式
00:13:15看看能不能让它更努力一点。我觉得第一遍完成得相当不错
00:13:19一切都在运行,但我想让它更复杂一些。我们能添加某种
00:13:24战斗系统吗?比如发射激光去射击不同的敌人,而他们
00:13:31也反击我们。我们能不能也让 Boss 阶段来得快一点,或者增加一个按钮
00:13:37让我按一下就能直接开始 Boss 阶段?我们能不能也改一下对比度?
00:13:42因为现在所有的东西都快跟背景混在一起了。如果你有任何其他点子
00:13:49能让这个更复杂,以此挑战你的极限
00:13:53那就把那些点子展示给我看。这就是它想出的计划。当你使用
00:13:58Goals 系统时,有一点要注意:每次 Goal 运行都绑定到你当时使用的对话线程(Thread)或会话(Session)中。
00:14:07由于我们一直在同一个聊天框里,这意味着我们在同一个 Goal 线程中。如果我想
00:14:12再次运行 Goal,在同一个项目上运行第二次,这是可以的,但我们必须
00:14:18在第二个线程或第二个聊天框中进行,就像打开另一个终端一样。所以我只要
00:14:24复制这个计划,打开另一个聊天框,输入 /goal,然后
00:14:33把它粘贴进去。15 分钟后,我们完成了第二次 Goal 运行,它实现了战斗
00:14:40升级。让我们看看现在的游戏是什么样的。这是加载界面,跟
00:14:44第一次看到的非常相似,除了它在顶部增加了几个小部件:现在有了
00:14:50目标连击和 Boss 信号。如果我现在启动游戏,就能开火了,
00:14:56敌人也能回击,而且他们有血条了。我也能
00:15:01触发 Boss 信号。瞧,Boss 出现了,看起来真的非常酷。我觉得
00:15:09这款游戏最酷的一点,以及它所做到的,就是所有这些独特的素材。事实上
00:15:13每样东西都是原创素材,而且它是用 Image Gen 2 完成的,我觉得这
00:15:19非常棒。我明白两次运行加起来总共只花了大约 45 分钟,虽然我们
00:15:24看到有些人的截图显示运行了三天,但我认为
00:15:30这其中最棒的一点是执行这些目标是多么简单。你只要给它一个目标
00:15:36它就会全力以赴,前提是你得设定好标准。我们赢了吗?我不知道我们
00:15:43是不是挂了。但正如我所说,关于这一点以及 Goals 本身,最酷的
00:15:48想法是:如果你有一个清晰的北极星指标,并且对什么是成功有明确的标准
00:15:54你就能从中获益良多,它甚至可以永远运行下去。与其自己去搭建
00:15:59Ralph 循环和脚手架,或者使用外部工具作为编排
00:16:05层(如 GSD 或 Superpowers),它其实已经为你内置好了。就像我们在这里做的一样
00:16:10你可以添加很多难以实现但非常酷的东西。虽然在 Claude Code 里面也能做,
00:16:15比如如果我们用 Claude Code,肯定也能做成这样,但我们可能
00:16:18必须实现像 Higgsfield CLI 或 Higgsfield MCP 这样的东西来帮我们生成图像
00:16:24而不是像现在这样在一个集成的整体系统中完成。所以我希望你们能
00:16:31从这段视频中有所收获,我强烈建议你们去试试 Codex。我真的很喜欢它的
00:16:35桌面应用,就像我之前说过的。我觉得这个功能真的很酷。再说一次
00:16:40我们也可以把它和 Claude Code 配合使用。我们可以让计划在
00:16:44Claude Code 中创建,然后投喂给 Codex 来执行 Goals,再让 Claude Code 查看它做了什么
00:16:49进行这种来回协作,我认为这才是最有价值的地方。这有点像
00:16:53“整体大于部分之和”。一如既往地
00:17:02让我知道你的想法。记得关注 Chase AI Plus,链接就在置顶
00:17:07评论里。我过几天还会举办一场网络研讨会,链接也在那里,希望能见到你们。
00:17:12除此之外,我们回头见。