参考来源:

2.1.马尔可夫决策过程(MDP)的定义

2.2.MDP 的分类

图解大模型 RLHF 系列之:人人都能看懂的 PPO 原理与源码解读

看完能和外婆解释的 PPO, DPO, GRPO 强化学习

Agentic RL 全流程技术分析与总结(两万字)

The Landscape of Agentic Reinforcement Learning for LLMs: A Survey (arXiv:2509.02547)

关于马尔可夫

什么是马氏过程

直观地来讲,对于一个马氏过程,指的是在 Xt+1X_{t+1} 之前的所有信息全部已知的情况下,Xt+1X_{t+1} 的分布只和 XtX_t 的取值有关,与 XtX_t 前面发生过的事情无关,即未来只由现在决定,而不由过去决定。这是因为 Xt1X_{t-1} 对于 Xt+1X_{t+1} 的影响,全部体现在了 XtX_{t} 中。对于一个初始值是 X1X_1 的随机变量,服从某个初始分布,而 X1X_{1} 的取值又决定了 X2X_{2} 的分布,X2X_{2} 的取值又决定了 X3X_{3} 的分布 \cdots 以此类推,就形成了一个马尔科夫链。

马氏链具有一个核心性质:如果我们已知某些条件,要去求解某些表达式关于这些条件的期望,则我们只需要距离所求事件最接近的条件就足够了,举个例子即 $$E(X_{16}^2|X_2 = x_2, X_5 = x_5, X_9 = x_9) = E(X_{16}^2|X_9 = x_9)$$

马尔可夫决策过程 MDP

马氏过程只有状态之间的内在关系 P(St+1=st+1St=st)P(S_{t+1} = s_{t+1} | S_t = s_t),而在 MDP 中,转移方程变为了 P(St+1St=st,At=at)P(S_{t+1}|S_t = s_t, A_t = a_t),同时增加了与我们最终目的有关的变量 RtR_t, 由 P(Rt+1St=st,At=at)P(R_{t+1}|S_t = s_t, A_t = a_t) 决定

马尔可夫决策过程

MDP 的核心目的是求出一种选择 AtA_t 的方式,使得 E[Rt]E[\sum R_t]E[Rtγt]E[\sum R_t \gamma^t] 等奖励最大。除了这两个重要的变量之外,还有一个结束信号 DonetDone_t,代表着 MDP 何时结束。我们常常假定马氏链的长度是无穷的,而 MDP 的长度是有限的。在某个状态 sts_t 采取动作 ata_t 后,会有概率得到一个 DoneDone 信号,代表着 MDP 的结束。至此我们介绍完了 MDP 的所有元素,由于 DoneDone 的信号是包含在 RR 中的,我们习惯将其记为四元组 (S,A,P,R)(S,A,P,R)

马尔可夫过程与 MDP 的对比

在马氏过程中,如果给定条件概率 P(St+1St=st)P(S_{t+1}|S_t = s_t),以及初始状态分布 P(S0)P(S_0),就完全确定了马氏链的分布。这就是说,对于所有的 sstt,我们可以求出所有 P(St=s)P(S_t = s);对于所有可能发生的马氏链轨道 (s0,s1,s2,,sn)(s_0, s_1, s_2, \dots, s_n),我们可以求出它发生的概率是多少,即求出 P(τ=(s0,s1,s2,,sn))P(\tau = (s_0, s_1, s_2, \dots, s_n))。总的来说,马氏过程是一个“客观的”过程,当其转移规律确定之后,会发生的一切都被确定了。

在 MDP 中,情况却完全不同。即使我们的 PPRRDoneDone,以及初始的分布 P(S0)P(S_0) 都确定了,后续 StS_t 的分布也不能确定。这是因为,有一个“主观的”、“可以自由选择”的 AtA_t 会影响 StS_t 的分布。这个 AtA_t 应该怎么选择,就是强化学习的核心问题。一般而言,我们会希望找出一个从 SSAA 的映射,即 P(AtSt=st)P(A_t|S_t = s_t)。当 P(AtSt=st)P(A_t|S_t = s_t) 确定之后,则 St,At,RtS_t, A_t, R_t 的分布便真正地确定下来。这时候,我们就可以求出 P(St=s)P(S_t = s)P(At=a)P(A_t = a) 以及 P(Rt=r)P(R_t = r) 这些具体分布。对于可能发生的所有轨道 (s0,a0,r0,s1,a1,r1,s2,,rn)(s_0, a_0, r_0, s_1, a_1, r_1, s_2, \dots, r_n),我们也可以求出其发生的概率 P(τ=(s0,a0,r0,s1,a1,r1,s2,,rn))P(\tau = (s_0, a_0, r_0, s_1, a_1, r_1, s_2, \dots, r_n))。这也就是说,当 P(AtSt=s)P(A_t|S_t = s) 确定,一切就确定了。

