乐于分享
好东西不私藏

你的 AI Agent 需要记忆吗?手把手教你搭建记忆系统

你的 AI Agent 需要记忆吗?手把手教你搭建记忆系统

你的 AI Agent 需要记忆吗?手把手教你搭建记忆系统

核心要点:Agent 记忆是实现智能对话体验的关键能力,本文通过 LangSmith 工具链展示了一套完整的记忆实现方案——从轨迹捕获到分析再到记忆更新,让 Agent 能够从错误中学习、记住用户偏好,并在后续交互中持续改进


为什么 Agent 需要记忆?

核心痛点:没有记忆的 Agent 会让用户反复纠正同样的问题

Agent 记忆(Memory)是一种持久的上下文信息,Agent 可以在多次运行中检索它来指导自己的行为。它包括:事实、偏好、历史交互、指令、技能、示例和学习到的模式。

记忆能力的差异直接决定了用户体验——用户是否需要不断重复纠正,还是 Agent 在第一次被告知后就能正确执行。


记忆的两大类型

理清记忆的范畴有助于判断什么信息该放在哪里。

短期记忆(工作记忆)

短期记忆是 Agent 在执行当前任务时可用的上下文:当前对话线程、最近的消息、工具调用结果、检索到的文档、中间推理产物,以及完成当前工作所需的临时文件或状态。

长期记忆

长期记忆是超越当前运行而持久存在的上下文:事实、偏好、示例、工作流程、策略、指令和技能,它们应在后续运行中可用,并持续塑造 Agent 的行为。

核心关系:长期记忆与短期记忆之间是一个读写循环。运行时,长期记忆通过提示组装(Prompt Assembly)、从存储中检索、工具访问、文件或运行时状态等方式被加载到短期记忆中。运行结束后,轨迹数据中蕴含的有用信号——用户的偏好、需要澄清的指令、工具使用模式——被提取并写回长期记忆。


一个有用的记忆分类框架

在认知科学中,长期记忆通常被分为三类,这一分类已被广泛应用于语言模型 Agent 系统:

语义记忆 —— Agent 知道什么

事实、偏好和通用知识。

情景记忆 —— Agent 经历过什么

历史交互、示例、动作和结果。

程序性记忆 —— Agent 应该如何行动

指令、工作流程、策略、技能和工具使用规则。

实践经验:大多数 Agent 行为的显著改进来自程序性记忆。当 Agent 反复格式错误、调用工具的次序混乱、委托给了错误的子 Agent、或忽略了语气规则时,修复方案往往是程序性的——让规则更清晰、调整 Agent 执行的步骤、或将行为移交给更具体的技能模块。


Agent 记忆系统的高层架构

一个运行良好的 Agent 记忆循环包含三个核心环节:

1. 捕获轨迹(Capture Traces)

轨迹是证据层。一个良好埋点的轨迹记录 Agent 在完成任务过程中的完整路径:用户输入、模型调用、工具输入与输出、检索到的文档、路由决策、延迟、错误,以及用户反馈。

重要性:与传统确定性软件不同,你通常只有在检查轨迹之后才能知道 Agent 的行为。意外行为可能由弱提示词、缺失工具、混乱的工具 Schema(模式定义)、糟糕的检索、过时的上下文、过于宽泛的指令或路由决策导致——检查轨迹可以隔离这些原因。

2. 分析轨迹(Analyze Traces)

捕获轨迹后的下一步是找到有用的信号。部分信号来自明确的用户反馈或评估失败。部分来自重复出现的模式:同样的错误输出、同样的无效工具调用、同样的路由错误、或同一条被忽略的指令。

注意事项:诊断的难点在于——相同的症状可能指向不同的修复方案。如果 Agent 忽略了一条语气规则,该规则可能过于模糊、位置不对、不在相关技能模块中、或被另一条指令矛盾。

3. 更新记忆(Update Memory)

一旦理解了信号,系统需要决定未来上下文是否需要变更。这可能意味着修复问题——澄清指令或修改路由规则——也可以意味着记住有用的信息:用户偏好、成功的示例、或 Agent 后续可以复用的模式。


用 LangSmith 实现记忆系统

你可以用 LangSmith 工具链完成整个记忆循环:

环节
工具
捕获轨迹
LangSmith Observability(可观测性)
分析轨迹
LangSmith Engine(分析引擎)
更新记忆
LangSmith Context Hub(上下文中心)

捕获轨迹

在 LangSmith 中,Tracing(跟踪)提供了捕获功能。Tracing Projects(跟踪项目)储存了 Agent 执行轨迹的丰富记录,让你能够检查和理解 Agent 的行为逻辑。

分析轨迹

LangSmith Engine 是将轨迹转化为改进信号的后台进程。它不需要你手动检查每次运行,而是自动分析轨迹中的重复性问题、诊断可能的根因,并提出能够改善未来行为的具体变更——例如添加一条规则、将指令移到更相关的工作流附近、创建新的示例、更新技能模块或修改路由策略。

更新记忆

Context Hub 是这些变更转化为持久化 Agent 上下文的地方。它提供了一个带版本管理的能力来管理 Agent 使用的指令、工具和技能,让记忆不再是散落在应用代码中的临时提示词修改。

工作流程:上下文更新后,后续运行会自动加载最新上下文,形成闭环——轨迹被捕获 → Engine 提取改进信号 → Context Hub 储存记忆 → 下一次运行从更新后的上下文开始。


实践经验:构建可靠记忆系统的设计原则

原则一:不是所有内容都该变成记忆

核心要点:大部分轨迹数据应保留为历史记录

部分数据应成为数据集示例、评估用例、代码变更或工具 Schema 修改。只有一小部分应成为持久化的上下文。不要过度记忆。

原则二:确保后续运行真正读取更新

注意事项:如果运行时缓存了提示词、工具或技能,记忆写入后需要有刷新路径

否则系统可能存储了正确的更新,却继续使用过时的上下文运行。

原则三:用评估保护重要行为

核心要点:如果某个记忆更新足够重要到能塑造未来行为,那么就值得建立检测机制来确保该行为不会退化


总结

维度
要点
核心价值
Agent 从错误中学习,减少用户重复纠正
记忆类型
短期记忆(当前任务上下文)+ 长期记忆(持久化知识)
分类框架
语义记忆(事实)、情景记忆(经验)、程序性记忆(行为规则)
实现循环
捕获轨迹 → 分析轨迹 → 更新记忆
工具方案
LangSmith Observability + Engine + Context Hub
关键原则
精简记忆内容、保证刷新路径、用评估保护行为

技术特点:本文展示的 LangSmith 记忆方案是目前业界较为成熟的 Agent 记忆实现路径,适合技术团队快速上手搭建。记忆机制本身是通用的,不依赖于具体平台——核心抽象(捕获 → 分析 → 更新)可以适配到任何 Agent 框架。


文档来源:How To Give Your Agent Memory原始作者:Jake Broekhuizen


本文由 AI 助手整理优化,欢迎关注、分享转载,请注明出处