首页 › ai-agents › 自主智能体35分钟墙:目标漂移

自主智能体正在两条相互背离的曲线上狂奔。基准曲线上,METR 测得前沿模型可独立完成的任务时长(人类专家同等耗时、50% 成功率)每 4–7 个月翻一倍,从 2025 年初 Claude 3.7 Sonnet 的约 50 分钟,飙到 2026 年中"一条提示撑起 14 小时"的量级。生产曲线上,几乎所有部署团队撞上同一堵墙:连续自主运行约 35 分钟、累计约 1000 次工具调用后,智能体开始静默退化——不报错、不崩溃,只是逐渐答非所问。这堵"35 分钟墙"不是模型能力问题,而是目标漂移(goal drift)与上下文腐烂(context rot)的复合利息在基准测试的洁癖环境里被刻意抹掉、却在真实噪声里加倍计提。本文把这层"续航"鸿沟拆开量,给出可落地的目标锚定、子智能体交接、漂移 SLO 三套对策。

一、续航标尺:METR 的 50% 时间跨度律

衡量一个自主智能体能"撑多久",METR(Model Evaluation & Testing Research)给出的不是 token 数、不是步数,而是一个反直觉的量——任务完成时间跨度(task-completion time horizon):以人类专家完成该任务所需的真实时长为刻度,取智能体能以 50% 成功率独立完成的那一档时长。换句话说,若人类专家要 1 小时搞定的活,模型独立做下来有五成把握成,则它的续航标尺就是 1 小时。

这条标尺的惊人之处在于它指数增长:原始论文测得每约 7 个月翻倍,2026 年的复测把速率上修到约 4 个月。把它套到时间轴上,能算出每个代际的"理论续航":

# Estimate agent autonomy horizon under METR's observed doubling law
import math

def horizon(months_since_2019, h0=8.0, doubling=7.0):
    # h0 ~ 8 min baseline (~2019, GPT-3 era); doubling period in months
    return h0 * (2 ** (months_since_2019 / doubling))

for label, m in [("2022-11 ChatGPT", 36),
                 ("2025-02 Claude 3.7 Sonnet", 74),
                 ("2026-06 (now)", 90)]:
    print(f"{label:24s} -> {horizon(m):6.1f} min @ 50% success")
# Claude 3.7 lands ~50 min, matching METR's measured value.

理论上,到 2026 年中前沿模型应能"一条提示跑满 14 小时"。但这是基准续航——在 METR 精心清洗过的任务集上、单线程、无外部噪声、目标一成不变。把它当采购指标,是这场讨论里最大的坑。

二、35 分钟墙:基准续航与生产续航的鸿沟

生产环境的真实曲线是另一副面孔。多家部署团队的遥测指向同一个拐点:连续自主运行越过约 35 分钟,或累计工具调用越过约 1000 次,任务失败率开始陡升,质量滑坡不是线性而是悬崖式。这就是"35 分钟墙(the 35-minute cliff)"。

为什么基准 50 分钟、生产 35 分钟会同时成立?关键在于退化起点 ≠ 完成终点。METR 的 50% 跨度衡量的是"能不能整个做完",35 分钟墙衡量的是"质量从哪一刻开始掉"。两者并不矛盾:智能体在第 35 分钟开始走神,但惯性还能撑到第 50 分钟勉强交差——而第 35 到 50 分钟这 15 分钟产出的,恰恰是最容易埋雷的部分。生产环境比基准多了三样基准刻意剔除的东西:目标的隐式漂移、上下文里堆积的无关中间产物、以及副作用工具带来的不可逆状态污染。这三样一旦叠加,35 分钟墙就会从基准的"软拐点"变成生产的"硬悬崖"。

把这条鸿沟量化成一句话:自主智能体的真实续航,约等于基准续航打六到七折,再被任务噪声二次惩罚。 谁按基准续航去排产、去承诺 SLA,谁就会在第三十五分钟集体翻车。

三、退化三象速查表

退化现象 触发阈值 内在机理 典型症状 首选对策
35 分钟墙 连续自主 ~35 min 注意力/指令保真随步数衰减 后段步骤质量悬崖式下滑 子智能体交接、预算熔断
上下文腐烂 累计 ~1000 次工具调用 历史中间产物稀释目标信号 该读的记不住、该舍的删不掉 摘要下沉、上下文卸载
目标漂移 跨长上下文累积 上下文压力悄然改写目标 "做完了,但答非所问" 目标锚定、周期重锚

三者并非独立——上下文腐烂放大目标漂移,目标漂移触发无效的副作用调用,副作用又污染状态、加速撞墙。所以对策必须成体系,单点修补收益有限。

四、千次调用后的上下文腐烂

上下文腐烂(context rot)是目标漂移的燃料。机理很朴素:上下文窗口不是越满越好,而是越满越烂。每一次工具调用的返回、每一段中间推理,都会往窗口里塞进与当前子目标相关性递减的内容。当这些"历史沉积物"累积到一定密度,原始目标在整个注意力分布里的权重被稀释,模型开始把旧上下文里某个偶然细节当作新目标,或对真正的目标指令"视而不见"。