MDP 的分类

首先,我们最终要求解的强化学习问题应该是一个环境未知且持续多步的 MDP,这导致我们的算法要同时考虑两个方面的困难——如何与环境交互产生数据、如何求解最佳策略。如果 MDP 并非持续多步或者环境未知,这会让我们的问题性质发生改变,大大地简化问题的难度。所以,MDP 中最重要的性质是我们是否知道它的环境,以及是否发生退化。这涉及到问题的基本定义,是我们首要考虑的内容

其次,我们求解 MDP 意味着找出一个最优策略,使得智能体能够在环境中获得最大的奖励。这个策略是如何为我们选择动作 AtA_t 的?是仅仅需要根据当前状态 sts_t 选择,还是也要考虑当前的时间 tt?它是一个什么形式的函数?对于这一点,我们要考虑 MDP 中状态转移方程是否具有随机性,以及是否具有时齐性。所以,我们在考虑 MDP 的基本性质之后,考虑 MDP 这两方面的性质便可以帮助我们确定我们需要解是什么形式;

最后,MDP 中动作与状态的连续性与随机性对于我们的算法也是很重要的,因为这决定了我们将回采用何种模型。

MDP 是否发生退化?

所谓退化,指的是 MDP 不再是"持续多步"的。最极端的退化是单步 MDP:智能体看到一个状态,做一个动作,立刻拿到奖励,游戏结束。这其实就是多臂老虎机(bandit)问题;如果每一局的初始状态还会变化,就是上下文老虎机(contextual bandit)。退化带来的简化是本质性的:没有"未来",就没有长期回报,也就没有信用分配(credit assignment)问题——你不需要思考"这一步棋亏了但十步之后赚回来"这种事,每个动作的好坏由它自己的即时奖励完全说明。

这个分类对我们理解大模型 RL 至关重要,因为同一个 LLM 生成过程,恰好可以从两个视角来建模

  • token 级视角(多步 MDP):状态是 prompt 拼接上已生成的前缀,动作是从词表中选出下一个 token,每生成一个 token 就发生一次状态转移,直到生成 EOS 拿到 DoneDone。奖励是稀疏的——通常只有最后一个 token 处有一个整句的评分。
  • 序列级视角(单步退化 MDP):状态是 prompt,动作是"一整条回复",输出完毕立刻结束。这就是一个 contextual bandit。

这两个视角没有对错之分,但它们直接决定了算法形态:token 级视角需要处理"句子还没写完时,当前这个 token 到底贡献了多少"的信用分配问题,于是需要价值函数(这是 PPO 的路线);序列级视角下每个动作自带完整奖励,于是可以用同一 prompt 下多条回复互相比较来代替价值函数(这是 GRPO 的路线)。后文所有算法的分野,几乎都可以追溯到这里。

环境是否已知

环境已知,指的是转移概率 P(St+1St,At)P(S_{t+1}|S_t, A_t) 和奖励 P(Rt+1St,At)P(R_{t+1}|S_t, A_t) 的具体形式我们是否掌握。如果完全已知,求解 MDP 就不需要"学习",它退化为一个规划(planning)问题——用值迭代、策略迭代这类动态规划方法在纸面上就能算出最优策略。只有环境未知时,我们才必须让智能体去交互、采样、试错,这才是"强化学习"这个名字的本义,也是 model-free 方法(以及先学环境模型再规划的 model-based 方法)存在的理由。

