Agent Loop Flowchart

pigo Agent 两层循环

internal/runtime/loop.go · 外层后续消息驱动 · 内层 turn 直到无工具调用 · 唯一出口 finish()

流程图 (Flowchart) — 行为性图形。聚焦 Agent 主循环的两层嵌套结构:内层跑 turn(流式回复→停止原因分派→执行工具→回填),外层在内层收敛后消费后续消息。

外层循环 · for { } · 后续消息驱动 内层循环 · for { } · turns until no tool calls tool_use · 有工具 否 · 继续 下一 turn 是 · shouldStop 无工具 · 自然结束 → break error/abort 有 · 追加后续消息 无 · 收尾 agent_start · session emit turn_start streamAssistantResponse 流式回复 · message_update 停止原因? StopReason ExecuteToolCalls 执行工具 · 串行/并发 回填 tool_result · turn_end afterTurn 压缩+钩子·停止? 后续消息? FollowUp finish() agent_end · SetResult · 关流 LEGEND 步骤 判断 主路径步骤 循环回边 异常/终态 唯一出口

INNER LOOP

内层 · turn 循环

  • • 一次 turn:流式回复 → 执行工具 → 回填
  • • 无工具调用即自然结束,break 出内层
  • • afterTurn 未停止则继续下一 turn
  • • allTerminate(工具全体请求终止)直达 finish

STOP REASON

停止原因分派

  • • tool_use:执行工具后回填续跑
  • • 无工具:自然结束,转外层判定
  • • length:失败所有工具调用促模型重发
  • • error / aborted:终态,立即 finish

OUTER LOOP

外层 · 后续消息

  • • 内层收敛后查 GetFollowUpMessages
  • • 有后续消息 → 追加并重跑内层
  • • 无 → break 收尾
  • • 所有终止路径汇于唯一出口 finish()