Temperature=0也无法复现:AI编程Agent的隐性发散问题

temperature=0并不保证AI Agent的确定性输出,长周期任务中微小数值扰动会被系统性放大为截然不同的执行结果。
一位研究者将同一编程Agent在temperature=0条件下重复运行13次,发现12次收敛到完全相同的中间状态,却最终产生11种不同的代码结果。这揭示了一个工程真相:GPU浮点运算的非确定性、推理框架的动态批处理调度,以及Agent长周期循环的误差累积,共同瓦解了"贪婪解码=确定性输出"的假设。研究者进一步指出,终态不一致并不等同于错误——同一bug可能有多种正确修复方式——因此关键在于区分"良性多样性"与"致命分歧"。为此,他们提出了早期检测关键转折点并进行轻推、回滚或分叉择优等主动纠偏策略,将执行发散从系统缺陷转化为可利用的资源。
一个反直觉的实验结果
在使用大语言模型时,很多开发者都默认一个假设:把采样温度(temperature)设为 0,模型输出就应当是确定性的、可复现的。然而一位 Reddit 用户在测试长周期编程 Agent 时得到了令人意外的结果——即便在 temperature=0 的条件下,同一个任务的多次运行仍然会走向不同的终点。
这位研究者使用自托管的 Qwen 模型配合 vLLM 推理框架,针对 SWE-bench 中的同一个任务,在完全相同的模型、配置和温度参数下反复执行了 13 次。结果颇具戏剧性:
- 在 13 次执行中,有 12 次 独立地到达了完全相同的中间仓库状态(canonical Git diff 完全一致);
- 但这 12 次执行随后却分裂成了 11 个不同的最终源码状态。
换句话说,Agent 在中途高度收敛,却在临门一脚时各奔东西。

为什么 temperature=0 也会发散?
温度为 0 意味着模型在每一步都选择概率最高的 token(贪婪解码),理论上应该是确定性的。但在真实的推理系统中,确定性会被多个因素悄悄破坏。
浮点运算的非确定性
在 GPU 上进行大规模矩阵运算时,浮点加法的结合律并不严格成立。不同的并行归约顺序、不同的 batch 大小、动态的显存调度,都可能导致 logits 出现微小差异。当两个候选 token 的概率极为接近时,这种微小差异足以让贪婪解码翻转选择。
推理框架的批处理调度
vLLM 这类高吞吐推理框架采用连续批处理(continuous batching)和 PagedAttention,请求的拼批方式会随运行时状态变化。同一个 prompt 在不同批次上下文中的计算路径可能不同,从而放大数值扰动。
Agent 循环的误差累积
更关键的是,编程 Agent 是长周期、多轮的自主系统。每一步的输出会成为下一步的输入,一个 token 的分歧会被逐步放大。这正是研究者观察到的现象——多次运行先是高度收敛到同一中间状态,然后又在后续步骤中被微小扰动推向不同轨迹。
三种发散模式
研究者在更广泛的任务集上观察到了三类值得注意的模式:
- 差异被吸收:轨迹一度出现分歧,但后续步骤将其"抹平",最终收敛回一致状态;
- 差异持续:一旦分歧产生便无法回头,直接导向不同的结果;
- 发散—再收敛—再发散:运行过程先分叉,又重新汇合到完全相同的源码状态,然后再次分叉。
第三种模式尤其耐人寻味,它说明 Agent 的状态空间中存在某种"吸引子"——多条不同路径会被拉回到同一个中间点,但这种收敛并不稳定。
发散何时才算"有害"?
实验者随后提出了一个更成熟的追问:这种变化真的重要吗?
答案并非绝对。不同的执行轨迹、不同的补丁,完全可能都是正确的——同一个 bug 往往有多种合理的修复方式。因此,单纯统计"终态不一致"并不能说明 Agent 不可靠。
于是研究方向被重新定义为一个更精准的问题:
无害的执行变化,在什么时候会演变为有实质后果的发散?
为了回答这个问题,研究者计划引入外部正确性标签——即用测试或人工判断来标注每个终态到底是对是错,从而区分"良性多样性"与"致命分歧"。
早期检测与主动纠偏策略
这项研究真正的价值在于它指向了一个工程化方向:能否在 Agent 失败之前,尽早检测到"关键转折点",并把它拉回正轨?
研究者列举了几种可能的干预手段:
- Nudge(轻推):在检测到偏离时注入提示,引导 Agent 回到正确方向;
- Rollback(回滚):撤销到最近的良好状态重新执行;
- Context intervention(上下文干预):修改上下文以纠正 Agent 的认知;
- Fork-and-select(分叉择优):并行运行多个分支,再挑选最优结果。
这些策略本质上是把"发散"从一个 bug 转化为一种可利用的资源——如果我们能实时判断哪条轨迹更有希望,多样性反而成了提高成功率的手段。
对生产环境的启示
对于正在生产环境中部署开源权重 Agent 的团队,这个实验带来几点现实提醒:
- 不要迷信 temperature=0 的可复现性。在多轮自主任务中,数值层面的非确定性会被系统性放大,复现失败是常态而非例外。
- 评估指标需要区分"正确性"与"一致性"。终态不同不等于错误,用外部正确性标签来衡量才有意义。
- 可以主动拥抱多样性。fork-and-select、多次采样投票等策略,可能比追求单次确定性输出更能提升实际任务成功率。
原帖作者也向社区抛出了一个开放问题:那些在生产中运行开源权重 Agent 的工程师,是否也观察到过 temperature=0 下的显著执行方差,它是否真的影响了任务成功率?这个问题目前尚无定论,但它无疑触及了自主 Agent 走向可靠部署的核心挑战之一。
结语
这个看似简单的"运行 13 次"实验,揭示了当前 AI Agent 工程中一个被低估的真相:确定性是一种幻觉,可靠性需要主动设计。随着编程 Agent 承担越来越长、越来越关键的任务,理解并驾驭这种隐性发散,将成为区分"玩具 Demo"与"生产级系统"的分水岭。
相关推荐

浏览器扩展过滤AI生成文章:一场信息质量的自救实验
Hacker News上一个过滤LLM生成文章的浏览器扩展引发关注。本文解析该工具的检测思路、面临的误判与对抗挑战,以及AI内容泛滥背景下用户主动筛选信息的趋势。

GPT-6 Astra实现Blender中的3D相机追踪与VFX
Hacker News 出现关于「GPT-6 Astra」在 Blender 中完成 3D 相机追踪与 VFX 的讨论。本文解析该技术方向的背景、AI 操作专业软件的意义,并对尚未验证的信息保持理性审视。

亚马逊被指拒绝孕妇员工上厕所:效率至上与劳工权益的冲突
亚马逊因拒绝给予怀孕员工如厕休息时间引发广泛争议。本文深入分析亚马逊仓储中心严苛绩效考核体系、自动化监控对劳工权益的影响,以及怀孕歧视背后的法律与伦理问题。