Agent Engineering 课程阅读

在 GitHub 查看原文

本页目录

L06 练习

练习 1:设计实验验证「CodeAct vs 工具调用」的能力边界(设计实验类)

本课定性说了"代码比工具强"。设计实验量化:

  1. 构造 5 个任务(难度递增): - 简单:算一个表达式的值(工具和代码都能做) - 中等:对 10 条数据排序去重(工具要专门定义,代码一次搞定) - 难:分组统计 + 可视化(工具做不动) - 更难:多步数据处理管道(过滤→分组→排序→格式化) - 极难:递归计算(如斐波那契)

  2. 对比: - 工具调用方式:只给 calculate(expr) 一个工具,看哪些任务做不了 - CodeAct 方式:给沙箱,看哪些任务能做

  3. 预期:简单任务两者都能,复杂任务只有 CodeAct 能。

验收:输出能力对比表,标出每个任务"工具能/不能""CodeAct能/不能"。诚实标注:工具调用如果给够工具(分组工具、统计工具、可视化工具...)也能做,但每个新需求要加工具——这就是 CodeAct 的优势。


练习 2:升级沙箱到容器级

本课用进程级沙箱。升级到 Docker 容器级:

  1. 写一个 Dockerfile,只含 Python + 安全标准库。
  2. sandbox_exec 改为 docker run --rm --network=none --memory=256m --cpus=0.5 执行。
  3. 对比进程级 vs 容器级:安全性、延迟、资源限制。

验收:容器级沙箱能执行代码且网络完全隔离(--network=none)。诚实标注:容器级延迟更高(启动容器约 1-2 秒),适合非实时场景。

需要 Docker 环境。没有 Docker 时标注"未实测",给出实现方案。


练习 3:实现代码执行结果的缓存

同一个代码可能被多次执行(不同任务生成了相同代码)。实现:

  1. 代码 hash → 执行结果的缓存(dict 或 sqlite)。
  2. 相同代码直接返回缓存结果,不重复执行。
  3. 思考:什么时候缓存安全?(纯函数无副作用时;有 print/IO 时不安全)

验收:重复执行相同代码时命中缓存(执行次数不增加)。标注:只缓存纯计算代码,有 IO 副作用的不缓存。