a↗Agent 工程实战中文课程 / v1.0.0⌕ 搜索课程/
本页目录

L07 参考解:多任务调度与Coding Sandbox的责任边界

这是可讨论的参考设计,不是唯一架构。先完成实验题面,再对照本解。

关键推导

FIFO在同到达案例中完成时间总和27,平均9;SJF总和13,平均4.333。两者makespan都是10,因此“平均完成时间改善”不能写成“总工作量下降”。SJF需要时长信息,真实系统中只能预测并衡量误差与公平性。

C01用(grams+999)//1000*800且先检查type is int与非负。C02构造新列表和新字典,不在遍历原列表时删除;这里只承诺字典浅拷贝,不承诺嵌套对象深拷贝。C03用规范化JSON数组或长度编码保存tenant/user/order/version,避免字符串分隔符碰撞与Python随机hash不稳定。

沙箱是多层边界,不是工具名字。Docker默认配置也不等于满足所有威胁模型;本课程尤其禁止挂载Docker socket、宿主家目录和密钥,并要求外部测试不受Agent修改。

参考算法与实现位置

admit task only if tenant quota AND global budget available
acquire worker/resource lease
run in isolated workspace with bounded tool capability
on cancel: stop new actions → request execution termination → reap process tree
if external operation uncertain: reconcile, do not report rollback
grade candidate patch in a fresh trusted environment

调度可运行版本见scheduling.py;沙箱生命周期是必须实现并验证的规格,不由调度模拟器代替。

应当得到的可检查结果

场景 期望
FIFO任务8/1/1 完成时间8/9/10,平均9
SJF任务8/1/1 1/2/10,平均13/3
长任务t0开始,短任务t1到达 非抢占SJF不会倒流时间
FIFO两个worker makespan=8
运费1001克 1600分,不是800
active_orders 不修改输入,返回新的字典对象
同order不同tenant cache key不同
模型修改测试文件 不改变可信grader结论

怎样判断替代实现是否等价

替代实现必须保留题面中的身份来源、状态归属和失败语义。数据库/框架可以更换,但应把相同故障窗口重新跑一遍。只在正常路径输出一致,不足以证明恢复与授权等价。异步或并发实现还必须解释取消传播、竞争窗口和资源回收。

常见错误与修正

第一类错误是把协议或框架提供的局部保证放大成业务保证:格式正确不等于授权,执行结束不等于业务成功,持久化不等于外部副作用恰好一次。修正方式是找到事实源并把不变量放在拥有该事实的层。

第二类错误是用演示数据替代证据。已有fixture可以检查确定性公式与状态机,但真实模型、网络或容器的结论需要实际运行。报告同时写出“已验证”“仅模拟”“未验证”,比宣称全部完成更有工程价值。

实现范围与限制

包内没有执行任意用户代码的容器服务,也没有内核级隔离测试。网页仅运行确定性数据模拟;不可把浏览器按钮接到宿主Shell。

开放题评分要点

调度与指标25;取消/资源边界25;Coding修复20;可信测试15;隔离威胁模型15。 正确的反例、失败分析和替代方案论证应获得分数;框架堆叠、只报最终成功截图、删除失败成本不应获得同等评价。