Agent 不是更长的回答

从 LLM、Tool Calling 与 Agent Loop 开始,建立后续阅读 Pi 所需的最小心智模型。

ANALYSIS SNAPSHOTPi v0.82.15bc1c2c0

从函数到循环

LLM 更像一个函数:输入一段上下文,输出下一段内容。Agent 则把这个函数放进一个可观察、可中断的循环:模型可以请求工具,运行时执行工具,把结果放回上下文,再让模型继续。

Chatbot 像问答柜台:你问一次,它答一次。Agent 像带着工作台的工程师:先理解任务,必要时查文件或运行命令,再根据结果决定下一步。

INTERACTIVE TRACE一次 turn 如何流动
ACTIVE STAGEPrompt

消息进入队列

点击节点查看阶段;这不是定时演示,而是一张可键盘操作的调用链。

五个基础对象

  1. Message:用户、助手和工具结果组成的对话事实。
  2. Context:这次模型调用真正能看到的 system prompt、messages 与 tools。
  3. Tool:带名称、描述、参数 schema 和执行函数的能力。
  4. Event:让 UI、日志或扩展观察运行过程的增量信号。
  5. Session:跨多次调用保存历史与分支的持久结构。
packages/ai/src/types.ts:323-491Message · Tool · Context · Event

一次 turn 和一次 run

一个 turn 是“一次 assistant response + 由它触发的全部 tool calls/results”。一个 run 可以有多个 turn:只要模型继续发出工具调用、用户插入 steering message,或队列中存在 follow-up,循环就继续。

run
└─ turn 1: assistant → tool call → tool result
   └─ turn 2: assistant → tool call → tool result
      └─ turn 3: assistant → final answer

Why / What / How / Trade-off

Why

纯文本生成无法直接读取真实文件、调用 API 或观察执行结果。循环让语言模型获得反馈。

What

Agent runtime 解决“意图如何变成动作,以及动作结果如何进入下一轮推理”。

How

Pi 在模型边界前把 AgentMessage[] 转成标准 Message[];模型流式返回内容或 tool call;runtime 校验参数并执行;tool result 重新进入 messages。

packages/agent/src/agent-loop.ts:281-371streamAssistantResponse()

Trade-off

循环越自动,潜在副作用越大;控制越严格,用户打断和确认越多。Pi 的选择不是替所有人做权限政策,而是暴露 hooks、队列和事件,让宿主决定。

读完这一章,你应能解释

  • 为什么 LLM 不等于 Agent。
  • tool result 为什么必须回到上下文。
  • turn、run 与 session 的时间尺度为何不同。
  • runtime 为什么是工程可信度的中心。