流式参数什么时候才能执行?
完整消息/调用边界与片段文本不能混淆。
合成教学数据 · 未运行真实模型静态推演与完整规格
I03 流式参数什么时候才能执行?
关联章节:M01 · 交互类型:stream-assembler · 状态:提供纯逻辑参考函数,UI待实现
教学目标
完整消息/调用边界与片段文本不能混淆。
初始状态
{
"fragments": [],
"complete": false,
"dispatched": false
}
操作控件
添加下一片段
标记调用已完整结束
尝试解析
尝试派发(只模拟)
切换截断案例
重置
状态变化规则
每个片段只追加缓冲区,不执行工具。
未complete时返回WAITING,即使片段恰好可解析也不授权执行。
complete后解析JSON并校验;失败返回INVALID_JSON或INVALID_ARGUMENTS。
黄金案例与反馈
partial
输入:
{
"fragments": [
"{\"order_",
"id\":\"A100\"}"
],
"complete": false
}
期望:
{
"status": "WAITING"
}
JSON看起来完整与Provider已确认调用完整不是同一信号。
complete
输入:
{
"fragments": [
"{\"order_",
"id\":\"A100\"}"
],
"complete": true
}
期望:
{
"status": "VALID_CANDIDATE",
"arguments": {
"order_id": "A100"
}
}
只产生候选参数;后续仍需工具白名单与授权。
truncated
输入:
{
"fragments": [
"{\"order_id\":"
],
"complete": true
}
期望:
{
"status": "INVALID_JSON"
}
不能猜补订单号。
完成条件
成功演示未完成不派发
截断JSON拒绝
说出解析与授权的差异
反馈层次
提交预测后显示结果;允许跳过预测但记录跳过,不阻止阅读
结果同时显示状态变化、原因与被拒绝动作;不是只给红绿灯
第一次错误给边界提示,第二次提供最小反例;参考推导始终可主动打开
重置恢复固定初始状态并保留历史尝试供用户手动清除
无障碍与静态替代
全部操作有原生button/input/select替代,不依赖拖拽
图与动画提供同步文字状态表;支持prefers-reduced-motion
状态改变用aria-live=polite摘要,不逐字朗读长日志
焦点不跳走;错误提示关联输入;颜色不是唯一编码
无JavaScript时直接展示初始输入、规则和黄金案例表,读者仍能完成纸面推演。状态动画仅作解释,不能成为获取答案的唯一途径。
持久化与重置
使用版本化键agent-course:1:I03,仅保存本地学习状态。支持单卡重置和全站清除;存储失败时以内存模式继续,不阻断阅读。
必须避免的误导
不要把JSON.parse成功包装成安全执行。
执行边界
纯本地教学状态机;不执行任意代码,不连接真实资金/模型/宿主Shell。
逻辑参考
web/reference/engines.mjs中的assembleCall;对应测试在web/reference/engines.test.mjs。UI可复用或等价移植,但不得改变黄金结果。