I11 · 互动推演
等待批准时,Worker去了哪里?
业务等待应持久化,不占用运行线程空转。
合成教学数据 · 未运行真实模型静态推演与完整规格
I11 等待批准时,Worker去了哪里?
关联章节:M05 · 交互类型:state-machine · 状态:提供完整状态/验收规格,UI待实现
教学目标
业务等待应持久化,不占用运行线程空转。
初始状态
{
"status": "RUNNING",
"lease_held": true,
"approval": "pending",
"version": 1
}
操作控件
进入等待
尝试claim
批准并恢复入队
重复批准
取消
切换非法转移
状态变化规则
RUNNING→WAITING_APPROVAL保存提案并释放lease。
等待中claim拒绝;有效批准通过事务转换QUEUED并写Outbox。
重复批准不创建第二次唤醒;终态不恢复执行。
黄金案例与反馈
wait
输入:
[
"wait",
"claim"
]
期望:
{
"status": "WAITING_APPROVAL",
"lease_held": false,
"claim": "NOT_RUNNABLE"
}
等待时间不是工具执行时间。
approve-twice
输入:
[
"wait",
"approve",
"approve"
]
期望:
{
"status": "QUEUED",
"new_dispatch_messages": 1
}
恢复与去重须在同一受版本保护的事务里。
terminal
输入:
[
"cancel",
"approve"
]
期望:
{
"status": "CANCELLED",
"new_dispatch_messages": 0
}
旧批准不能复活终态任务。
完成条件
演示等待释放资源
两次批准只唤醒一次
反馈层次
提交预测后显示结果;允许跳过预测但记录跳过,不阻止阅读
结果同时显示状态变化、原因与被拒绝动作;不是只给红绿灯
第一次错误给边界提示,第二次提供最小反例;参考推导始终可主动打开
重置恢复固定初始状态并保留历史尝试供用户手动清除
无障碍与静态替代
全部操作有原生button/input/select替代,不依赖拖拽
图与动画提供同步文字状态表;支持prefers-reduced-motion
状态改变用aria-live=polite摘要,不逐字朗读长日志
焦点不跳走;错误提示关联输入;颜色不是唯一编码
无JavaScript时直接展示初始输入、规则和黄金案例表,读者仍能完成纸面推演。状态动画仅作解释,不能成为获取答案的唯一途径。
持久化与重置
使用版本化键agent-course:1:I11,仅保存本地学习状态。支持单卡重置和全站清除;存储失败时以内存模式继续,不阻断阅读。
必须避免的误导
恢复与取消分支为项目规格,不能称现有RunLedger内核已完整实现。
执行边界
纯本地教学状态机;不执行任意代码,不连接真实资金/模型/宿主Shell。