-
Notifications
You must be signed in to change notification settings - Fork 70
Expand file tree
/
Copy pathquiz.json
More file actions
90 lines (90 loc) · 3.47 KB
/
Copy pathquiz.json
File metadata and controls
90 lines (90 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{
"lesson": "24-plan-execute-control-flow",
"title": "顶点课 24 —— Plan-Execute 控制流",
"questions": [
{
"stage": "pre",
"question": "在 Plan-Execute agent 中,planner 的职责是什么?",
"options": [
"对每个步骤调用 dispatcher",
"产出一个带类型的有序步骤列表,交由 executor 执行",
"执行超时控制",
"处理 JSON-RPC 传输层"
],
"correct": 1,
"explanation": "Planner 产出结构化计划,Executor 执行。把两者混在一起就是本课要摆脱的 chain-of-thought 陷阱。"
},
{
"stage": "pre",
"question": "为什么 expected_outcome 是 Step 的一部分,即使 executor 并不检查它?",
"options": [
"因为 dispatcher 把它当缓存 key 使用",
"因为它给 replanner 和 tracer 提供了一个可读的成功条件",
"因为注册中心要求它",
"因为模型会用它来训练"
],
"correct": 1,
"explanation": "Replanner 在修订计划时会读它,tracer 在时间线上会渲染它。它是 step 上的一份人类可读契约。"
},
{
"stage": "check",
"question": "当某个步骤失败且 replanner 返回新计划时,executor 在事件流上发出什么?",
"options": [
"什么也不发——replan 是静默的",
"session.complete 并带 status=failed",
"plan.diff,包含被移除、新增和修订的 step id",
"tool.error 后跟 session.start"
],
"correct": 2,
"explanation": "plan.diff 让修订过程可见。静默重写才是我们要避免的 bug。"
},
{
"stage": "check",
"question": "为什么要把 max_steps 和 max_replans 作为两个独立预算?",
"options": [
"因为它们度量不同单位:steps 限制总执行量,replans 限制 planner 被调用的次数",
"因为 asyncio 要求两个都有",
"因为 dispatcher 拒绝无界计划",
"因为注册中心要统计 replan 次数"
],
"correct": 0,
"explanation": "max_replans 抓住不断返回同一份坏计划的 planner。max_steps 抓住不断膨胀的失控计划。"
},
{
"stage": "check",
"question": "当 planner 在第一次调用时就返回空列表,返回的 reason 是什么?",
"options": [
"step_budget",
"replan_budget",
"goal_met",
"no_plan"
],
"correct": 3,
"explanation": "没有计划就没有执行。会话以 reason=no_plan、status=failed 结束。"
},
{
"stage": "post",
"question": "PlanDiff.revised 里装的是什么?",
"options": [
"在旧计划中存在但不在新计划中的 step id",
"在新计划中存在但不在旧计划中的 step id",
"在两次修订之间 tool_name 或 args 发生变化的 step id",
"planner 要求跳过的 step id"
],
"correct": 2,
"explanation": "revised 是在两次修订之间 (tool_name, args) 签名发生变化的 id 集合。"
},
{
"stage": "post",
"question": "当 executor 用尽 max_replans 时,SessionResult.reason 是什么?",
"options": [
"goal_met",
"step_budget",
"replan_budget",
"no_plan"
],
"correct": 2,
"explanation": "replan_budget。status 为 failed。history 中包含所有已运行的步骤,包括触发 replan 的那些失败步骤。"
}
]
}