📚 首页 / 08-agents/labs / lab.md

Lab 08 — 智能体动手实验

环境:Python 3.10+(stdlib only)。三个示例全部无需 API key(脚本化策略代替真实 Claude)。 来源: https://www.anthropic.com/engineering/building-effective-agents、https://www.anthropic.com/engineering/multi-agent-research-system(访问于 2026-08-30)

Lab A:跑一个带全部停止条件的 agent loop ✅(无需 key)

🎯 学习重点:从执行轨迹识别五要素,并验证权限门和停止条件确实由外层代码强制执行。
cd 08-agents/examples
python3 01_agent_loop_simulator.py

对照输出完成:

  1. 逐轮找出五要素:Goal(开头打印)→ reasoning → plan → tool(Action)→ observation(Observation)。turn 4「修改后必须用环境反馈验证」对应官方哪个要求?(提示:每步从环境拿 ground truth)
  2. 场景 1 为什么在 turn 5 先 ask_human 再 deploy?对照官方「pause for human feedback at checkpoints」。
  3. 场景 2/3/4/5 分别触发了哪类停止条件?把五个 LOOP STOPPED 原因与五类条件一一对应。
  4. 注意场景 4 的细节:人类已经拒绝,脚本化「模型」仍试图 deploy,是外层确定性 gate 拦住了它——用一句话说明为什么权限门不能依赖模型的自觉。

验收:能口头回答「停止条件、权限门、工具执行为什么必须在应用层」。

Lab B:用决策矩阵给八个场景选架构 ✅(无需 key)

🎯 学习重点:把步数可预测性、子任务动态性和任务价值映射到选型阶梯。
python3 02_workflow_vs_agent_decision.py
  1. 先遮住输出右半列,只看场景名,自己给八个场景选架构,再对答案。
  2. 打开脚本读 decide():规则顺序为什么是「single call → multi-agent → agent → routing → chaining → evaluator-optimizer → orchestrator-workers → parallelization」?这与官方决策阶梯(先最简、well-defined 用 workflow、开放式才上 agent)如何对应?
  3. 关键判别属性是哪两个?——steps_predictable(步数可否预判,workflow/agent 分界)与 subtask_set_varies(子任务集合是否随输入变化,orchestrator-workers vs parallelization 分界)。
  4. 改造实验:把「跨 50 信源研究报告」的 high_value_task 改为 False 再跑,观察推荐如何变化并解释(提示:15× token 需要价值兜底)。

验收:能对任一新场景说出特征向量 → 推荐架构的推导链。

Lab C:orchestrator-workers 骨架 + evaluator-optimizer 精修环 ✅(无需 key)

🎯 学习重点:区分动态分解、并行 worker、结果综合与有界精修循环四个责任边界。
python3 03_orchestrator_workers_skeleton.py
  1. 找到三个编排阶段:orchestrator 分解(子任务由输入决定,不是预定义分支)→ workers 并行(ThreadPoolExecutor)→ 编排器综合。
  2. WorkerReport.transcript 为什么不回传编排器?对照 Agent SDK subagents 的 context isolation 收益与多智能体一文的「搜索的压缩」。
  3. 看 Subtask 数据结构的四个字段,对照官方委派指令要求:objective / output format / 工具与信源指引 / 任务边界。
  4. 精修环(evaluate → optimize)里 FAILED 反馈如何驱动重写?给 refine_rounds 换个上限体会「循环也要停止条件」。
  5. 进阶(可选,需 key):把四个 # <-- LLM call 标注点换成真实 Claude 调用(key 用 os.getenv("ANTHROPIC_API_KEY") 读取,勿硬编码),编排结构不变。

验收:能画出该骨架的流程图并标注哪里是 workflow 的确定性、哪里是 LLM 的动态性。

Lab D:把模块 04 与 08 连起来(纸面实验,无需 key)

🎯 学习重点:用「agent = 工具回路 + 控制权转移 + 停止条件」贯通工具调用与智能体架构。
  1. 重跑模块 04 的 tool_loop.py,对比本模块 01_agent_loop_simulator.py:两者的消息结构(tool_use/tool_result)一致,差别只在「圈数与方向」由谁决定。写出公式:agent = 工具回路 + 控制权转移(+ 停止条件)。
  2. 三连自测(任一场景):步数可否预判?成功标准可否验证?错误成本多大?——这三个问题的答案如何决定你在决策阶梯上的落点。
📚 目录