当智能发生在运行时

一篇关于 Agent 系统、推理与运行时结构的笔记。

返回博客

当智能发生在运行时

Luyi Lin

luyilin@bjtu.edu.cn

这篇文章主要讨论 Agent,并提供一些或许并不那么新的视角。

关键词: Agent、推理、语言、运行时、模型评测、交互

Agent 不再意味着 Agent

我总是想找到一个起点,我赋予了起点一种本原的意义。这并不是说找到起点,就能理解一切了(尽管在有些时候是这样的),而是说,起点里蕴含着一种发生,我想去看看概念、定义是如何发生的。

在现代 AI 语境中,Agent 的定义常常来自 Russell 和 Norvig:一个 Agent 通过 sensors 感知环境,并通过 actuators 作用于环境。重要的并不是这句话本身,而是它背后的结构:一个 Agent 被置于环境之中,从环境接收信号,对环境产生行动,并被行动所带来的反馈塑造。

在这个意义上,Agent 更早的想象图式应当来自于控制论。控制论讨论的是一个系统如何通过闭环与环境耦合。强化学习后来给了这个想象图式一种可操作的形式:Agent 从 policy 中选择 action,environment 返回 observation 和 reward,而 learning 发生在反复的 interaction 之中。

语言模型改变了这个图景。

语言模型本身,并不是经典意义上的 Agent。它并不生活在一个环境里。它不会在不同调用之间维持持久状态。除非它的输出被连接到模型外部的某个东西,否则它也不会真正行动。

姚顺宇将 Language Agent 的概念引入 LLM,他的动机来自于他观察到的语言模型本身的三个缺陷:

  1. Stateless: 语言模型本身不会记忆输入。
  2. Ungroundedness: 语言模型无法与真实世界交互,其智能被限制在压缩进参数中的模式之内。
  3. Limited knowledge: 语言模型无法持续地获取新信息。

在姚顺宇的表述中,Language Agent 试图通过把模型连接到推理、学习、规划这样的内部机制,以及浏览器和代码这样的外部环境,来克服这些局限。他发表了很多工作,包括 ReAct、Reflexion、Tree of Thoughts、WebShop 等等。具体技术可能不同,但核心的 insight 是一样的:

语言可以作为一种通用接口。

一旦记忆、检索、搜索、代码执行、网页操作和工具 API 都被表示为语言或接近语言的格式,它们就可以在同一个 inference 里被组合起来。语言不再只是用户交互的媒介。它变成了不同机制之间的 coordination layer。

也正是在这里,“Agent” 的含义开始漂移。

到 2026 年,“Agent” 已经不太是一个精确的科学概念,而更像是一个产品概念。它太宽泛,太商业化,也承载了太多含义。从技术角度来说,真正重要的技术对象不是 “Agent”,而是它背后的 system。

Foundation model 提供了关于语言、代码和世界知识的先验。它也提供了一些基础能力,比如指令遵循、上下文学习和长上下文理解。系统则通过提供外部记忆、工具调用、资源分配和执行-反馈环境,来建立 runtime。

Runtime 不只是把模型包起来,它把 inference 重新组织成了一个交互过程。至此,智能不再只是被压缩在模型权重里,它的一部分在 runtime 中被展开。

模型与运行时的边界变得模糊

Agent system 让智能通过 runtime 变成了产品,离用户更近。这为 Anthropic、Google 这些公司带来了惊天利润,但也带来了一个问题:

当一个 Agent 解决了一个问题时,我们应该在什么意义上把功劳归于模型,又应该在什么意义上把功劳归于 runtime?

关键在于,model 和 runtime 之间的边界不是固定的。随着模型在 long-context understanding 这些能力上变得更强,一些当前由 runtime 处理的逻辑,可能会重新塌缩回模型内部。反过来,随着 runtime 变得更便宜、更可靠,更多认知性的计算过程也可以被外部化到 runtime 中。模型与运行时的边界正在变得模糊。

当我们注意到这个趋势,我们也就可以判断一类 Agent 研究的价值。对于那些试图构建一个 Agent 来解决具体问题的工作,最重要的是这个工作是否为它声称要解决的问题,找到了合适的 model-runtime boundary。

一个好的 Agent 工作,不是把所有东西都盲目搬到 runtime 里;也不是训练模型把一切都内化进 weights。它应该从一个真实且不可或缺的问题出发,清晰地分解这个问题,并决定问题的每个部分应该在哪里被解决。

问题中的一些部分应该被学进权重,因为它们是一般性的、可复用的,并且可获得高质量数据的。另一些部分则应该留在 runtime,因为它们是上下文相关的、变化的、可验证的,或者依赖外部世界的。有些信息应该作为记忆被保存,有些信息应该只在需要时被检索,有些信息应该通过执行被检查。

在这个意义上,那些专注于构建 Agent 来解决具体问题的研究,本质上是在处理一组 trade-offs:什么应该被学习,什么应该被检索,什么应该被记住,什么应该被执行,什么应该被验证,以及什么应该留给环境本身。

评测上的分数当然仍然有用,但它们是不够的。更重要的是,这个 agent system 在真实场景中是否变得更可靠、更稳定、也更有用。

推理是通过轨迹展开的

与 Agent 爆火的几乎同时,OpenAI 的 o1 模型将另一个词推到了主流视野中:Reasoning。二者都在讨论:当模型输出不再被看作一次单独的最终答案时,会发生什么。

