我最近一直在琢磨一件事:为什么 AI 智能体用起来总有种"似曾相识的挫败感"。

我们把越来越多的活儿交给它——写材料、排会议、报税,甚至直接上手构建和调试生产系统。它的能力肉眼可见地在变强,可有个毛病始终没治好:同样的坑,它会一次又一次地踩进去。

举个我自己踩过的例子。智能体执行 python main.py,结果项目是用 uv 管理依赖的,直接甩给我一个 ModuleNotFoundError。它试了好几轮,最后摸索出 uv run python main.py 才是对的。但下周再来一次呢?同样的报错,同样白烧掉的 token 和时间。如果它有"程序性记忆"(Procedural Memory),学一次就够了,然后记住这条:在用 uv 管理的项目里,一律走 uv run

这可不是什么偶发的边角情况。智能体反复重新摸索同一套流程、把犯过的错再犯一遍,根源就一个:它不会从过去的经历里学东西。

现有的记忆系统到底缺了什么

市面上大多数记忆方案能存的是事实、用户偏好、对话历史这类信息。问题是,光有这些信息,还不足以告诉智能体"这种情况下该怎么做"。于是它执行工作流时不够稳,遵守那些没写明的约束时容易漏,重复的失败也躲不开。真正缺的那块拼图不是更多信息,而是"怎么做"的程序性知识。

下面是一个购物助理智能体从过往轨迹里攒下来的一条经验。它只有两个字段:ContextActionContext 描述这条经验在什么触发条件下适用,Action 则给出应该照做的动作模式。等智能体下次碰到类似场景,这条经验会被调出来,帮它把不可选的选项直接过滤掉,少走神,也少犯错。

1
2
3
4
5
6
{
  "Context": "when a user wants to exchange \
  a product for a different variant",
  "Action": "check variants for availability and \
  only present variants that are currently available"
}

不是所有经历都值得学

我越用越体会到一点:经历这东西,含金量差别很大。基础模型越来越强以后,很多"成功案例"其实只是把模型本来就会的东西又演了一遍,学了等于没学。真正有价值的反而是那些失败,还有差一点就失败的时刻。

这些高信号的案例,会把决策里的软肋暴露出来:假设下错了、该做的校验没做、把隐含约束给违反了、任务还没干完就提前收工。把学习的重心压在这类经历上,智能体才会变得更靠谱,而不是一遍遍强化它早就熟练的那些动作。

没有标签,怎么学

这里有个绕不开的研究难题。学术上早就证明过,智能体的技能可以从过往轨迹里蒸馏出来。可一旦要把这套东西搬进生产环境,麻烦就来了。

跟那些带标注的基准数据集不一样,真实世界里的学习信号是埋在动作序列、工具输出和用户反馈里的。它们又吵、又不完整,还经常靠不住。你想从这堆噪声里捞出干净的"该怎么做",难度完全是另一个量级。

Foundry Agent Service 里的程序性记忆

现在 Foundry Agent Service 的 Memory 已经支持程序性记忆了。它的做法是用 LLM-as-a-judge 去捕捉学习信号,提炼出真正能落地照做的经验,再把这些经验存进数据库。之后智能体一旦遇到和某条经验的 Context 相近的任务,这条经验就会被检索出来,注入到它当前的工作上下文里,引导它把这件事办得更快、更稳、也更准。

我特别关注了它的评测数据。团队在两个基准上做了系统性分析:一个是 microsoft/STATE-Bench,覆盖客服这类企业工作流任务;另一个是 sierra-research/tau2-bench,测的是零售、航空客服等领域里工具、智能体和用户三方的交互。两个基准上的提升都挺一致。

基准 指标 无程序性记忆 启用程序性记忆 差值 Δ
STATE-Bench Pass¹ 53.3% 58.3% +5.0%
STATE-Bench Pass⁵ 32.7% 37.3% +4.6%
Tau-Bench Pass¹ 75.1% 79.8% +4.7%
Tau-Bench Pass⁵ 49.1% 55.4% +6.3%

几个数字怎么读,这里说明一下:

  • PM 就是程序性记忆(procedural memory)的缩写。
  • Pass¹ 是任务的平均成功率,每个任务最多尝试 5 次,衡量的是"尽力而为的能力",也就是智能体到底能不能把任务解出来。
  • Pass⁵ 是那种 5 次尝试全都成功的任务占比,衡量的是稳定性和可靠性,也就是智能体能不能每次都稳定地把任务解出来。

Pass⁵ 那几列的涨幅比 Pass¹ 还大,这点我觉得挺关键。它说明记忆带来的不只是"偶尔能做对",而是让智能体在同一件事上的表现变得更稳。对生产系统来说,稳定往往比偶尔的高光更值钱。

接下来还能往哪走

官方给了几个方向,我读下来觉得都踩在痛点上。

一个是从群体层面的模式里学。单条轨迹经常又吵又不可靠,但把大量相似轨迹聚到一起分析,就能筛出那些反复奏效的行为,也能把反复出现的失败模式挖出来,学到的东西自然更稳、也更通用。

再一个是让记忆能升能降、持续接收反馈。程序性记忆不该是存进去就一成不变的死数据,环境在变,它也得跟着变。靠持续的反馈,把有用的经验往上提,把过时的往下压,记忆库才能一直跟当前的工作流和用户需求对得上。

还有一个是记忆的整合。经验攒多了,冗余和碎片化就会拖垮检索质量。把相似的记忆合并成更高层的抽象,既能降噪,也能把一堆零散的经历变成可复用的行为知识。

想上手试试

如果你也想给自己的智能体装上这种能持续积累的程序性记忆,下面几个链接够你起步了: