fara — 本课题摘录
读了哪几篇: 01-agent-loop(主循环:一步是怎么走完的)、04-trajectory-and-resume(轨迹格式与续跑)。
其余四篇(提示词与动作空间、浏览器环境、评测框架、巧妙之处)本轮没读——属界面与评测课题。
这一家贡献两条:一条是停机方式的三分法(含一个诚实的缺陷),一条是"一次运行该怎么落盘"。
它对本课题回答了什么
决定四:三种停机,而且状态各不相同
| 停机方式 | 触发 | 状态 | 最终答案是什么 |
|---|---|---|---|
| 模型主 动结束 | 动作是"终止" | 完成 | 模型给的答案 |
| 交还用户 | 动作是"问用户" | 等待用户 | 那句问题的文本 |
| 步数耗尽 | 循环走完 | 也标成"完成" | 最后一步的观察文本 |
(依据:前沿库 · Fara · 主循环:一步是怎么走完的 —— 三种停机分别是 terminate(COMPLETE)、ask_user_question(WAITING_FOR_USER)、步数耗尽;步数耗尽也被标成 COMPLETE,尽管枚举里有 MAX_ROUNDS 却没被用上)
第三行是这一篇最值钱的地方:步数用完也被标成"完成",枚举里明明有"步数用尽"这个状态却没被用上。
它没放过这个缺陷,而是说清了后果:下游要区分"真的做完了"和"跑超时了",只能靠"最后一个动作是不是终止动作"来判断。 评测那边确实就是这么补的——第一件事就是检查最后一个动作,不是终止动作直接判零分。
这条要抄进配方,而且要抄成反面教材: 停机状态必须区分"完成"和"用尽",不能合并。 一旦合并,判断"这次到底成没成"的责任就转嫁给了下游,而下游只能靠猜。
"交还用户"这一档是很多家没有的。 cline / codex / vercel 都只有"完成 / 上限",没有"我需要问你一句"这个出口。