大模型 RL 在这一点上的处境很微妙:

  • 状态转移是已知且平凡的:新状态就是旧状态拼接上新 token,确定性的字符串拼接,没有任何未知性;
  • 奖励却是未知甚至是"学出来的":RLHF 中的奖励模型(RM)本身是个神经网络,是对人类偏好的近似。也就是说我们在一个"转移已知、奖励近似"的环境里做 RL;
  • 而一旦进入 Agentic 场景,模型的动作会触发真实世界的反馈——工具返回值、编译器报错、网页内容、用户回复——这部分转移是真正未知的,环境重新变成了 model-free 意义上的黑盒。

环境的确定性与随机性

给定 sts_tata_t,如果 st+1s_{t+1}rtr_t 是唯一确定的,环境就是确定性的;否则是随机的。确定性环境的好处是,回报的随机性只来自策略本身的随机采样,方差的来源变少,估计变得容易。

纯文本生成是一个确定性环境:拼接就是拼接,不会掷骰子。我们平时感受到的"同一个 prompt 每次输出不一样",随机性全部来自策略 πθ(atst)\pi_\theta(a_t|s_t) 的采样,而不来自环境。但 Agentic 场景再次改变了这一点:同一次搜索调用可能返回不同结果,同一段代码在不同机器上可能跑出不同状态——环境的随机性回来了,这会直接推高梯度估计的方差,是 Agentic RL 训练不稳定的来源之一。

环境的时齐性

时齐性(time-homogeneity)指转移规律不随时间改变:P(St+1St,At)P(S_{t+1}|S_t, A_t) 这个函数本身与 tt 无关。时齐性决定了最优策略的形式:时齐且无限期(或不定长)的 MDP,存在一个不依赖时间的平稳最优策略 π(as)\pi(a|s)——你只需要看状态就够了,不需要看表。反之,如果环境规律随时间漂移,或者任务有硬性的步数期限,最优策略就可能需要把 tt 作为输入(或者干脆把 tt 并进状态里)。

LLM 的生成过程是时齐的:无论是第 3 个 token 还是第 3000 个 token,都是同一个 Transformer 在做同一件事。序列长度的限制并不破坏时齐性,因为"已经生成了多长"这个信息本来就编码在状态(前缀)里。这就是为什么我们用一个网络 πθ(as)\pi_\theta(a|s) 就能表示策略,而不需要为每个时刻单独建模——这个看似理所当然的设定,其实是时齐性送给我们的。

状态与动作的连续性

最后一个维度决定了我们用什么模型来装下策略和价值函数。经典的四象限:状态和动作都离散且规模小,用表格(Q-table)就够了;状态连续、动作离散,用函数逼近器来泛化状态(DQN);动作也连续,就需要能输出连续分布的 actor(DDPG、SAC 这一族)。

LLM 落在一个特殊的位置:状态离散但组合爆炸(所有可能的 token 前缀,任何表格都存不下,必须用函数逼近,而 Transformer 就是那个函数逼近器),动作离散且规模巨大(一步从约 10510^5 量级的词表中选一个 token)。动作离散意味着策略天然就是一个 softmax 分布——而这恰好就是语言模型本来的输出形式。语言模型本身就是一个现成的随机策略,这是"把 RL 套在 LLM 上"这件事在结构上如此自然的根本原因;同时,巨大的离散动作空间让 Q-learning 一族很不划算,于是 LLM RL 几乎清一色走策略梯度(policy gradient)路线。

从回报到策略梯度

在进入 PPO 之前,我们把"怎么优化策略"这条线补齐。我们的目标是最大化期望回报:

J(θ)=Eτπθ[tγtrt]J(\theta) = E_{\tau \sim \pi_\theta}\left[\sum_t \gamma^t r_t\right]

这里的困难在于:θ\theta 影响的是"轨迹的分布",而不是某个可导的输出。REINFORCE 给出了绕开它的经典恒等式(log-derivative trick):

θJ(θ)=Eτπθ[tθlogπθ(atst)Gt]\nabla_\theta J(\theta) = E_{\tau \sim \pi_\theta}\left[\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t\right]

其中 Gt=ktγktrkG_t = \sum_{k \ge t}\gamma^{k-t} r_k 是从 tt 时刻起的回报。这个式子的直觉非常朴素:哪条轨迹的回报高,就把这条轨迹上每个动作的概率往上推,推的力度与回报成正比

