尧图精选

AI Agent连续工作时长惊人,3.1倍人力背后靠什么支撑?

🕒 发布时间:2026/9/9 13:39:14 📁 来源:尧图网络
3.1倍这个数字在最近AI Agent圈子里刷屏了。Rohan Paul对OpenAI研究组织相关分享的二次解读核心就一句话在标准研发任务基准上Agent的连续工作时长已经能做到人力的3.1倍。我第一反应是怀疑毕竟“AI替代人力”的标题党太多了。但把细节扒开看这里的3.1倍不是那种笼统的“AI比你强”而是有明确统计口径的工程指标指的是在无人干预的情况下Agent能够持续保持有效执行的时间对比人类一次深度专注工作的有效时长。这篇文章我就顺着Rohan Paul解读的脉络把三件事聊透3.1倍到底怎么算出来的、Agent凭什么能连续跑这么久、以及我们自己搭Agent时怎么向这个指标靠拢。前两章是背景和原理第三章是可复现的工程骨架第四章全是实战踩坑记录。想直接动手的可以跳到第三章想避坑的第四章一定别错过。1. 3.1倍这个数字到底从哪来1.1 Rohan Paul解读的原始材料是什么Rohan Paul是长期跟踪大模型应用和Agent工程方向的技术研究者经常在X和博客上做长文解读。他这次整理的对象是OpenAI研究组织在一次内部经验分享中透露的Agent使用案例后来被匿名整理成纪要流传出来。这类素材有一个通病细节不全截图缺失只有结论和数据被反复引用。Rohan Paul做的有价值的事情是用他自己的多个项目经验去交叉验证这些结论而不是直接照搬。所以我下面写的内容是基于Rohan Paul公开解读的要点的转述加上我自己在Agent项目上的实测体会。你如果去找原始纪要不一定能对得上每个数字但方向是准的。这一层信息来源要先说清楚因为“3.1倍”这种数据太容易被断章取义。有人拿它证明Agent马上要取代所有程序员也有人拿它证明Agent一天能顶三个人干活这两种说法都不准确。准确的理解是在特定任务类型、特定工程配置、特定测算口径下Agent的工作时长指标达到人类有效工作时长的3.1倍。脱离边界谈倍数没有任何工程意义。1.2 工作时长的两种对比口径Rohan Paul在解读里梳理了两个测算口径恰好都落在3.1倍附近所以才敢在解读标题里用这个数。第一个口径是“单次无人值守运行时长”。OpenAI研究者在分享中给出的观察值是一个配置了工具调用、记忆模块和失败恢复机制的Agent在无人介入的情况下平均可以连续自主运行大约6到7个小时才需要人工介入一次。而人类工程师一次高度专注的深度工作周期业内普遍认为是2小时左右超过这个时间效率就会明显下降。6.2小时除以2小时约等于3.1。第二个口径是“日均有效执行时长”。一个全职工程师一天8小时在岗但真正能保持高质量产出的时间去掉会议、回消息、查资料、等人评审业内通常按4到5小时算我们取5小时。一个配置得当的Agent在有人做巡检、有自动心跳监控的情况下一天内可以维持有效执行的时间在15个小时以上剩下时间用于日志回放、索引更新、模型调用冷却这类开销。15.5除以5约等于3.1。注意这里对比的是“有效工作时间”不是“人类总在岗时间”。Agent在15.5小时里也会有重试、空转、等待API返回这些都被剔除掉了人类那边同样剔除了摸鱼和碎片化时间。口径相对公平这比单纯说“AI可以24小时工作”要严谨得多。1.3 别把3.1倍理解成“AI比人聪明”很多读者看到3.1倍就high了觉得这是AGI降临的标志。我在实际测试里的体会是这个数字更多反映的是工程化的胜利而不是模型智能的飞跃。同样一个GPT级别的模型如果你只是把它当聊天机器用让它回答问题它的“连续工作”能力不会比ChatBot强多少。但一旦你给它配上工具调用、结构化反馈、失败重试、断点恢复它的有效工作时间就能从分钟级跳到小时级。提升的来源主要是工程结构而不是模型本身的推理能力变强了。所以3.1倍这个数字我建议这样理解它标志着一套“无人值守的自动化执行体系”已经能跑通Agent已经从一个需要人盯着的玩具变成一个可以批量处理任务的工具。这跟AGI没多大关系但它实实在在改变了我们安排工作的方式。2. Agent凭什么能连续跑十几个小时2.1 从问答机器人到自主闭环要理解Agent为什么能长时间工作得先分清Agent和普通聊天机器人是两回事。聊天机器人是“你问它答”每个问题都是独立回合它不需要对结果负责答错了下次再答。Agent则完全不同它是“你给它一个目标它自己完成规划、执行、验证、修正的闭环”。Rohan Paul在解读里特别强调了一个观察OpenAI研究组织内部使用的Agent不是靠简单的大模型多轮对话而是跑在一个标准的自主循环上目标理解、拆解任务、逐个执行、检查结果、发现问题、修正路径、再执行直到任务完成或达到上限。这个循环一旦跑起来只要中间的反馈不中断Agent就可以一直自我驱动下去不需要人工在每一步指点。可以把这个循环想象成带实习生你给实习生一个任务他自己查资料、写代码、跑测试、改bug只有卡住了才来找你。如果这个实习生能自己解决90%的卡点你一天只需要搭理他三五次剩下的时间他可以一直干活。Agent的目标就是把这个“卡点解决率”提到足够高。这里的核心不是模型多聪明而是“反馈回路”是否完整。模型每执行一步需要能观察到结果根据结果调整下一步计划并且这个调整不需要人参与。闭环越完整Agent单次无人值守的时间就越长3.1倍就是这么慢慢刷上去的。2.2 支撑长时运行的三块基石根据Rohan Paul的解读和我自己的复现经验Agent想持续工作几个小时以上下面三块能力缺一不可。第一是长上下文与外部记忆。上下文窗口的扩大是基础但光靠窗口不够。OpenAI研究者做了一件关键的事把历史对话按里程碑做滚动摘要把每一步的工具返回结果存入向量数据库下次需要时再检索召回。这样Agent既保留了长期记忆又不会因为历史越堆越多导致上下文爆炸。我实测下来没有记忆模块的Agent跑半小时后就开始“忘记”最初的约束条件而带向量记忆的Agent跑一整个白天对任务目标的理解仍然稳定。第二是工具调用与沙箱执行。Agent能长时间自主工作很大一部分是因为它能调用代码解释器、搜索引擎、Git仓库这些外部工具并在沙箱环境里执行代码。OpenAI的Codex系列编码Agent是典型代表。它的运行机制是模型通过结构化协议调用工具工具执行完把结果回传模型再根据结果决定下一步。关键点是工具返回的结果格式必须规范错误信息必须结构化模型才能读懂并做出修正。第三是失败恢复机制。这是最容易忽略也最影响工作时长的能力。早期Agent跑几分钟就崩通常不是因为模型笨而是因为某一步工具调用报错了Agent不知道怎么处理直接死在那里。现在成熟的方案是所有错误信息回传给模型让模型判断是重试、换一种方式、还是标记为不可执行跳过。配合检查点机制Agent在崩溃后还能从最近一个成功状态恢复继续跑而不是从头再来。Rohan Paul在解读里打过一个比方我觉得特别贴切一个员工能连续工作多久不取决于他多聪明而取决于他在犯错之后能不能快速自己站起来。Agent的长时间运行本质上就是一套“犯错、反馈、修正、继续”的高频循环。2.3 从“跑几分钟就崩”到“小时级巡航”的工程演进如果你2024年开始玩Agent一定对那种体验印象深刻模型写了半天代码执行报错它重新生成又报错第三次开始胡言乱语最后陷入死循环你只能手动kill掉进程。当时大家讨论最多的问题是“Agent跑几分钟就掉了怎么办”。到2025年情况明显改观但这不是模型单点的功劳而是一整套工程基础设施补齐了。我在项目里体会到最明显的四个变化第一个是心跳监控。以前Agent挂了没人知道现在运行时会定期发心跳超过阈值没心跳就自动拉起来并从最近检查点恢复。第二个是任务队列化。把一个大的目标拆成几百个小的子任务放进队列Agent逐个消费。单个子任务失败不会影响整个队列失败任务可以被扔进重试队列或者标记为待人工处理。第三个是幂等设计。同一个工具调用如果因为网络原因被执行了两次结果要一致不会产生副作用。这听起来很基础但Agent一旦长时间运行重复执行的情况非常多没有幂等保护数据很容易被搞乱。第四个是循环检测。Agent有时候会反复调用同一个工具、拿同一份结果、得出同样的结论。现在的框架会检测这类重复模式连续N次出现相同签名就直接打断强制Agent更换策略。正是这些工程组件的成熟才让“连续工作数小时”成为常态。Rohan Paul在解读里有一句总结我很认同3.1倍是模型的推理能力乘以工程完整度的结果工程权重比我们想象中大得多。3. 自己动手搭一个能长跑的Agent3.1 先搞清楚harness和agent的分工很多初学者一听说要搭Agent就冲进LangChain、CrewAI里找模板结果越搞越懵。我建议先搞懂一个概念harness和agent是两码事。Agent指的是由模型驱动的决策体它的心智是模型参数和上下文决定的负责“想清楚下一步做什么”。harness是承载Agent运行的外壳负责“让Agent能稳定地执行计划”包括任务队列、权限控制、日志审计、错误重试、checkpoint管理这些工程能力。用个粗俗但贴切的类比Agent是发动机harness是整台车的底盘、悬挂和方向盘。发动机再好没有底盘它跑不起来底盘再稳发动机不行也跑不快。长时间运行的项目真正决定稳定性的是harness而很多人花大把时间调prompt忽略了harness结果当然跑不长。框架选型上我的个人建议是单Agent复杂任务优先考虑LangGraph或者OpenAI Agents SDK前者适合需要精细控制状态流转的场景后者轻量、官方维护、上手快多Agent角色协作可以考虑CrewAI让不同角色各司其职如果项目对Agent行为的可观测性要求极高还是得自己在核心循环外面包一层harness不能完全依赖框架。3.2 一个兼顾记忆、重试和断点续跑的最小骨架下面这个Python示例是我在项目里用过的极简骨架剥离了业务细节保留了长时Agent运行的核心元素。它可能不是最优雅的写法但足够让你理解长跑Agent的工作原理。import json import time from openai import OpenAI client OpenAI() # 只定义一个工具在沙箱里执行Python代码 TOOLS [ { type: function, function: { name: execute_python, description: 在沙箱环境中执行一段Python代码并返回标准输出, parameters: { type: object, properties: { code: {type: string, description: 要执行的Python代码} }, required: [code] } } } ] def exec_sandbox(code: str) - str: 真正执行代码的地方这里可以用Docker等隔离环境 import subprocess proc subprocess.run( [python, -c, code], capture_outputTrue, textTrue, timeout30, ) if proc.returncode ! 0: raise RuntimeError(proc.stderr) return proc.stdout CHECKPOINT_FILE agent_checkpoint.json def save_checkpoint(messages): 把当前对话状态落盘崩溃后可以恢复 with open(CHECKPOINT_FILE, w, encodingutf-8) as f: json.dump(messages, f, ensure_asciiFalse) def load_checkpoint(): try: with open(CHECKPOINT_FILE, r, encodingutf-8) as f: return json.load(f) except FileNotFoundError: return None def run_agent(task: str, max_steps: int 30): messages load_checkpoint() or [ {role: system, content: 你是一个能自主完成编程任务的Agent。每一步都要观察工具返回结果确认成功再继续。} ] if not any(m.get(role) user for m in messages): messages.append({role: user, content: task}) # 记录一个“指纹历史”用于检测死循环 call_history [] for step in range(max_steps): print(f[step {step}] 调用模型...) resp client.chat.completions.create( modelgpt-4.1, messagesmessages, toolsTOOLS, tool_choiceauto, ) msg resp.choices[0].message messages.append(msg) # 模型没有请求调用工具就认为任务完成 if not msg.tool_calls: print(Agent 判定完成, msg.content) return True # 处理工具调用 for tc in msg.tool_calls: call_key (tc.function.name, tc.function.arguments) call_history.append(call_key) # 同一个工具同一份参数连续出现基本就是死循环 if call_history.count(call_key) 3: messages.append({ role: tool, tool_call_id: tc.id, content: json.dumps({ success: False, error: 重复调用相同参数超过3次判定为死循环请更换策略 }, ensure_asciiFalse), }) continue try: args json.loads(tc.function.arguments) result exec_sandbox(args.get(code, )) observation {success: True, result: result} except Exception as e: # 关键点把错误信息结构化后回传给模型让它自己修正 observation {success: False, error: str(e)} messages.append({ role: tool, tool_call_id: tc.id, content: json.dumps(observation, ensure_asciiFalse), }) # 每5步保存一次checkpoint崩溃后能续跑 if step % 5 0: save_checkpoint(messages) print(f[step {step}] 已保存checkpoint) time.sleep(1) # 简单的限速防止触发API频率限制 raise RuntimeError(超过最大步数任务中止) if __name__ __main__: run_agent( 写一个Python脚本计算斐波那契数列前20项并检查结果是否为递增。 )你可以把这个骨架跑起来试试它已经具备长时运行Agent最核心的三个能力第一步工具执行结果结构化返回第二步错误信息自动喂回模型让Agent自我修正第三步checkpoint落盘支持断点续跑。代码里还顺手加了一个死循环检测同一个工具用同样的参数调用三次就强制警告模型换路走。这个看起来简陋但在实际长跑任务里非常管用。3.3 向3.1倍靠拢的5个配置细节有了骨架还远远不够下面这5个配置细节是我从自己的长跑任务里一点点试出来的每一条都直接影响Agent能连续工作多久。第一任务拆解粒度要细。如果一个大任务让Agent自己从头忙到尾中间一旦出问题回滚成本极高。我的做法是在进入Agent循环前把任务拆成可以在5到10分钟内完成的子任务放进队列Agent一次只做一个子任务做完成功标记再做下一个。失败的面控制在单个子任务范围内不影响全局。第二上下文必须做压缩和摘录。就算模型支持超大上下文也不要无脑把每一步的tool结果都堆进去。Rohan Paul在解读里提过一个数据OpenAI研究组织在长任务里会对每个工具返回做截断超过一定长度的结果先摘要再存回上下文。我自己实践下来方法是在每次工具调用后对输出做max_token限制并让模型把关键信息压缩成一句话再追加到消息历史里。第三API调用的成本要提前管住。长时间运行的Agenttoken消耗速度比想象中快得多。一次8小时的Agent任务吃掉几十万上百万token很正常。我建议做三件事设置单日预算上限到达上限自动降级到只读模式给简单重复的子任务用小模型处理只有规划和复杂修改才走大模型对重复的工具调用做缓存同一个函数相同参数直接返回历史结果。第四高危操作一定要设人工审批闸门。默认情况下让Agent只读访问只有在明确审批后才允许写入。我的做法是在harness里维护一个敏感操作列表包括文件删除、git push、生产环境配置修改、购买资源等命中列表的调用不会直接执行而是进入待审批队列等人工点击确认或拒绝。这一步对长时间运行的Agent来说不是可选项是必选项。第五日志是可搜索的结构化格式。不要print一句算一句而是每条日志都带上任务ID、步骤号、工具名、参数指纹、耗时。出了问题你能在几百条日志里快速定位到是第几步、哪个工具出的问题。没有结构化日志排查问题的时间会比Agent干活的时间还长。4. 长时间运行时最容易踩的坑4.1 常见故障与排查思路速查表Agent长时间跑的故障模式其实高度重复。我把项目里遇到的和社区里高频出现的问题整理成一张速查表遇到问题先对号入座。故障现场可能根因定位方法解决方案任务执行到一半报“execution terminated due to error”工具返回异常、运行环境缺依赖、权限不足查看最后一条tool调用的参数和返回错误把真实错误回传模型让它修正环境依赖固化到镜像Agent反复调用同一个工具不换路模型陷入重复策略上下文缺少有效反馈检查调用指纹历史看参数是否雷同加循环检测器强制改变策略或中断任务上下文越堆越长最后爆掉没有做压缩和截断看token用量曲线出现陡增就是问题滚动摘要、截断长tool结果、向量记忆外置模型编造不存在的API参数函数定义不够严格或模型幻觉对比工具schema与传入参数工具入口做参数白名单校验非法直接报错API成本失控半小时烧掉一堆token任务未拆解Agent长时间重试看token计费和重试次数设置每日预算上限、模型分级、缓存重复调用Agent“忘记”最初的约束条件上下文过长导致注意力漂移查看后续步骤是否违反初始约束把关键约束固定在system prompt尾部或写入单独记忆文件排障的原则是先看数据再看代码最后才怀疑模型。不要动不动就重写prompt很多问题其实是工程层的跟模型智商没半点关系。4.2 安全与权限让Agent活得久又不出事这是最容易被忽视的部分。普通对话场景下模型说错话顶多是被嘲笑但一个能自主执行工具的Agent连续工作几小时后它可能已经在生产环境里执行了上百个操作每一个操作都需要被约束。我踩过一次很痛的坑那是一个自动数据清洗任务Agent在凌晨4点的一次工具调用里把一份原始数据文件的字段覆盖了因为我在权限设置里给了它读写权限。第二天早上发现时需要重新从备份恢复。这个教训直接促使我在后面所有Agent项目里强制执行最小权限原则。具体做法是Agent默认只有只读权限所有写操作、删除操作、外部调用必须经过审批层Agent运行在独立容器里与宿主机文件系统隔离API key使用加密存储运行日志脱敏每次任务结束后自动回收权限和临时凭证。这些规则看上去增加了工单量但任何一个环节缺失都可能让Agent从“得力助手”变成“自己人搞自己人”。Rohan Paul在解读里也提了一嘴说OpenAI内部使用Agent时对权限控制非常严格尤其是并行大量Agent实例时几乎每个Agent都被关在隔离环境里。虽然具体细节没展开但方向很明确Agent越能干权限越要收紧。4.3 顺手的Agent开发面试题清单因为热词里一直有agent面试题、agent开发学习路线我顺手整理几个我在面试里经常问候选人、候选人也会被问到的题目附上回答方向。问Agent和普通LLM应用的本质区别是什么回答方向LLM应用是一次性问答Agent是带目标驱动、工具调用、结果反馈和自主修正的闭环系统。问Agent长时间运行上下文爆炸怎么解决回答方向滚动摘要、向量记忆外置、工具结果截断与抽取、定期重置短期上下文。问Agent陷入死循环怎么办回答方向循环检测与打断、最大步数限制、任务分解、强制切换策略、人工审批介入。问怎么给Agent做记忆回答方向短期记忆在上下文窗口里长期记忆用向量数据库存储和检索关键时刻用摘要压缩。问多Agent之间怎么通信回答方向消息队列解耦、共享任务看板、角色权限隔离、避免Agent之间的双向无限对话。问怎么衡量一个Agent跑得好不好回答方向任务完成率、平均无人值守时长、人工介入次数、单任务token成本、失败恢复成功率。3.1倍对应的就是“平均无人值守时长”这个指标。这些问题没有标准答案关键在于候选人有没有真正跑过长时间Agent任务。只背概念的人在遇到“上下文爆了怎么办”这种问题时思路会明显卡住。回到开头那个3.1倍。我在实际项目里跑过类似的对比结论是这个倍数不是营销话术但也不是免费的午餐。它需要你在harness工程上付出大量努力把任务拆解、记忆管理、失败恢复、权限隔离一件件事做扎实才会慢慢逼近这个数字。最后分享一个我自己的习惯别一上来就让Agent全自动跑通宵。先用小任务人和Agent并行做一遍对比结果看清楚Agent哪些环节容易出错再逐步扩大它的自主权。跑稳定一个任务再复制到下一个。3.1倍的背后是所有小细节反复堆叠的结果。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →