a↗Agent 工程实战中文课程 / v1.0.0⌕ 搜索课程/
I02 · 互动推演

逐步执行Tool Loop

逐步检查模型响应、调用关联、预算与终态。

合成教学数据 · 未运行真实模型
静态推演与完整规格

I02 逐步执行Tool Loop

关联章节:M01 · 交互类型:trace-stepper · 状态:提供完整状态/验收规格,UI待实现

教学目标

逐步检查模型响应、调用关联、预算与终态。

初始状态


{
  "cursor": 0,
  "model_calls": 0,
  "tool_calls": 0,
  "ledger_count": 0,
  "status": "RUNNING"
}

操作控件

  • 下一步

  • 运行到结束

  • 选择正常/重复ID/预算耗尽案例

  • 预测下一状态

  • 回退到上一步快照

状态变化规则

  • 每一步先让学习者预测动作类型,然后推进一条固定事件。

  • 工具派发前扣除尝试预算;拒绝调用也记录结果。

  • 最终文本不会改变ledger_count。

黄金案例与反馈

normal

输入:


[
  "get_order:c1",
  "get_shipment:c2",
  "final"
]

期望:


{
  "model_calls": 3,
  "tool_calls": 2,
  "status": "MODEL_FINISHED",
  "ledger_count": 0
}

模型结束,但本例从未请求退款。

duplicate

输入:


[
  "get_order:c1",
  "get_shipment:c1"
]

期望:


{
  "status": "PROTOCOL_ERROR",
  "tool_calls": 1
}

重复ID使结果关联失真,第二次不派发。

zero-budget

输入:


{
  "max_tool_calls": 0
}

期望:


{
  "status": "BUDGET_EXCEEDED",
  "tool_calls": 0
}

预算为0时不能先执行再计费。

完成条件

  • 推进正常轨迹到终态

  • 正确识别重复ID和零预算的终止点

反馈层次

  • 提交预测后显示结果;允许跳过预测但记录跳过,不阻止阅读

  • 结果同时显示状态变化、原因与被拒绝动作;不是只给红绿灯

  • 第一次错误给边界提示,第二次提供最小反例;参考推导始终可主动打开

  • 重置恢复固定初始状态并保留历史尝试供用户手动清除

无障碍与静态替代

  • 全部操作有原生button/input/select替代,不依赖拖拽

  • 图与动画提供同步文字状态表;支持prefers-reduced-motion

  • 状态改变用aria-live=polite摘要,不逐字朗读长日志

  • 焦点不跳走;错误提示关联输入;颜色不是唯一编码

无JavaScript时直接展示初始输入、规则和黄金案例表,读者仍能完成纸面推演。状态动画仅作解释,不能成为获取答案的唯一途径。

持久化与重置

使用版本化键agent-course:1:I02,仅保存本地学习状态。支持单卡重置和全站清除;存储失败时以内存模式继续,不阻断阅读。

必须避免的误导

显示的是脚本模型事件,不是真实模型推理或隐藏思维过程。

执行边界

纯本地教学状态机;不执行任意代码,不连接真实资金/模型/宿主Shell。