这章讲的是 目标设定与监控模式(Goal Setting and Monitoring Pattern),其实不是一个神秘的新算法,而是一种 Agent 控制结构。
它的核心不是“让 LLM 更聪明”,而是给 Agent 外面包一层循环机制:
先明确目标 → 生成行动/结果 → 检查是否达标 → 不达标就带着反馈重新做 → 达标或达到上限后停止。
的代码示例就是用“生成代码”这个任务来展示这种模式:Agent 接收一个编程任务和一组质量目标,然后反复生成、评审、修改代码,直到目标满足或达到最大迭代次数。
1. 这章到底在讲什么?
普通 Agent 很容易变成:
用户问一句,Agent 答一句; 用户让它做一次,它做一次; 做得好不好,它自己不一定知道。
而 目标设定与监控模式(Goal Setting and Monitoring Pattern) 要解决的是:
Agent 不只是执行任务,还要知道“我要达成什么结果”,并且在执行过程中检查自己有没有偏离目标。
所以它关注三个问题:
第一,目标状态(Goal State) 是什么? 比如:“写一个能正确求 Binary Gap 的 Python 程序。”
第二,成功标准(Success Criteria) 是什么? 比如:
| |
第三,监控机制(Monitoring Mechanism) 是什么? 也就是 Agent 如何判断“我现在的结果是否已经满足目标”。
这章的例子里,监控不是靠真实运行测试,而是靠 LLM 自己做代码评审,然后再让 LLM 判断目标是否达成。
2. 它是如何实现“目标感”的?
这里的 目标感(Goal Awareness) 不是模型真的有主观目标,而是代码把目标明确写进了 Prompt。
在示例代码里,用户输入两个东西:
| |
也就是:
| |
然后 generate_prompt() 会把这些目标塞进提示词:
| |
所以它的“目标感”来自:
把任务目标显式写入 Prompt,让 LLM 每次生成代码时都围绕这些目标来做。
这里的关键词是:
- 目标(Goal):Agent 要达成的结果。
- 用例(Use Case):当前具体任务。
- 成功标准(Success Criteria):判断任务是否完成的条件。
- 提示词注入目标(Prompt-based Goal Conditioning):通过 Prompt 把目标传给 LLM。
3. 它是如何实现“进度感”的?
这里的 进度感(Progress Awareness) 主要靠两个东西:
第一,循环次数:
| |
这表示 Agent 知道自己现在处于第几轮迭代。
第二,保存上一轮代码和反馈:
| |
每一轮如果没有达标,就更新:
| |
下一轮生成 Prompt 时,会把上一版代码和上一轮反馈都放进去:
| |
也就是说,Agent 不是每次从零开始,而是带着历史状态继续改。
所以它的“进度感”不是抽象意义上的“理解进度”,而是具体实现为:
| |
关键词:
- 状态(State):Agent 在任务过程中的当前信息,比如上一版代码、反馈、迭代次数。
- 迭代(Iteration):重复执行“生成—评审—修改”的过程。
- 历史上下文(Historical Context):上一轮结果和反馈。
- 最大迭代次数(Max Iterations):防止无限循环的停止条件。
4. 它是如何实现“纠偏能力”的?
这部分是这章最重要的。
纠偏靠三个函数配合:
| |
流程是:
| |
具体看。
第一步:生成代码
| |
LLM 根据任务和目标生成代码。
第二步:评审代码
| |
get_code_feedback() 会让 LLM 扮演代码评审员:
| |
这一步就是 监控(Monitoring)。
它不是在真实运行代码,而是用 LLM 对代码做语义评审。
关键词:
- 监控(Monitoring):检查当前结果是否接近目标。
- 反馈(Feedback):评审后指出的问题。
- 自我评审(Self-Review):Agent 对自己的输出进行检查。
- 质量检查表(Quality Checklist):用目标列表作为检查标准。
第三步:判断是否达标
然后调用:
| |
goals_met() 会再次问 LLM:
| |
如果返回 True,说明目标达成,循环停止。
如果返回 False,说明没达成,继续下一轮。
所以它的停止条件是:
| |
关键词:
- 达标判断(Goal Satisfaction Check)
- 停止条件(Stopping Condition)
- 布尔判断(Boolean Judgment):这里只允许返回 True 或 False。
第四步:不达标就带着反馈重做
如果没达标:
| |
然后下一轮重新构造 Prompt:
| |
这就是纠偏的关键。
因为下一轮 Prompt 里面会有:
| |
所以它不是简单“再生成一次”,而是:
根据监控反馈进行修正。
关键词:
- 纠偏(Correction)
- 重新规划(Replanning)
- 反馈回路(Feedback Loop)
- 基于反馈的改进(Feedback-driven Refinement)
5. 用一张流程理解它
这章的流程可以简化成:
| |
本质上就是:
| |
这个结构才是 Goal Setting and Monitoring Pattern 的核心。
6. 你那句话里的三个能力分别怎么落到代码上?
你说得很准确:
目标感:知道自己要完成什么; 进度感:知道当前做到哪一步; 纠偏能力:发现没做好时能修改计划或重新执行。
对应到代码就是:
| 能力 | 代码实现 | 本质 |
|---|---|---|
| 目标感 Goal Awareness | use_case + goals 被写进 Prompt | 把任务目标显式告诉 LLM |
| 进度感 Progress Awareness | previous_code、feedback、for i in range(max_iterations) | 保存历史状态,知道当前第几轮 |
| 纠偏能力 Correction Ability | get_code_feedback() + goals_met() + 下一轮重新生成 | 根据反馈修改输出 |
所以它不是通过一个单独的“目标模块”实现的,而是通过这几个东西组合出来的:
| |
7. 这章代码的不足也很明显
这章自己也提醒了:这个示例只是说明原理,不是生产级代码。
主要问题有几个。
第一,评审和生成都由同一个 LLM 完成。 这会导致一个问题:模型可能看不出自己的错误。写代码的是它,评审代码的也是它,容易互相放过。
第二,没有真实运行代码。 它只是让 LLM 说代码对不对,但没有执行单元测试(Unit Test),也没有捕获运行错误。
第三,目标判断太粗糙。
goals_met() 只返回 True 或 False,但真实任务往往需要更细粒度的评分,比如:
| |
第四,监控机制比较弱。 它监控的是文本反馈,不是真实环境状态。比如在真实 Agent 里,监控可能包括:
| |
8. 更强的实现方式应该是什么?
如果你要把这章思想迁移到真正的 Agent 项目里,可以这样理解:
初级版
| |
就是这章的代码。
中级版
| |
比如写代码 Agent,至少要加:
| |
也就是说,监控不只靠 LLM 评价,而是靠真实执行结果。
高级版
| |
这就更像 LangGraph / AutoGen / CrewAI 里的 Agent 工作流。
关键词:
- 规划器(Planner):负责拆解任务。
- 执行器(Executor):负责执行具体步骤。
- 评估器(Evaluator):负责检查结果是否达标。
- 重规划器(Replanner):发现失败后修改路线。
- 记忆/状态(Memory / State):保存过程信息。
9. 最直观的理解
这章的模式可以一句话概括:
给 Agent 一个目标清单,再让它每做完一版结果就拿清单自查;如果没过,就带着检查意见重新做。
所以它真正实现的不是“智能体突然拥有目标意识”,而是工程上加了一个控制循环:
| |
这就是 目标设定与监控模式(Goal Setting and Monitoring Pattern) 的本质。
如果之前的 Agent 是:
| |
那么这一章的 Agent 是:
| |
这个变化非常关键,因为它让 Agent 从“单次回答机器”变成了“会围绕目标反复推进的任务执行系统”。

推荐阅读
上一篇:
下一篇: