模块 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 业务效果