上下文预算分配台
在有限预算下保留不可丢失状态并标出压缩代价。
合成教学数据 · 未运行真实模型静态推演与完整规格
I07 上下文预算分配台
关联章节:M03 · 交互类型:budget-composer · 状态:提供纯逻辑参考函数,UI待实现
教学目标
在有限预算下保留不可丢失状态并标出压缩代价。
初始状态
{
"budget_units": 100,
"blocks": [
{
"id": "rules",
"size": 20,
"required": true
},
{
"id": "task",
"size": 15,
"required": true
},
{
"id": "pending_op",
"size": 15,
"required": true
},
{
"id": "evidence",
"size": 30,
"required": false
},
{
"id": "old_logs",
"size": 70,
"required": false
}
],
"selected": [
"rules",
"task",
"pending_op",
"evidence"
]
}
操作控件
选取/移除块
将旧日志压缩到15单位
预算滑块50–150
检查约束
查看丢失事实警告
状态变化规则
预算单位是教学长度单位,不是Provider token。
必需块不可无声删除;允许尝试但显示硬失败。
压缩旧日志会生成派生块并保留来源,不代表语义保真已证实。
黄金案例与反馈
base
输入:
{
"selected": [
"rules",
"task",
"pending_op",
"evidence"
]
}
期望:
{
"used": 80,
"feasible": true
}
余量20;是否有足够证据仍要任务评测。
all
输入:
{
"selected": [
"rules",
"task",
"pending_op",
"evidence",
"old_logs"
]
}
期望:
{
"used": 150,
"feasible": false
}
超预算50。
drop-op
输入:
{
"selected": [
"rules",
"task",
"evidence"
]
}
期望:
{
"used": 65,
"feasible": false,
"missing": [
"pending_op"
]
}
更短却丢失未确认操作状态。
完成条件
找到一份可行上下文
演示省长度但破坏不变量的方案
反馈层次
提交预测后显示结果;允许跳过预测但记录跳过,不阻止阅读
结果同时显示状态变化、原因与被拒绝动作;不是只给红绿灯
第一次错误给边界提示,第二次提供最小反例;参考推导始终可主动打开
重置恢复固定初始状态并保留历史尝试供用户手动清除
无障碍与静态替代
全部操作有原生button/input/select替代,不依赖拖拽
图与动画提供同步文字状态表;支持prefers-reduced-motion
状态改变用aria-live=polite摘要,不逐字朗读长日志
焦点不跳走;错误提示关联输入;颜色不是唯一编码
无JavaScript时直接展示初始输入、规则和黄金案例表,读者仍能完成纸面推演。状态动画仅作解释,不能成为获取答案的唯一途径。
持久化与重置
使用版本化键agent-course:1:I07,仅保存本地学习状态。支持单卡重置和全站清除;存储失败时以内存模式继续,不阻断阅读。
必须避免的误导
不自动推断任务成功率;这张卡只检查预算与必需信息。
执行边界
纯本地教学状态机;不执行任意代码,不连接真实资金/模型/宿主Shell。
逻辑参考
web/reference/engines.mjs中的contextBudget;对应测试在web/reference/engines.test.mjs。UI可复用或等价移植,但不得改变黄金结果。