前置知识: AI Agent

长时间范围Agent

00:00
9 min Intermediate

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 运行更长时间时,三件事出错:

  1. 错误累积。 第 10 步的小错误成为第 50 步的巨大错误。Agent 在错误假设上构建。
  2. 上下文衰减。 Agent 忘记了 30 步前读过的内容。上下文窗口填满;早期信息被驱逐。
  3. 工具失败复合。 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 执行,展示错误累积和上下文衰减。比较三种策略:

  1. 朴素单循环。 一个 Agent,一个上下文窗口,无检查点。
  2. 带检查点。 定期持久化状态;从故障恢复。
  3. 子 Agent 隔离。 将任务分解为子任务,每个由独立子 Agent 处理。

运行:

python3 code/main.py

预期输出:朴素方法在约 30 步后可靠性下降。检查点帮助恢复但上下文仍衰减。子 Agent 隔离保持可靠性最长时间。

使用它

outputs/skill-long-horizon-extender.md 设计将 Agent 工作范围从分钟推到小时的策略。

练习

  1. 运行 code/main.py。比较三种策略的可靠性曲线。子 Agent 隔离在什么步数后开始明显胜出?
  2. 添加记忆外部化:Agent 将关键信息写入文件,稍后检索。这如何改变上下文衰减曲线?
  3. 阅读 METR 评估报告。识别一个当前 Agent 在 8 小时任务上失败的具体任务类型。什么架构改变会帮助?
  4. 设计一个需要 4 小时人类工作的任务。将其分解为子任务。估计每个子任务的 Agent 步骤数。总步骤数与 METR 的超线性衰减预测相比如何?
  5. 实现渐进式精炼变体:Agent 产生粗略草稿,然后运 3 精炼。每独立验证。与次通过方法比较质量。

关键术语

术语们怎么说实际含义
METR 曲线时间 vs 准确性”Agent 性能任务线性衰减。
时间范围”8 小时任务”需要数小时等价工作任务
上下文衰减”Agent 忘记了”上下文窗口填满时早期信息丢失。
错误累积错误复合”错误在后续步骤中变成大错误
检查点”保存状态持久化 Agent 状态以从故障恢复
Agent 隔离”新鲜上下文每个任务获得独立上下文窗口
记忆外部化写入磁盘”信息存储在上下文窗口外。
渐进式精炼改进产生粗略草稿,然后迭代改进。

延伸阅读

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式