<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>长任务 on KnightLi的博客</title>
        <link>https://knightli.com/tags/%E9%95%BF%E4%BB%BB%E5%8A%A1/</link>
        <description>Recent content in 长任务 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Tue, 26 May 2026 23:44:37 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/%E9%95%BF%E4%BB%BB%E5%8A%A1/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Codex Goal 深度解析：让 AI Agent 连续工作数小时的目标驱动工作流</title>
        <link>https://knightli.com/2026/05/26/codex-goal-persistent-goals-ai-agent-long-running-workflow/</link>
        <pubDate>Tue, 26 May 2026 23:44:37 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/26/codex-goal-persistent-goals-ai-agent-long-running-workflow/</guid>
        <description>&lt;p&gt;浏览器、终端和 IDE 里的 AI Agent 已经越来越会写代码了，但很多人真正遇到的问题不是“它不会做”，而是“它做了一半就说完成了”。&lt;/p&gt;
&lt;p&gt;简单 ticket 很适合交给编程 Agent：修一个按钮、补一个接口、改一段文案、加一个测试。目标清楚，边界很小，验证方式也直接。但一旦任务变成大型迁移、跨模块重构、测试套件修复、依赖升级、prompt 评测优化，Agent 就很容易出现一种典型问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;它完成了一个看起来合理的中间状态，然后过早停下。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Codex Goal / Persistent Goals 这类能力要解决的，正是这个“提前收工”问题。它的重点不是让 Agent 多跑几轮，而是让 Agent 围绕明确目标持续推进，直到满足可验证的完成标准。&lt;/p&gt;
&lt;h2 id=&#34;codex-goal-解决的不是循环而是停止条件&#34;&gt;Codex Goal 解决的不是循环，而是停止条件
&lt;/h2&gt;&lt;p&gt;很多长任务自动化会从一个粗糙方案开始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;继续检查代码，修复问题，直到没有错误。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者更机械一点：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;循环 10 次：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 运行测试
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 让模型修复失败
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 再运行测试
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这类粗糙循环看起来能让 Agent 工作更久，但它有两个硬伤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它不知道什么时候真的该停。&lt;/li&gt;
&lt;li&gt;它也不知道“没有继续报错”是否等于“任务完成”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Codex Goal 的关键不是循环次数，而是 goal、state、judge stop condition 三件事。也就是说，Agent 需要知道这次工作的目标是什么，当前已经完成到哪里，以及哪些证据能证明任务真的结束了。&lt;/p&gt;
&lt;p&gt;这也是长任务 Agent 的核心分水岭：不是“多执行几步”，而是“能不能判断自己还差什么”。&lt;/p&gt;
&lt;h2 id=&#34;goal-和普通-prompt-的区别&#34;&gt;Goal 和普通 prompt 的区别
&lt;/h2&gt;&lt;p&gt;普通 prompt 更像一次性指令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;把这个项目的测试修好。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Goal prompt 则更像一份小型任务合约：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;目标：修复当前仓库中失败的测试。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;范围：只修改 src/ 和 tests/，不要改构建脚本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;完成标准：npm test 全部通过，且新增修改不引入 lint 错误。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;验证命令：npm test &amp;amp;&amp;amp; npm run lint。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;失败处理：如果超过 3 次仍无法修复，输出剩余失败用例、已尝试方案和阻塞点。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输出：总结修改文件、修复原因、验证结果。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;两者最大的差别在于，Goal prompt 把“完成”定义清楚了。&lt;/p&gt;
&lt;p&gt;如果没有清晰的完成定义，Agent 很容易把“我改了代码”误判成“我完成了任务”。如果有明确的完成标准，Agent 就必须围绕测试、日志、diff、构建结果、eval 分数这些外部证据继续推进。&lt;/p&gt;
&lt;h2 id=&#34;为什么-llm-judge-stop-condition-很关键&#34;&gt;为什么 LLM judge stop condition 很关键
&lt;/h2&gt;&lt;p&gt;长任务里最难的不是让 Agent 执行命令，而是让它判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;现在是否真的完成了？&lt;/li&gt;
&lt;li&gt;是否只是通过了局部测试？&lt;/li&gt;
&lt;li&gt;是否修了一个问题，却引入了另一个问题？&lt;/li&gt;
&lt;li&gt;是否需要继续搜索、继续运行验证、继续回滚某个方向？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是 LLM judge stop condition 的价值。&lt;/p&gt;
&lt;p&gt;理想状态下，Agent 不应该只看“最后一个命令是否退出码为 0”。它还应该综合判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户给出的完成标准是否全部满足；&lt;/li&gt;
&lt;li&gt;修改是否限定在允许范围内；&lt;/li&gt;
&lt;li&gt;测试、lint、build、eval 是否都跑过；&lt;/li&gt;
&lt;li&gt;失败日志是否还有未处理项；&lt;/li&gt;
&lt;li&gt;是否存在明显的副作用和风险；&lt;/li&gt;
&lt;li&gt;最终输出是否能让人类快速复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，judge 不只是“判定成功”，还要防止 Agent 自我安慰式收尾。&lt;/p&gt;
&lt;h2 id=&#34;哪些任务适合交给-goal&#34;&gt;哪些任务适合交给 Goal
&lt;/h2&gt;&lt;p&gt;Codex Goal / Persistent Goals 更适合那些需要多轮探索和验证的复杂编程任务，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码迁移：从旧框架迁到新框架，从 CommonJS 迁到 ESM，从旧 API 迁到新 API。&lt;/li&gt;
&lt;li&gt;大型重构：拆分模块、整理边界、替换重复实现、降低复杂度。&lt;/li&gt;
&lt;li&gt;测试修复：连续分析失败用例，定位原因，修复后反复验证。&lt;/li&gt;
&lt;li&gt;依赖升级：升级框架、SDK、构建工具，同时处理破坏性变更。&lt;/li&gt;
&lt;li&gt;Prompt 评测优化：运行评测，分析失败样本，调整 prompt 或工具调用策略。&lt;/li&gt;
&lt;li&gt;技术债清理：围绕明确规则逐步替换旧写法，并保持行为不变。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些任务的共同点是：中间状态很多，失败原因不一定一次能看清，完成标准必须依赖验证结果。&lt;/p&gt;
&lt;h2 id=&#34;哪些任务不适合只靠-goal&#34;&gt;哪些任务不适合只靠 Goal
&lt;/h2&gt;&lt;p&gt;Goal 并不是万能的。下面这些任务如果只靠一个长提示词，风险会很高：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目标非常模糊，例如“把产品增长做好”。&lt;/li&gt;
&lt;li&gt;周期很长，例如连续几周的 SEO、GEO、广告投放优化。&lt;/li&gt;
&lt;li&gt;需要跨系统调度，例如同时处理内容、数据、投放、客服和业务指标。&lt;/li&gt;
&lt;li&gt;涉及生产风险，例如数据库变更、线上配置、财务操作、账号权限调整。&lt;/li&gt;
&lt;li&gt;缺少验证手段，例如没有测试、没有指标、没有日志、没有人工验收标准。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务更像 Mission，而不是 Goal。&lt;/p&gt;
&lt;p&gt;Goal 适合小时级到一两天的深度执行。Mission 则需要状态、历史、调度、人类审批、阶段性复盘和长期指标。比如 SEO / GEO / Ads 优化，不能只是让 Agent 循环写内容或调参数，还要持续记录策略、实验、数据变化和下一步计划。&lt;/p&gt;
&lt;h2 id=&#34;写好-goal-prompt-的模板&#34;&gt;写好 Goal Prompt 的模板
&lt;/h2&gt;&lt;p&gt;一个好用的 Goal prompt，至少应该包含下面几块内容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;目标：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用一句话说明最终要达成什么结果。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;说明当前问题、相关文件、业务约束、已有尝试。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;范围：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;允许修改哪些目录、文件、模块；哪些地方不要碰。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;完成标准：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;列出可验证的 definition of done。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;验证命令：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;写清楚需要运行的测试、lint、build、eval 或脚本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;失败策略：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;如果无法完成，要求 Agent 输出失败原因、已尝试方案、剩余阻塞点。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;风险边界：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;禁止破坏性操作，生产配置、密钥、数据库、外部服务需要人工确认。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;交付格式：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求总结修改点、验证结果、风险和后续建议。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;真正决定长任务效果的，往往不是 prompt 写得多漂亮，而是完成标准是否足够明确、足够可验证。&lt;/p&gt;
&lt;h2 id=&#34;goal-buddy-的价值先帮你把任务说清楚&#34;&gt;Goal Buddy 的价值：先帮你把任务说清楚
&lt;/h2&gt;&lt;p&gt;很多长任务失败，不是因为 Agent 能力不够，而是因为人类一开始没有把任务拆清楚。&lt;/p&gt;
&lt;p&gt;Goal Buddy 这类辅助工具的价值在于：在正式把任务交给 Agent 之前，先帮你准备目标、边界、完成标准和验证方式。它像一个任务预检器，会追问：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个任务的最终可见结果是什么？&lt;/li&gt;
&lt;li&gt;哪些目录可以改，哪些不能改？&lt;/li&gt;
&lt;li&gt;成功后跑什么命令证明？&lt;/li&gt;
&lt;li&gt;失败时要不要继续尝试，最多尝试到什么程度？&lt;/li&gt;
&lt;li&gt;是否需要分阶段提交？&lt;/li&gt;
&lt;li&gt;哪些操作必须让人类确认？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步看似啰嗦，但它能显著减少 Agent 中途跑偏、过早停止，或改出一堆难以复核的代码的概率。&lt;/p&gt;
&lt;h2 id=&#34;给-codexclaude-codeopencode-用户的实践建议&#34;&gt;给 Codex、Claude Code、OpenCode 用户的实践建议
&lt;/h2&gt;&lt;p&gt;如果你正在用 Codex、Claude Code、OpenCode、OpenClaw 或类似编程 Agent，可以按下面方式处理长任务：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先提交当前工作区，保证有干净回滚点。&lt;/li&gt;
&lt;li&gt;把任务写成 Goal，而不是一句泛泛的需求。&lt;/li&gt;
&lt;li&gt;明确允许修改的范围和禁止修改的范围。&lt;/li&gt;
&lt;li&gt;给出验证命令，最好让 Agent 每一轮都能自己运行。&lt;/li&gt;
&lt;li&gt;要求 Agent 在无法完成时报告阻塞点，而不是硬编一个“完成”。&lt;/li&gt;
&lt;li&gt;对高风险操作设置人工确认，例如删除文件、改数据库、改部署配置。&lt;/li&gt;
&lt;li&gt;最后只接受带有测试结果和修改总结的交付。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;长任务 Agent 的正确使用方式，不是“让它自己随便干一晚上”，而是给它一个清楚的目标、坚实的护栏，以及可验证的出口。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Codex Goal / Persistent Goals 的意义在于，把编程 Agent 从“执行一句指令”推进到“围绕一个目标持续工作”。&lt;/p&gt;
&lt;p&gt;它最适合复杂但边界明确的工程任务：迁移、重构、测试修复、依赖升级、评测优化。它不适合完全模糊、周期很长、缺少验证标准的业务任务；那些更应该设计成 Mission 系统。&lt;/p&gt;
&lt;p&gt;未来 AI Agent 的竞争点，很可能不只是模型会不会写代码，而是能不能围绕目标持续推进、正确判断停止时机，并把过程留给人类复核。&lt;/p&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1a3LF6fE2D/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Codex Goal 深度解析：让 AI Agent 连续工作数小时，不再提前摆烂&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-the-codex-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing the Codex app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
