I17 · 互动推演
重试、取消与预算放大
看清多层重试乘法和取消不等于回滚。
合成教学数据 · 未运行真实模型静态推演与完整规格
I17 重试、取消与预算放大
关联章节:M08 · 交互类型:retry-budget · 状态:提供完整状态/验收规格,UI待实现
教学目标
看清多层重试乘法和取消不等于回滚。
初始状态
{
"layers": [
3,
3,
3
],
"cancel_requested": false,
"external_state": "NOT_SENT"
}
操作控件
调整三层最大尝试次数1–5
计算最坏请求数
在提交前/后取消
选择用户可见状态
重置
状态变化规则
每层独立可重试时,最坏尝试数为乘积,不是总和。
取消后禁止新的动作,已发外部请求可能继续;结果未知时进入RECONCILING。
黄金案例与反馈
amplification
输入:
{
"layers": [
3,
3,
3
]
}
期望:
{
"max_leaf_attempts": 27
}
最大重试数与最大尝试数必须区分;本输入明确是尝试次数。
cancel-before
输入:
{
"external_state": "NOT_SENT",
"cancel": true
}
期望:
{
"state": "CANCELLED"
}
可以在未派发时终止。
cancel-after
输入:
{
"external_state": "SENT_UNKNOWN",
"cancel": true
}
期望:
{
"state": "RECONCILING"
}
不能告诉用户资金变化已回滚。
完成条件
正确算乘积
区分取消请求与终止/回滚
反馈层次
提交预测后显示结果;允许跳过预测但记录跳过,不阻止阅读
结果同时显示状态变化、原因与被拒绝动作;不是只给红绿灯
第一次错误给边界提示,第二次提供最小反例;参考推导始终可主动打开
重置恢复固定初始状态并保留历史尝试供用户手动清除
无障碍与静态替代
全部操作有原生button/input/select替代,不依赖拖拽
图与动画提供同步文字状态表;支持prefers-reduced-motion
状态改变用aria-live=polite摘要,不逐字朗读长日志
焦点不跳走;错误提示关联输入;颜色不是唯一编码
无JavaScript时直接展示初始输入、规则和黄金案例表,读者仍能完成纸面推演。状态动画仅作解释,不能成为获取答案的唯一途径。
持久化与重置
使用版本化键agent-course:1:I17,仅保存本地学习状态。支持单卡重置和全站清除;存储失败时以内存模式继续,不阻断阅读。
必须避免的误导
不通过前端setTimeout模拟“真实进程已被杀死”。
执行边界
纯本地教学状态机;不执行任意代码,不连接真实资金/模型/宿主Shell。