研究给出量化拐点:上下文质量随输入 token 增长呈结构性退化,而非缓慢线性下降;约在累计 1000 次工具调用附近进入快速劣化区。这解释了为什么"再加点上下文"往往是反效果——你以为在帮它,其实在加速腐烂。对策的核心不是"放更多",而是周期性下沉与卸载:把已完成的子任务产物摘要后移出主窗口,只保留目标锚点与当前待办。

# Treat endurance as an SLO: cap continuous context, force compaction+reanchor
def agent_step(state):
    state.calls += 1
    # the empirically observed rot threshold ~1000 tool calls
    if state.calls % COMPACTION_EVERY == 0 or state.tokens > ROT_BUDGET:
        state.history = compact(state.history, keep=[state.goal_anchor,
                                                     state.current_subtask])
        state.calls = 0          # reset the rot clock on a clean window
    return act(state)

注意:压缩本身要谨慎——暴力截断会把目标也一起截掉,这正是"继承式漂移"的温床。压缩的保底规则只有一条:目标锚点永不移出窗口。

五、目标漂移:答非所问的"静默退化"

目标漂移是三者里最阴险的——它不报错、不崩溃、日志全绿。一个智能体可以一路绿灯跑完 50 步,最后交付一个技术上无懈可击、却完全偏离原始意图的产物。AAAI AIES 的《Evaluating Goal Drift in Language Model Agents》与 arXiv 2505.02709 把它定义为:智能体行为随执行推进,渐进式偏离人类最初设定的目标,且偏离过程对常规日志不可见。

为什么难抓?因为漂移不是某一步"做错",而是目标在长上下文里被悄然改写。一段中间上下文里反复出现的某个实体、某次工具返回里夹带的强信号,会慢慢变成模型眼里的"真正目标"。当人类事后核对,看到的每一步都"合理",拼起来却是另一个故事。livleavitt/goal-drift-study 与 Anchor Research 这类长期智能体安全项目,正专门围绕它产出检测工具与评测协议。

把它和"继承式漂移"做个切割:后者聚焦的是跨上下文窗口的文本输出漂移(同一模型在不同上下文压力下输出风格/内容的偏移,已有多模型横评覆盖);本文谈的是自主执行过程中的目标语义漂移——前者是输出层的表征问题,后者是执行层的意图保真问题,对策栈完全不同。

六、漂移可量化:三种漂移与漂移分数

好消息是,漂移不再只是体感。arXiv 2601.04170《Agent Drift: Quantifying Behavioral Degradation in Multi-Agent LLM Systems》把生产中的行为退化拆成三类可测漂移,并给出可计算的漂移分数(drift score)框架,让"越跑越歪"第一次有了刻度:

# Lightweight goal-drift score: embed original goal, score step relevance
def drift_score(goal_vec, step_vecs, window=20):
    sims = [cosine(goal_vec, v) for v in step_vecs]
    drift = [1 - s for s in sims]                 # higher = more drifted
    # rolling window mean -> smooths transient dips
    return moving_average(drift, window)

# Wire it as a runtime check; alert before silent miss becomes a delivery
if drift_score(GOAL_VEC, recent_steps) > 0.40:
    raise GoalDriftExceeded(grounding_required=True)

理论分析表明,这三类漂移可在被检出后显著削减漂移相关错误,前提是部署了持续的漂移监测而非事后抽检。一句话:漂移必须像 P99 延迟一样被当作运行时指标盯,而不是上线前评测一次了事。

七、对策一:目标锚定与周期重锚

最朴素也最有效的续航延长术,是把目标从"开头说一次"改成"周期性重锚"。机理直白:上下文腐烂稀释目标权重,那就在固定步频把目标重新钉回窗口顶部。重锚不是简单复读,而是带着进度做状态化注入——告诉智能体"原目标是 X,已完成 Y,当前应聚焦 Z",既抵消腐烂,又顺带校正已发生的轻微漂移。

# Countermeasure 1: periodic goal re-grounding every N steps
GOAL = state.original_goal
for step in agent_loop():
    if step.n % RE_GROUND_EVERY == 0:
        step.inject(GOAL_ANCHOR_PROMPT.format(
            goal=GOAL,
            completed=step.completed_subtasks,
            current=step.current_subtask))
    step.forward()

工程上的关键变量是 RE_GROUND_EVERY(重锚步频)。太密则浪费 token、打断思路;太疏则在两次重锚之间漂移已经发生。经验起点是"每约 15–25 步或每当上下文压缩后"重锚一次,并让重锚频率随累计调用数反向缩短——越接近腐烂拐点,锚得越勤。代价是 token 税温和上升,但换来的是续航曲线从悬崖变成平台,这笔账几乎总是划算。

八、对策二:子智能体交接与上下文重置

当单次连续运行逼近 35 分钟墙,最干净的解法不是"撑过去",而是主动交接:在预算耗尽前,把当前状态摘要成一份"交接简报",交给一个全新上下文的子智能体接棒。新智能体的窗口是干净的,没有历史沉积物,目标锚点由简报显式注入——相当于把 35 分钟墙后那一截"烂尾"直接截掉,换成一段新续航。

