长时间范围Agent
METR 的 2024-2025 测量显示,Agent 在 1 小时任务上得分 50%,但在 8 小时任务上仅得分 10%。差距不是线性的——它是超线性的。每个额外小时的人类等价工作需要不成比例更多的 Agent 步骤,因为错误累积、上下文衰减和工具失败复合。当前 Agent 在约 30 分钟...
长时间范围 Agent — METR 曲线, 8 小时工作日, 扩展瓶颈
METR 的 2024-2025 测量显示,Agent 在 1 小时任务上得分 50%,但在 8 小时任务上仅得分 10%。差距不是线性的——它是超线性的。每个额外小时的人类等价工作需要不成比例更多的 Agent 步骤,因为错误累积、上下文衰减和工具失败复合。当前 Agent 在约 30 分钟时达到实际挂钟极限;超过这个时间,可靠性急剧下降。本课程将长时间范围能力视为工程约束而非研究抱负:哪些架构选择将有效工作范围从分钟推到小时?
类型: 学习 语言: Python (stdlib) 前置条件: Phase 14 (Agent 工程) 时间: ~60 分钟
问题
大多数 Agent 演示运行 5-15 分钟。真实工作需要数小时。当 Agent 运行更长时间时,三件事出错:
- 错误累积。 第 10 步的小错误成为第 50 步的巨大错误。Agent 在错误假设上构建。
- 上下文衰减。 Agent 忘记了 30 步前读过的内容。上下文窗口填满;早期信息被驱逐。
- 工具失败复合。 API 限速、网络超时、文件锁。每次失败都需要重试;重试消耗预算和时间。
METR (Model Evaluation & Threat Research) 在 2024-2025 年的评估量化了这一点:Agent 在 1 小时人类等价工作上得分约 50%,但在 8 小时工作上仅约 10%。曲线不是线性的——它是超线性的衰减。
概念
METR 测量
METR 评估框架测量 Agent 在不同时间预算下的性能。关键发现:
- 1 小时任务: 前沿 Agent 得分约 50%。
- 4 小时任务: 约 25%。
- 8 小时任务: 约 10%。
衰减是超线性的。每个额外小时需要更多 Agent 步骤,更多步骤意味着更多失败机会。
扩展瓶颈
上下文窗口饱和。 Agent 读取文件、运行命令、获取结果。每个工具调用添加到上下文。到 50 次工具调用时,上下文已满,Agent 忘记了早期信息。
工具可靠性。 单个工具 99% 的可靠性意味着 100 次调用后约 37% 的失败概率。长时间范围 Agent 进行数百次工具调用。
规划退化。 Agent 在第 1 步制定的计划到第 50 步时已过时。环境变化,工具返回意外结果,计划需要修订。但修订计划本身消耗步骤。
将工作范围从分钟推到小时的架构选择
检查点和恢复。 持久化 Agent 状态到检查点。崩溃时,从最后一个检查点恢复。LangGraph 的运行时在每个超步后写入检查点。
子 Agent 隔离。 将长任务分解为子任务,每个由独立子 Agent 处理。父 Agent 维护计划;子 Agent 有新鲜上下文窗口。Anthropic 的研究系统使用此模式。
记忆外部化。 不在上下文窗口中保留所有信息,而是写入外部存储(文件、数据库、向量存储)。Agent 按需检索。生成式 Agent 的记忆流 (Park 2023) 是参考实现。
渐进式精炼。 不追求一步完美,而是产生粗略草稿,然后迭代精炼。每轮可以独立验证。
带预算的自动重试。 工具调用失败时自动重试,但带封顶预算。指数退避 + 最大重试次数。
8 小时工作日意味着什么
8 小时人类等价工作意味着:
- 约 200-500 次工具调用(假设每分钟 1-2 次调用)。
- 约 50-100 个不同的文件或 API 端点交互。
- 约 10-20 个子任务,每个需要 15-30 分钟的 Agent 工作。
- 约 5-10 个需要修订计划的意外障碍。
当前 Agent 在约 30 分钟时达到实际极限。超过这个时间,可靠性急剧下降。从 30 分钟到 8 小时的差距是 2026 年的核心工程挑战。
当前最先进水平
截至 2026 年 4 月:
- Claude Code 可以运行数小时用于代码库级任务,使用子 Agent 和检查点。
- Devin 运行带浏览器和终端访问的长时间范围编码任务。
- Anthropic 研究系统 使用 15 倍 token 预算运行 10+ 子 Agent 进行深度研究。
所有三个都使用相同的模式:子 Agent 隔离 + 检查点 + 外部记忆。
构建它
code/main.py 模拟长时间范围 Agent 执行,展示错误累积和上下文衰减。比较三种策略:
- 朴素单循环。 一个 Agent,一个上下文窗口,无检查点。
- 带检查点。 定期持久化状态;从故障恢复。
- 子 Agent 隔离。 将任务分解为子任务,每个由独立子 Agent 处理。
运行:
python3 code/main.py
预期输出:朴素方法在约 30 步后可靠性下降。检查点帮助恢复但上下文仍衰减。子 Agent 隔离保持可靠性最长时间。
使用它
outputs/skill-long-horizon-extender.md 设计将 Agent 工作范围从分钟推到小时的策略。
练习
- 运行
code/main.py。比较三种策略的可靠性曲线。子 Agent 隔离在什么步数后开始明显胜出? - 添加记忆外部化:Agent 将关键信息写入文件,稍后检索。这如何改变上下文衰减曲线?
- 阅读 METR 评估报告。识别一个当前 Agent 在 8 小时任务上失败的具体任务类型。什么架构改变会帮助?
- 设计一个需要 4 小时人类工作的任务。将其分解为子任务。估计每个子任务的 Agent 步骤数。总步骤数与 METR 的超线性衰减预测相比如何?
- 实现渐进式精炼变体:Agent 产生粗略草稿,然后运行 3 轮精炼。每轮独立验证。与单次通过方法比较质量。
关键术语
| 术语 | 人们怎么说 | 实际含义 |
|---|---|---|
| METR 曲线 | ”时间 vs 准确性” | Agent 性能随任务长度超线性衰减。 |
| 长时间范围 | ”8 小时任务” | 需要数小时人类等价工作的任务。 |
| 上下文衰减 | ”Agent 忘记了” | 上下文窗口填满时早期信息丢失。 |
| 错误累积 | ”错误复合” | 小错误在后续步骤中变成大错误。 |
| 检查点 | ”保存状态” | 持久化 Agent 状态以从故障恢复。 |
| 子 Agent 隔离 | ”新鲜上下文” | 每个子任务获得独立上下文窗口。 |
| 记忆外部化 | ”写入磁盘” | 将信息存储在上下文窗口外。 |
| 渐进式精炼 | ”多轮改进” | 产生粗略草稿,然后迭代改进。 |
延伸阅读
- METR evaluations — Agent 时间范围测量
- Anthropic — Multi-agent research system — 子 Agent + 检查点的生产实现
- Park et al. — Generative Agents — 记忆流架构