GtG_t 是对整条后续轨迹的蒙特卡洛估计,方差极大。两个标准的减方差手段:

  1. 减去基线(baseline):把 GtG_t 换成 Gtb(st)G_t - b(s_t),不改变梯度的期望,却能大幅减小方差。最优的基线选择就是状态价值 V(st)V(s_t)
  2. 换成优势函数(advantage)A(st,at)=Q(st,at)V(st)A(s_t, a_t) = Q(s_t, a_t) - V(s_t),衡量"这个动作比该状态下的平均水平好多少"。此时更新的直觉从"回报高就鼓励"精细化为"比平均好才鼓励,比平均差就抑制"。

VV 从哪里来?再训练一个网络去拟合它,这就是 critic,于是我们得到了 actor-critic 框架。实践中优势的估计用 GAE(Generalized Advantage Estimation):

A^t=k0(γλ)kδt+k,δt=rt+γV(st+1)V(st)\hat{A}_t = \sum_{k \ge 0} (\gamma\lambda)^k \delta_{t+k}, \quad \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)

λ0\lambda \to 0 时只信 critic(偏差大方差小),λ1\lambda \to 1 时退回蒙特卡洛(偏差小方差大),λ\lambda 就是这架偏差–方差天平上的游标。

PPO 原理 + 源码

图解大模型 RLHF 系列之:人人都能看懂的 PPO 原理与源码解读

侧重于 PPO 公式的来源,但又并非纯 math。

从 on-policy 到重要性采样

policy gradient 有个昂贵的性质:它是 on-policy 的——梯度公式里的期望是对"当前策略"的轨迹分布取的,所以每更新一次参数,之前采的数据就"过期"了。对 LLM 来说采样(rollout)恰恰是最贵的环节,我们希望一批数据能多用几步。重要性采样(importance sampling)允许我们用旧策略 πθold\pi_{\theta_{old}} 的样本来估计新策略的目标:

L(θ)=Et[πθ(atst)πθold(atst)A^t]=Et[rt(θ)A^t]L(\theta) = E_t\left[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} \hat{A}_t\right] = E_t\left[r_t(\theta)\, \hat{A}_t\right]

代价是:两个分布差得越远,这个估计的方差越大,越不可信。所以必须限制新旧策略的偏移。TRPO 用 KL 散度约束做这件事(一个带约束的优化问题,求解很重),而 PPO 的贡献就是把它简化成一个裁剪目标

LCLIP(θ)=Et[min(rt(θ)A^t, clip(rt(θ), 1ϵ, 1+ϵ)A^t)]L^{CLIP}(\theta) = E_t\left[\min\left(r_t(\theta)\hat{A}_t,\ \text{clip}(r_t(\theta),\ 1-\epsilon,\ 1+\epsilon)\hat{A}_t\right)\right]

这个 min+clip\min + \text{clip} 的组合值得咀嚼一下它的方向性:当 A^t>0\hat{A}_t > 0(好动作)时,目标随 rtr_t 增大而增大,但超过 1+ϵ1+\epsilon 就被削平——收益封顶,防止一次把概率推得太猛;当 A^t<0\hat{A}_t < 0(坏动作)时,rtr_t 压得越低目标越大,但低于 1ϵ1-\epsilon 后也不再有收益——惩罚也封顶。一句话:在信任区域内正常更新,出了信任区域梯度归零。

RLHF 中的 PPO:四个模型的分工

把 PPO 搬进 RLHF,标准配置需要同时维护四个模型:

  • Actor:待训练的策略,也就是我们最终想要的模型,由 SFT 模型初始化;
  • Reference Model:冻结的 SFT 模型,用于计算 KL 惩罚,把 actor 拴在初始化附近,防止它为了讨好 RM 而胡言乱语(reward hacking 的第一道闸);
  • Reward Model:在人类偏好对上训出来的打分器,只在序列结束时给出一个标量分;
  • Critic:价值网络,通常由 RM 初始化,为每个 token 位置估计 V(st)V(s_t)

奖励的实际构造是逐 token 的:

rt=βKL(πθ(st)  πref(st))+1[t=T]RRM(x,y)r_t = -\beta\, \text{KL}\left(\pi_\theta(\cdot|s_t)\ \|\ \pi_{ref}(\cdot|s_t)\right) + \mathbb{1}[t = T]\cdot R_{RM}(x, y)