# Countermeasure 2: hand off to a fresh-context subagent before the wall
def runner(goal):
    agent = spawn(goal=goal)
    while not goal.done:
        if agent.tokens_used > FRESH_CONTEXT_BUDGET or agent.calls > 1000:
            brief = agent.handoff_brief(goal)    # state + goal + next step
            agent = spawn_subagent(goal=goal, brief=brief)  # clean window
        agent.step()

这条对策的精髓是把"一个长跑智能体"重构为"一串短跑智能体的接力赛"。它天然抗上下文腐烂(每棒起点干净)、抗目标漂移(每棒重锚)、抗状态污染(交接简报只携带必要状态)。代价是交接税:摘要会丢信息、接棒者要重新"进入状态"、边界处可能漏掉跨段的隐式依赖。这要求交接简报设计得像一份给新人的 onboarding 文档,而非流水账——把目标、约束、已完成、待办、坑点结构化列出。这与"上下文三态交接"属于同一工程族,但此处目标是续航延长而非断点续传。

九、对策三:把续航做成 SLO 与可观测闭环

第三块拼图是把上面两套对策制度化为运行时 SLO,并配漂移探测闭环。生产侧的做法是给每个自主智能体定义"续航预算":累计步数上限、累计调用上限、漂移分数阈值,三者任一触发即强制走"压缩 + 重锚"或"交接"分支,而非任其撞墙。可观测侧则把三类漂移分数接入面板,像盯延迟和错误率一样盯它。

# Countermeasure 3: endurance as a runtime SLO with drift telemetry
def supervised_runner(goal):
    while not goal.done:
        s = agent.step()
        emit_metric("drift.goal",    drift_score(GOAL_VEC, s.recent))
        emit_metric("drift.distrib", kl_div(s.action_dist, BASELINE))
        if s.drift > 0.40 or s.calls > 1000 or uptime_min(s) > 35:
            if s.calls > 1000 or uptime_min(s) > 35:
                agent = handoff(goal, s)      # near the wall -> fresh context
            else:
                agent = compact_and_reanchor(goal, s)  # mild drift -> re-ground

这套闭环的回报是:把"什么时候智能体会答非所问"从玄学变成可告警的工程事件。原生追踪(trace/span)够你回答"它调用了什么",却回答不了"它是不是还在做对的事"——漂移分数补的正是这一层。把它和现有的工具调用追踪、token 预算熔断拼到一起,自主智能体的"续航工程"才闭环。

自主智能体续航工作流

flowchart TD
    A[原始目标 Goal] --> B[主智能体 Loop]
    B --> C{累计调用 >1000<br/>或 运行 >35min?}
    C -- 否 --> D{漂移分数 >0.40?}
    D -- 否 --> E[正常推进]
    E --> F{步数 % 重锚周期 ==0?}
    F -- 是 --> G[目标锚定重注入<br/>带进度状态化]
    F -- 否 --> B
    G --> B
    D -- 是 --> H[压缩+重锚<br/>历史下沉 目标留窗]
    H --> B
    C -- 是 --> I[生成交接简报<br/>目标+完成+待办+坑点]
    I --> J[spawn 子智能体<br/>干净上下文窗口]
    J --> B
    B --> K{Goal.done?}
    K -- 否 --> B
    K -- 是 --> L[交付]
    M[漂移遥测面板<br/>Goal/Distrib/Perf 三分] -.监控.-> D

整张图的核心思想:把"一条长线跑到底"重构为"被持续监控、周期重锚、到点交接"的闭环。目标锚定对抗日常腐烂,子智能体交接对抗 35 分钟墙,漂移 SLO 对抗静默退化——三者缺一,续航曲线都会在某个拐点重新塌成悬崖。

推荐方案:按场景配续航栈

一句话收尾:自主智能体的竞争力,2026 年起越来越不取决于"模型多强",而取决于续航工程做得多扎实——谁能把 35 分钟墙推到 3 小时、把漂移从玄学变成告警,谁就拿到了自主智能体的真实生产门票。

参考来源

  1. Measuring AI Ability to Complete Long Tasks — METR — 提出"50% 任务完成时间跨度"指标及每约 7 个月翻倍的续航律
  2. Task-Completion Time Horizons of Frontier AI Models — METR — 跨代际模型续航标尺的持续追踪数据(2026 更新)
  3. Evaluating Goal Drift in Language Model Agents — AAAI AIES — 目标漂移的定义、检测方法与实验(含 arXiv 2505.02709 技术报告)
  4. Agent Drift: Quantifying Behavioral Degradation in Multi-Agent LLM Systems — arXiv 2601.04170 — 三类漂移(目标/分布/性能)的量化与漂移分数框架
  5. Context Rot in Production: Why AI Agents Degrade After 1,000 Tool Calls — 生产环境千次调用拐点与"35 分钟墙"的遥测观察

51学通信原创 · AI智能体实战分析(第2轮:自主智能体续航与目标漂移)· 站长爱卫生 微信:gprshome201101

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入