Agent Orchestration

Agent Orchestration

2026/08/14 agent 6 分钟阅读
智能体LLM

Agent Loop 的终止条件

在文章深入解析 Codex 智能体循环 中,OpenAI 归纳了一种最容易的范式用于推进 Agent Loop。在文章中,整个循环停止的条件是,“直至模型不再发起工具调用,转而生成一条面向用户的消息(在 OpenAI 模型中称为助手消息)”。但是其问题在于,以“生成助手消息”为标志判断 Agent Loop 从而终止当前轮对话,本质上是“通过形式判断终止” ,而非内容

无独有偶,Anthropic 在文章How the agent loop works 中同样描述了类似的过程:接收提示信息-进行评估并作出响应-执行工具-重复操作-返回结果。文章中写道:“Turns continue until Claude produces output with no tool calls, at which point the loop ends and the final result is delivered.”

两种典型的 Agent Loop 范式如下图所示,分别为 OpenAI 的 Codex 多轮智能体循环与 Anthropic Claude 的 Agent Loop:

OpenAI Codex 多轮智能体循环示意图
OpenAI Codex 多轮智能体循环
Anthropic Claude Agent Loop 示意图
Anthropic Claude Agent Loop

但是,这样的建模方式使 Agent Loop 在终止条件的判定上陷入到了严重的形式化洼地:严重依赖模型本身,且实际终止条件不一定满足预期。举一个简单的例子,模型因为不可纠正的格式错误,导致本应是调用 MCP 工具的行为回堕为纯文本输出,该输出是没有tool_calls 的纯文本,因而对话终止(猫猫就在今天使用claude code时遇到了这种情况)。

针对上述问题,猫猫想到了一种最简单的做法:J(g,rt)[0,1]J(g, r_t) \to [0,1],其中gg 是目的,rtr_t 是回复,JJ 为一个判分器 (LLM as a Judge),当评分超过一定阈值则说明 Agent Loop 完成了目标,便可以停止。进一步的,可以得到更有意思的方法,通过探索目的和回复之间的向量空间关系、来去作空间上的预期逼近从而“计算出”差异,进而产生出信号用于判断 Agent Loop 是否应该结束。

下面,我们用更严谨的数学模型来表示整个过程。

设计定义

定义目标

首先,对于任意需求都必然有一个目标,这个目标可以建模为:

G={(ci,wi,τi,ki,vi)}i=1m\mathcal{G}=\{ (c_i , w_i , \tau_i , k_i , v_i) \}_{i=1}^{m}

其中:

  • cic_i: 第 i 个验收条件
  • wiw_i: 重要性
  • τi\tau_i: 通过阈值
  • ki{hard,soft}k_i \in \{ \text{hard} , \text{soft} \}: 硬条件或软条件
  • viv_i: 对应验证器

例如:

goal: 修复重复回复问题

criteria:
  - id: no_duplicate_output
    type: hard
    verifier: duplicate_message_test
    threshold: 1.0

  - id: normal_chat_yields
    type: hard
    verifier: integration_test
    threshold: 1.0

  - id: tool_task_continues
    type: hard
    verifier: regression_test
    threshold: 1.0

  - id: architecture_quality
    type: soft
    verifier: structured_rubric
    weight: 0.3

定义评价对象

评价对象应该是一个完整的状态而非最终回复,其可以表示为:

xt=(St,At,Et,Tt,Rt)x_t = (S_t , A_t , E_t , \Tau_{ \leq t} , R_t )

  • StS_t: 环境或系统状态
  • AtA_t: 代码、论文、文件、图谱等产物
  • EtE_t: 测试、工具结果、引用、日志等证据
  • Tt\Tau_{ \leq t}: 完整执行轨迹
  • RtR_t: 准备发送给用户的回复

其中,回复只是其中一个分量。否则模型只要说“已经完成”,目标与回复的语义相似度就会非常高,堪称文字版伪造竣工验收。

计算目标满足度

基于如上建模,每个条件会产生qi,t=vi(ci,xt)[0,1]q_{i,t}=v_{i}(c_i , x_t ) \in [0,1],同时定义证据可信度ρi,t[0,1]\rho_{i,t} \in [0,1],进而可以得到硬条件门:

Ht=Πi:ki=hardI[qi,tρi,tτi]H_{t}= \underset{i:k_i=\text{hard} }{\Pi}\mathbb{I}[q_{i,t} \rho_{i,t} \geq \tau_{i}]

总体完成度为:

Ct=Σiwiqi,tρi,tΣiwiC_t = \frac{\Sigma_{i} w_i q_{i,t} \rho_{i,t} }{\Sigma_{i} w_i}

不确定度为:

Ut=Σiwi(1ρi,t)ΣiwiU_t = \frac{\Sigma_{i} w_i (1-\rho_{i,t}) }{\Sigma_{i} w_i}

CtC_t 较高则说明完成度较高,但如果同时UtU_t 较高则说明不确定度较大,从而需要进入核验环节。

开放文本目标

对于“论文论证充分”“报告覆盖完整”等难以写成精确断言的条件,可以使用 embedding,但只把它当作语义传感器。

关联路线图节点

暂无关联路线图节点

关联成果

暂无关联成果

相关文章

💬 评论与讨论

使用 GitHub 账号登录即可参与讨论 · 选中正文文字可引用评论