即中间每一步只有 KL 惩罚,整句的 RM 分数记在最后一个 token 头上,再由 GAE 把这份"最终评价"沿着序列往回摊派——这正是 token 级多步 MDP 视角下信用分配的具体形态

源码要点

对着 TRL / OpenRLHF 这类实现读,主循环其实只有四步,值得留意的都在细节里:

  1. make_experience(采样阶段):actor 对一批 prompt 做 rollout;同一次前向里顺手记下每个 token 的 logπθold\log\pi_{\theta_{old}}、ref model 的 logπref\log\pi_{ref}、critic 的 V(st)V(s_t),RM 对完整回复打分。这些量全部缓存进 experience buffer;
  2. 计算优势:按上面的逐 token 奖励公式合成 rtr_t,跑 GAE 得到 A^t\hat{A}_t 和 return(常再做一次 advantage whitening,即批内标准化,进一步压方差);
  3. PPO epoch:同一批数据上做多个 epoch 的小步更新(这正是重要性采样买来的复用能力),actor 用 LCLIPL^{CLIP},critic 用 value clip 的 MSE(对 value 的更新也做裁剪,防止 critic 一步跳太远拖垮优势估计);
  4. 循环:buffer 清空,回到第 1 步。

工程上的痛点也一目了然:四个模型同时驻留显存(其中 critic 与 actor 同量级、还要训练),rollout 与训练交替导致 GPU 利用率难打满,超参(ϵ\epsilonβ\betaλ\lambda、value coef)彼此耦合。这些痛点,就是后面两个算法各自的出发点。

DPO:把 RL 整个绕过去

RLHF 的优化目标(最大化奖励 + KL 正则)其实存在闭式最优解:

π(yx)πref(yx)er(x,y)/β\pi^*(y|x) \propto \pi_{ref}(y|x)\, e^{r(x,y)/\beta}

DPO 的观察是:这个式子可以反解出奖励 r(x,y)=βlogπ(yx)πref(yx)+Cr(x,y) = \beta \log \frac{\pi^*(y|x)}{\pi_{ref}(y|x)} + C,把它代回偏好数据的 Bradley–Terry 模型("人类觉得 ywy_wyly_l 好"的概率建模),奖励模型就被消掉了,直接得到一个针对策略本身的监督式损失:

LDPO=E[logσ(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref(ylx))]L_{DPO} = -E\left[\log \sigma\left(\beta \log \frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)\right]

不用训 RM,不用采样,不用 critic,一个类似分类的损失直接在偏好对上微调。代价是它彻底放弃了"交互":DPO 是纯离线的,只能在别人(通常是旧策略或别的模型)生成的回复对上学习,没有探索,分布外的行为约束也弱。用前文的语言说:DPO 干脆承认了这是个单步 bandit,并且连 bandit 的"拉杆试错"都省了,退化成了监督学习。它是 RLHF 的一个轻量替代,而不是 RL 路线的延续。

GRPO:把 critic 也省掉

回到 RL 路线。PPO 四模型里最让人心疼的是 critic:它和 actor 一样大,要单独训练,而它存在的意义只是给优势估计提供基线。GRPO(Group Relative Policy Optimization,出自 DeepSeekMath,随 DeepSeek-R1 出圈)的思路是:既然 RLHF 本质上是序列级的单步 MDP,那"基线"根本不需要一个网络去学——对同一个 prompt 多采几条回复,它们互相就是彼此的基线

具体做法:对每个 prompt 采样一组 GG 条回复(比如 8~64 条),各自拿到整句奖励 rir_i,组内标准化得到序列级优势:

A^i=rimean(r1,,rG)std(r1,,rG)\hat{A}_i = \frac{r_i - \text{mean}(r_1, \dots, r_G)}{\text{std}(r_1, \dots, r_G)}

这个优势广播到该回复的每个 token 上,套用与 PPO 相同的 clip 目标;KL 惩罚不再混进奖励,而是用一个无偏估计器作为独立的正则项加在损失里。于是 critic 没了,GAE 没了,显存和调参负担骤减。注意这里的因果链:正因为(大模型场景下的)MDP 发生了单步退化,序列级优势才是无偏可用的;把 GRPO 直接搬去真正多步的经典控制问题反而不合适。分类学在这里第一次"兑现"了。

