让智能体拥有记忆:Microsoft Foundry Agent Service 的程序性记忆
我最近一直在琢磨一件事:为什么 AI 智能体用起来总有种"似曾相识的挫败感"。
我们把越来越多的活儿交给它——写材料、排会议、报税,甚至直接上手构建和调试生产系统。它的能力肉眼可见地在变强,可有个毛病始终没治好:同样的坑,它会一次又一次地踩进去。
举个我自己踩过的例子。智能体执行 python main.py,结果项目是用 uv 管理依赖的,直接甩给我一个 ModuleNotFoundError。它试了好几轮,最后摸索出 uv run python main.py 才是对的。但下周再来一次呢?同样的报错,同样白烧掉的 token 和时间。如果它有"程序性记忆"(Procedural Memory),学一次就够了,然后记住这条:在用 uv 管理的项目里,一律走 uv run。
这可不是什么偶发的边角情况。智能体反复重新摸索同一套流程、把犯过的错再犯一遍,根源就一个:它不会从过去的经历里学东西。
现有的记忆系统到底缺了什么
市面上大多数记忆方案能存的是事实、用户偏好、对话历史这类信息。问题是,光有这些信息,还不足以告诉智能体"这种情况下该怎么做"。于是它执行工作流时不够稳,遵守那些没写明的约束时容易漏,重复的失败也躲不开。真正缺的那块拼图不是更多信息,而是"怎么做"的程序性知识。
下面是一个购物助理智能体从过往轨迹里攒下来的一条经验。它只有两个字段:Context 和 Action。Context 描述这条经验在什么触发条件下适用,Action 则给出应该照做的动作模式。等智能体下次碰到类似场景,这条经验会被调出来,帮它把不可选的选项直接过滤掉,少走神,也少犯错。
|
|
不是所有经历都值得学
我越用越体会到一点:经历这东西,含金量差别很大。基础模型越来越强以后,很多"成功案例"其实只是把模型本来就会的东西又演了一遍,学了等于没学。真正有价值的反而是那些失败,还有差一点就失败的时刻。
这些高信号的案例,会把决策里的软肋暴露出来:假设下错了、该做的校验没做、把隐含约束给违反了、任务还没干完就提前收工。把学习的重心压在这类经历上,智能体才会变得更靠谱,而不是一遍遍强化它早就熟练的那些动作。
没有标签,怎么学
这里有个绕不开的研究难题。学术上早就证明过,智能体的技能可以从过往轨迹里蒸馏出来。可一旦要把这套东西搬进生产环境,麻烦就来了。
跟那些带标注的基准数据集不一样,真实世界里的学习信号是埋在动作序列、工具输出和用户反馈里的。它们又吵、又不完整,还经常靠不住。你想从这堆噪声里捞出干净的"该怎么做",难度完全是另一个量级。
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¹ 还大,这点我觉得挺关键。它说明记忆带来的不只是"偶尔能做对",而是让智能体在同一件事上的表现变得更稳。对生产系统来说,稳定往往比偶尔的高光更值钱。
接下来还能往哪走
官方给了几个方向,我读下来觉得都踩在痛点上。
一个是从群体层面的模式里学。单条轨迹经常又吵又不可靠,但把大量相似轨迹聚到一起分析,就能筛出那些反复奏效的行为,也能把反复出现的失败模式挖出来,学到的东西自然更稳、也更通用。
再一个是让记忆能升能降、持续接收反馈。程序性记忆不该是存进去就一成不变的死数据,环境在变,它也得跟着变。靠持续的反馈,把有用的经验往上提,把过时的往下压,记忆库才能一直跟当前的工作流和用户需求对得上。
还有一个是记忆的整合。经验攒多了,冗余和碎片化就会拖垮检索质量。把相似的记忆合并成更高层的抽象,既能降噪,也能把一堆零散的经历变成可复用的行为知识。
想上手试试
如果你也想给自己的智能体装上这种能持续积累的程序性记忆,下面几个链接够你起步了:
- Create and Use Memory - Microsoft Foundry | Microsoft Learn:Foundry Memory 的上手文档。
- BetaMemoryStoresOperations 类 | Microsoft Learn:Foundry Memory 的 API 参考。
- STATE-Bench 仓库:拿它来测测你自己的智能体。
- Introducing STATE-Bench 博客:想深入了解这个基准可以读它。
- 本文作者:BeanHsiang
- 本文链接:https://beanhsiang.github.io/post/2026-07-17-agents-can-learn-with-memory-in-microsoft-foundry-agent-service/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。