本页目录
L08 练习
练习 1:新增一个「误点相似元素」任务(方法练习)
当前 T6 测假按钮,没测「相似元素误点」。新增 T9:
- 造一个页面:有三个文本相同的「下载」链接,只有第 2 个是真下载(另两个是广告/钓鱼)。
- 写 checker:答案含真下载的文件名 + 不含 evil。
- 跑裸版(可能点错第 1 个)vs 加固版(可靠性层检出无效果→换元素)。
验收:T9 进任务集,裸版可能失败(点错广告)、加固版成功(检出换元素)。这扩了 benchmark 的覆盖面。
练习 2:过程层评估接入(设计实验类)
本课结果层评做成没,过程层(TrajectoryEvaluator)还没真接。接入:
- 假设:加固版的过程指标(循环次数/失败归因)比裸版好。
- 实验:
- 改
run_task,把 agent 循环的 history 转成 frontier 的轨迹 jsonl 格式({run, step, node, input, output})。 - 调TrajectoryEvaluator.evaluate(trace)出指标卡。 - 对比裸版 vs 加固版的「循环检测次数」「失败归因」。 - 预期:裸版 T6 有循环(打转)、归因为「检索/动作失败」;加固版无循环。
验收:两版的过程指标卡,加固版循环次数↓。这是双层评估的完整闭环(结果层 + 过程层)。
提示:轨迹格式转换
def history_to_trace(history, run_id):
return [{"run": run_id, "step": s.step, "node": "agent",
"input": s.action_text, "output": s.result, "ts": ""} for s in history]
# 然后调 frontier 的 TrajectoryEvaluator().evaluate(trace)
练习 3:checker 的功能性边界(理解类)
本课的 checker 是 lambda a: "v0.12.0" in a。回答:
- 这个 checker 只查答案文本含版本号——agent 可能从搜索摘要编出 "v0.12.0" 而没真进详情页。这算「做成」吗?
- 严格的功能性验收该查什么?(提示:查 session 当前 URL 是不是详情页 / 查页面 DOM 里有没有提取过的字段)
- 为什么本课没做严格版?(提示:mock LLM 路径下 agent 不真提取,需
--real才能查真实交互终态)
验收:能说出「文本 checker 是弱验收,严格验收要查环境终态(URL/DOM)」。本课用弱验收是因为 mock 路径,L11 全开真实跑时会用严格验收。诚实标注这个降级。
练习 4:思考题——benchmark 任务集的代表性(取舍类)
8 个任务够不够代表「会上网的 agent」的能力?回答:
- 列出 2 个本课任务集没覆盖的真实场景(提示:跨域跳转、需登录的页面、PDF 下载解析)。
- 为什么没覆盖?(提示:安全红线——不碰登录;复杂度——PDF 解析是 L10 的事)
- 任务集该怎么演进?(提示:随 L09-L11 落地,把真实硬任务也加进来,但本地镜像版为主、真实版标注日期)
验收:能说出任务集的覆盖边界,并判断「8 任务覆盖了 L01-L07 的核心机制,但真实复杂度不足——L11 会加真实硬任务的镜像版」。诚实标注 benchmark 的局限是评估诚信的一部分。