与 GRPO 配套的另一个关键转变是 RLVR(Reinforcement Learning with Verifiable Rewards):在数学、代码这类可自动判分的任务上,用规则验证器(答案对不对、测试过没过)替代学习出来的 RM。奖励从"一个可能被钻空子的近似模型"变成"客观事实",reward hacking 的空间被大幅压缩——R1 展示出的长链推理与自我反思行为,正是在这种设置下涌现的。

GRPO 之后出现了一批稳定性改进,代表是 DAPO 的四个修改:clip-higher(放宽上侧裁剪防熵坍缩)、dynamic sampling(丢弃组内全对/全错、优势为零的 prompt)、token-level loss(长序列下按 token 而非按样本平均,修正长度偏置)、overlong shaping(对超长截断的回复做奖励塑形)。细节不展开,但它们全都是在"组内相对 + 裁剪"这个骨架上打的补丁。

Agentic RL:把 MDP 还原回来

现在可以收束全文了。RLHF/RLVR 一路的成功,某种意义上是把 RL 用在了一个退化到几乎不是 RL 问题的问题上。而 Agentic RL 的出现,是任务本身把完整的 MDP 又还给了我们:让模型使用搜索引擎做研究、在沙箱里写代码调试、操作 GUI 完成任务——这些场景天然是多步的、有真实环境反馈的。对照第一节的语言,这次转变可以列一张表:

RLHF / RLVR(退化单步) Agentic RL(完整多步)
状态 prompt(静态) 外部世界的观测(动态、部分可观测
动作 生成一段文本 文本 + 结构化工具调用
转移 确定性拼接,一步终止 随机、多步、由环境决定
奖励 结束时一个标量 稀疏的任务奖励 + 逐步的过程信号
目标 最大化即时期望奖励 最大化折扣累积回报

严格地说,状态一栏的变化意味着问题从 MDP 变成了 POMDP:模型看到的(工具返回的文本片段)只是环境真实状态的一个不完整观测,历史上下文承担起了"信念状态"的角色。前文按五个维度做的分类,在这里逐项翻转:退化消失了(多步回来了)、环境重新未知(真实世界)、确定性消失了(工具与用户都有随机性)、连续性上动作空间变成了"文本 ∪ 工具调用"的混合空间。每一项翻转都对应一个训练难题

  • 信用分配重新变难:一次任务几十轮交互、上万 token,最终只有一个成败信号。优势应该按 token 算、按轮(turn)算,还是按整条轨迹算?turn-level 的 GRPO 变体(对每轮单独估计相对优势)是当前的主要探索方向之一;
  • 奖励设计:纯结果奖励太稀疏,过程奖励又难免重新引入"可被钻空子的近似判分"。verifiable 的部分(代码通过测试、答案匹配)与 learned 的部分(轨迹质量评估)如何配比,没有标准答案;
  • 环境工程成为一等公民:需要可复位、可并行、防作弊的沙箱(浏览器仿真、代码执行环境、GUI 环境),环境的丰富程度直接决定 RL 信号的上限;
  • 基础设施:rollout 一条轨迹要真实地调用工具、等待返回,耗时且长短不一,同步训练会让 GPU 大量空转,于是异步 rollout、经验回放成为标配——而这又推高了数据的 off-policy 程度,回过头来考验算法的稳定性(还记得重要性采样的方差问题吗)。

所以这篇文章的主线其实是一个环:马氏性给了我们 MDP 这套语言;对 MDP 做分类,让我们看清 RLHF 是它的一个极端退化特例,并据此理解了 PPO → DPO → GRPO 每一步"在省掉什么、凭什么能省";而 Agentic RL 把被省掉的东西——多步、未知环境、随机性、信用分配——一件件还了回来。工具在进化,但判断"哪个工具适用"的坐标系,始终是第一节里那几个朴素的问题:退化了吗?环境已知吗?随机吗?时齐吗?状态和动作长什么样?

(关于 Agentic RL 的系统性综述,可参考文首引用的 arXiv:2509.02547,它对能力维度——规划、工具使用、记忆、推理、自我改进——以及环境与框架生态有远比本文详尽的整理。)