关于 Reasoning,一般大家的共识是:Reasoning 是一种高级的能力,并且这种能力可以通过数学、代码、逻辑这几类任务上的表现反映出来。这几类任务有两个特点:困难,但是有明确的答案。

在讨论与 Reasoning 有关的技术手段之前,首先有一个很本质的问题:我们讨论的 reasoning 是一种能力还是一种行为?LeCun 很在意这件事情,但我想这件事或许没那么重要。不过,拥有 LeCun 的质疑,对 AI 领域来说是重要的。

长期以来,我们对模型的评测都是图灵式的:当模型表现出来这种行为时,我们就认为它具备这种能力。同样地,如果一个模型能够解出 AIME 数学题、写出正确的程序、验证自己的错误,并处理多步任务,那么说这个模型具备 reasoning 能力,是很自然的。是的,我也赞同图灵的这种哲学,当下 AI researcher / engineer 的目标,不是要还原人类智能,是要重现人类智能。

关于 reasoning 的研究大致沿着两个方向展开:一个方向试图通过强化学习、监督微调和蒸馏来训练模型进行 reasoning;另一个方向则试图在 test time 通过提示词策略、抽样、搜索和验证等方法提升模型表现。

从机制上看,这两个方向操作的是同一个对象:trajectories。

一个监督微调样本是一条轨迹。强化学习中的一次 rollout 是一条轨迹。思维链是一条轨迹。树搜索探索的是一个由轨迹构成的空间。Verifier 则对部分或完整的轨迹进行打分。

一旦我们不再把模型输出看作最终答案,而是把它看作轨迹中的中间步骤,模型的生成过程就不再是一个黑箱式的输入-输出映射。相反,它变得可见、可检查、可优化。这种可见性也改变了 test-time 阶段计算量的使用方式。

在这个意义上,reasoning 是通过轨迹展开的。

这里的核心 insight 是:语言模型的生成过程可以被建模成一个图,而语言再次成为了这种图式计算的接口。每一个节点都是一个中间状态,每一条边都是一次状态转移。从 question state 到 answer state 的一条路径,就是一条 trajectory。更准确地说,trajectory 是这个图中由中间状态和状态转移组成的有序序列。

大多数 reasoning 的技术手段,本质上都是在优化整个空间中的 trajectories。训练方法改变的是模型的 trajectory distribution,让好的路径更容易被生成出来。test-time 方法则提供 reasoning priors,并投入额外的计算量,去引导 trajectory 的生成。

这种建模是合适的,并被验证了是有效的,因为自然语言是一个很好用的接口,可以把图这种计算结构线性化地表达出来。在某种程度上,NLP、LLM 以及 Language Agent 的成功,都高度依赖于语言本身的表征能力和隐含先验。

这也正是语言危险的地方。语言的表征能力让我们很容易把一些模糊的行为,过早地实体化成看似具体的概念。

在 2025 年,关于 reasoning 的讨论太多了,但它其实没有明确定义。这种模糊性造成了一种不好的研究品味:人们有时候会把 “reasoning” 当成一种干净的、原子化的能力,好像它可以被直接注入到模型里。

我更愿意把 reasoning 看作一种由几种基础能力组合涌现出来的行为。问题在于,这种行为似乎位于模型输出分布中的低概率区域。它并不会在一次 forward pass 中稳定地出现,而(目前)只能通过 trajectories 被展开出来。

AI 并不是一个严谨的学科。我们不断制造各种光鲜的新术语,用它们来宣告自己的工作有多么独特。当然,其中一些工作也许确实独特。但问题在于,这样的术语太多了,而其中很多并没有被清楚地定义。我们在给现象命名,却不总是尝试以科学的方式理解现象。诚然,在大规模系统里,很多时候我们最终能够留下的只是现象本身,而不是像传统科学那样清晰、稳定、可证伪的规律。但这并不妨碍一个科研工作者对“科学”的追求。虽不能至,然心向往之。

有时候我甚至会怀疑,这些工作里究竟有多少能留下 history-class impact。更多时候,能在短期内制造 world-class impact,就已经被认为足够成功。我个人不喜欢这种氛围。

当智能发生在运行时

Reasoning 是通过轨迹展开的。轨迹发生在交互之中。

对于现在的 Agent 来说,智能不是 weights 或 runtime 的问题,是 weights 和 runtime 的问题。模型提供先验和基础能力;runtime 提供记忆、工具和执行-反馈流。我们称为 Agentic Intelligence 的东西,就发生在二者的耦合之中。

但这些说法太保守了,它很正确但不利于探究。为了看清楚这里的矛盾,让我们把情况推至极限,考察一个更极端的问题:

智能能否完全建立在被压缩的表征之上?还是说,它最终必须通过交互回到世界本身?

这是个开放问题。

结语

今天恰好是高考第一天,大学期间,我也经常会回想起我在高中时的一些情境。我记得其中一幅情境是,有一次,学校邀请浙大的教授来讲座,我记得我向他提问:植入皮肤的传感器,是否会影响人的感知的第一性?那个教授表示这是个哲学问题。几个月,或者一年之后,ChatGPT 横空出世,震惊世界。表征学习在算力和数据的 scaling 下,展现出了惊人的智能。进入大学以后,我花了很多时间在 representation 的世界里兜转。但有时候,我仍然会回到高中时提出的那个问题:当我们把世界压缩成表征之后,我们是否也破坏了感知的第一性?

我直觉上认为,感知的第一性会建立起更完整的智能。世界不只是被表示的,它也是在交互中被“发生”的。是的,我是在说,世界会通过交互建立起它自己。