模块 2Tool 与 Agent Runtime

Agent Loop 与状态

先定义状态,再写 while 循环

  • Run、Turn、Step、Attempt 的层级
  • Input、Model Item、Tool Call、Observation 与 Artifact
  • running、waiting、completed、failed、cancelled 等终态
  • 业务状态和模型对话历史分离

一次迭代的确定性边界

组装模型输入

  • 稳定指令
  • 选择性历史
  • 当前状态与候选 Tool

解析模型输出

  • 回答
  • Tool Call
  • 委派
  • 请求澄清
  • 校验并执行行动,将结构化 Observation 写回
  • 只有状态提交成功才允许进入下一步

终止不能只依赖模型说“完成”

  • 结果通过业务验证
  • 达到步骤、Token、费用或时间预算
  • 连续无进展、重复动作或循环指纹
  • 取消、策略拒绝或不可恢复错误
  • 等待人工、外部事件或资源

Context 是视图,State 才是事实

  • 每轮按需从状态投影上下文
  • 摘要不能覆盖原始审计记录
  • Tool 结果和业务对象使用引用而非反复复制
  • 模型输出必须经校验后才能改变状态

中断与恢复需要可序列化检查点

  • 保存当前版本、待处理调用和预算余额
  • 恢复前重新校验权限、时间和外部状态
  • 避免序列化密钥和不可移植客户端对象
  • 旧代码版本恢复需要迁移或兼容策略

Loop 的关键测试不是“回答像不像”

  • 状态转移和非法迁移
  • Tool 重复、晚到与部分失败
  • 模型持续调用同一 Tool 或拒绝停止
  • 取消竞态与恢复后的 Exactly-once 业务效果