Agent入门第三课:上下文不是越长越好,记忆也不是越多越聪明

前两篇文章中,我们讲了Agent的基本结构,也讲了Agent如何调用工具。

如果说工具调用让Agent拥有了"手",那么上下文与记忆,决定了Agent有没有"脑中的工作台"和"可复用的经验"。

一个Agent要完成任务,不只是靠模型参数。它还要知道当前用户在问什么,之前说过什么,工具返回了什么,文件里写了什么,当前任务进行到哪一步,哪些结果已经生成,哪些错误需要处理。

这些信息共同构成了Agent的上下文、记忆和状态。

但这里有一个常见误区:

上下文不是越长越好,记忆也不是越多越聪明。

一个人桌上资料堆得越多,不代表工作效率越高。

一个人记住所有细节,也不代表他能做出正确判断。

真正重要的,是把正确的信息放在正确的位置,在正确的时刻交给模型。

今天这篇文章,我们介绍10个关于Agent上下文与记忆的基础术语:

Context、Context Window、Context Engineering、Memory、Short-Term Memory、Long-Term Memory、State、Checkpoint、Persistence、Artifact。

它们共同回答一个问题:

Agent如何在复杂任务中记住该记住的,忘掉该忘掉的,并把过程稳定地推进下去?

一、Context / 上下文:Agent当前能看见的世界

上下文指的是Agent在当前一次模型调用中可以看到的信息。它可能包括用户当前问题、历史对话、系统指令、工具返回结果、文件内容、任务状态、中间推理摘要等。

生活中可以把上下文想象成一个人的工作桌面。

你正在写一份报告,桌面上可能放着会议纪要、数据表、参考文章、老板批注、草稿纸和任务清单。你此刻能参考的东西,就是你的工作上下文。

Agent也是如此。

它不是凭空回答问题,而是基于当前上下文生成下一步判断。

在Agent系统中,上下文可能包括:

用户的问题;

历史对话;

系统规则;

开发者指令;

工具调用结果;

检索到的文档;

当前任务计划;

执行日志;

错误信息;

用户偏好;

生成中的报告或代码。

在AIDD场景中,如果用户要求Agent分析一个靶点,上下文可能包括靶点名称、疾病背景、文献检索结果、蛋白结构信息、已有药物进展、之前工具返回的表格,以及当前报告大纲。

上下文决定Agent此刻"知道什么"。

但上下文也有风险。

无关信息太多,会干扰判断;

过期信息混入,会误导结论;

重复信息堆积,会浪费窗口;

错误工具结果进入上下文,会被模型当成事实继续使用。

上下文像灯光。

照得太少,看不清;

照得太乱,也会刺眼。

真正重要的不是把所有东西都照亮,而是照亮当前任务需要的地方。

二、Context Window / 上下文窗口:模型一次能看多少东西

它指的是模型一次调用能够处理的最大上下文长度。可以理解为模型一次能放进"脑中工作台"的信息容量。

生活中可以想象一张办公桌。

桌子越大,能摊开的材料越多。但桌子再大,如果把所有合同、报表、邮件、聊天记录、旧版本文档都堆上去,人也会混乱。大桌子解决的是容量问题,不自动解决组织问题。

上下文窗口也是如此。

很多人以为模型上下文越长越好。实际上,上下文越长,只说明模型能接收更多信息,并不代表模型会更有效地使用这些信息。

在Agent系统中,长上下文可能带来几个问题:

信息噪声增加;

关键内容被淹没;

模型注意力分散;

成本升高;

响应变慢;

旧信息与新信息冲突;

敏感信息暴露风险增加。

在AIDD场景中,如果让Agent分析100篇文献,不应该把所有原文一次性塞给模型。更合理的做法是先检索、筛选、摘要、结构化,再把与当前问题最相关的证据放入上下文。

上下文窗口像一只篮子。

篮子变大,能装更多东西。

但如果没有筛选,装进去的也可能只是更多杂物。

真正成熟的Agent系统,不是追求把所有信息塞进去,而是知道什么信息该进去、什么信息不该进去。

三、Context Engineering / 上下文工程:把信息组织成模型能用的样子

它是设计哪些信息进入上下文、如何排序、如何压缩、如何隔离噪声、如何避免冲突的工程方法。

如果说上下文是桌面,那么上下文工程就是整理桌面的能力。

生活中,一个优秀的助理不会把所有资料一股脑扔给领导。他会先筛掉无关材料,把关键结论放在前面,把证据放在后面,把风险单独标出来,把过期版本撤掉。

上下文工程也是这样。

它关心的问题包括:

当前任务真正需要哪些信息?

哪些历史对话应该保留?

哪些工具结果需要摘要?

哪些内容需要结构化成表格?

哪些信息应该放在前面?

哪些信息可能互相冲突?

哪些内容应被压缩?

哪些内容应被遗忘?

哪些敏感信息不能进入模型上下文?

在Agent系统中,上下文工程非常关键。因为模型不是万能读者。你给它混乱材料,它就可能给出混乱答案;你给它过期证据,它就可能得出过期结论;你给它一堆无关信息,它就可能在噪声中迷路。

在AIDD中,上下文工程尤其重要。例如,一个靶点评估Agent不应该直接读取所有文献全文,而应当提取疾病相关性、结构可成药性、药物进展、风险证据等结构化内容,再交给模型综合判断。

上下文工程不是提示词技巧的简单升级。

它更像信息治理。

它决定模型看到的是一堆杂物,还是一份可用的证据包。

四、Memory / 记忆:让Agent不必每次从零开始

记忆是Agent保存和复用信息的机制。它可以让Agent在当前任务、当前会话甚至跨会话场景中保留重要信息。

生活中,一个没有记忆的人,每次见你都要重新问你是谁;每次做项目都要重新学习背景;每次犯错都无法积累经验。这样的人即使聪明,也很难成为可靠合作者。

Agent也是如此。

如果没有记忆,Agent每次任务都像第一次启动。它不知道用户偏好,不知道项目背景,不知道上次做过什么,也不知道哪些路线已经失败过。

记忆可以保存:

用户偏好;

项目背景;

历史任务结果;

常用格式;

业务规则;

工具调用经验;

重要实体信息;

长期知识;

失败教训。

但记忆也不能随便保存。

不重要的信息保存下来,会污染系统;

错误信息保存下来,会反复误导;

敏感信息保存下来,会带来风险;

过期信息保存下来,会造成错误判断。

记忆不是仓库越满越好。

真正有价值的记忆,必须经过选择、更新、遗忘和治理。

一个Agent若记住太少,会显得健忘。

若记住太多,又可能背着垃圾前进。

五、Short-Term Memory / 短期记忆:当前任务里的工作记忆

它指的是当前会话或当前任务内使用的工作记忆,例如历史消息、中间变量、临时工具结果、当前任务进度等。

生活中可以把短期记忆想象成你做菜时临时记住的事情。

你知道锅里正在炖汤,盐还没放,米饭还有十分钟,青菜已经洗好。这些信息对当前做饭任务很重要,但不一定需要永久保存。

Agent的短期记忆也是如此。

它通常服务于当前线程、当前会话或当前任务。比如:

用户刚才上传了一个文件;

工具刚返回了一个错误;

当前执行到第三步;

某个候选分子已经被过滤;

报告大纲已经生成;

用户要求使用正式语气;

刚刚检索到三篇相关文献。

在Agent系统中,短期记忆帮助Agent保持连续性。否则,每一步都会像失忆一样重新开始。

在AIDD任务中,短期记忆可能保存当前候选分子列表、对接任务进度、临时评分结果、当前筛选阈值、用户刚刚修正的靶点名称等。

短期记忆像工作台上的便签。

任务结束后,很多便签就可以扔掉。

如果每张便签都装订进档案,档案迟早会变成垃圾场。

六、Long-Term Memory / 长期记忆:跨任务复用的经验和事实

它指的是跨会话、跨任务保存的信息,例如用户偏好、项目知识、业务事实、历史任务经验等。

生活中,长期记忆像一个人的经验。

你不需要每天重新学习自己的工作方式,不需要每次都重新认识同事,也不需要每个项目都从零建立常识。长期记忆让经验沉淀,让协作更连续。

Agent的长期记忆可以包括:

用户长期偏好;

常用写作风格;

项目背景;

组织术语;

业务规则;

历史结论;

常见错误;

常用工具选择;

跨任务知识。

在Agent系统中,长期记忆的价值在于减少重复沟通。例如用户长期偏好正式文风,Agent就不必每次询问;某个项目已经确认了靶点、数据来源和分析框架,后续任务可以直接复用。

在AIDD中,长期记忆可以保存项目靶点背景、候选分子筛选规则、实验室常用阈值、报告模板、前几轮筛选失败原因等。

但长期记忆必须更谨慎。

因为它会跨任务影响未来判断。错误长期记忆比错误短期记忆更危险。短期错误可能影响一次任务,长期错误可能污染一系列任务。

长期记忆像刻在墙上的字。

写上去之前,要比写便签更慎重。

一个成熟Agent,不应只是会记住。

它还要知道什么值得长期记住,什么应该过期,什么必须删除。

七、State / 状态:Agent运行过程中的结构化变量

状态是Agent执行过程中的结构化变量,用来记录当前任务处于什么阶段、有哪些中间结果、哪些工具已经调用、当前是否出错、下一步该做什么。

生活中可以想象医院病历中的"当前状态"。

病人已完成检查,血液结果已出,影像结果未出,医生已开初步诊断,下一步等待会诊。状态不是最终结论,而是过程记录。

Agent的State也是这样。

它可能包括:

当前任务步骤;

任务进度;

用户输入;

已调用工具;

工具返回结果;

错误信息;

中间变量;

待确认事项;

当前计划;

最终输出草稿。

在Agent系统中,State很重要,因为Agent不是一次性完成所有事情,而是在多轮循环、多工具调用、多步骤执行中推进任务。没有状态,系统无法知道自己走到哪里。

在AIDD中,一个候选分子筛选Agent的State可能包括:

当前分子列表;

已计算的描述符;

已过滤的分子;

ADMET预测结果;

对接任务编号;

失败分子原因;

当前排序规则;

待生成报告。

State让Agent从"对话模型"变成"流程系统"。

没有State,Agent只能记得一段话。

有了State,Agent才知道自己正在做一件事。

八、Checkpoint / 检查点:把执行过程暂时保存下来

检查点是保存某一时刻执行状态的机制。它可以帮助系统在中断后恢复、失败后重跑,或者让人工在关键节点介入。

生活中可以想象游戏存档。

你玩一个复杂游戏,如果没有存档,一旦失败就要从头开始。有了存档,就可以回到某个关键节点重新尝试。

Agent执行复杂任务时也需要检查点。

例如,一个任务需要检索资料、调用工具、运行脚本、生成文件、等待用户确认。如果运行到第八步突然报错,不应该从第一步重来。系统应该能恢复到最近检查点,修复错误后继续执行。

在Agent系统中,Checkpoint常用于:

长任务恢复;

失败重跑;

人工审核;

时间回溯;

调试排错;

多步骤执行记录;

工作流暂停与继续。

在AIDD中,一个MD模拟准备Agent、分子筛选Agent或报告生成Agent,都可能需要检查点。因为这些任务可能运行时间长、步骤多、工具复杂,一旦失败,完全重跑成本很高。

Checkpoint像登山路上的营地。

没有营地,摔一次就要回到山脚。

有了营地,失败仍然痛苦,但不必从零开始。

九、Persistence / 持久化:让状态和记忆离开临时内存

持久化是指把Agent的状态、记忆和执行进度保存到数据库、文件系统或其他存储系统中,使其在程序重启、任务中断、会话结束后仍然可以恢复。

生活中可以把它想象成把草稿写进文档,而不是只记在脑子里。

脑子里的想法一睡觉可能忘掉;写进文档,就可以第二天继续改。临时内存中的状态一旦程序结束就没了,持久化则让任务有机会延续。

在Agent系统中,持久化可以保存:

会话状态;

任务进度;

检查点;

用户长期记忆;

历史工具结果;

产物索引;

错误日志;

人工反馈;

跨任务知识。

持久化对长任务尤其重要。比如一个Agent要分析大量文献、跑批量分子筛选、生成多个报告版本,不可能要求它在一次调用中完成所有事情。它需要保存进度,下一次继续。

在AIDD中,持久化可以支持:

长时间批处理任务;

候选分子多轮筛选;

实验数据持续更新;

项目知识跨会话复用;

失败任务恢复;

多用户协作审计。

但持久化也要治理。

什么该保存?

保存多久?

谁能访问?

如何删除?

如何更新?

如何防止过期信息继续被使用?

持久化让Agent有了长期工作能力。

但凡是长期保存的东西,都会变成责任。

不持久化,系统容易失忆。

乱持久化,系统容易背负错误和风险。

十、Artifact / 产物:Agent执行后留下的结果

它指的是Agent执行后生成的文件、报告、图表、代码、日志、预测结果、数据表、模型输出等可被保存、查看、复用的结果。

生活中,一个项目结束后,不应只剩下一句"我做完了"。它应该留下文档、表格、图纸、代码、记录、结论和交付物。

Agent也是如此。

一个任务如果没有产物,就很难审查、复用和交接。

Artifact可以包括:

分析报告;

结构化表格;

图表;

代码文件;

日志文件;

预测结果;

对接结果;

候选分子列表;

知识库条目;

实验方案草案;

PPT或Word文档。

在Agent系统中,Artifact非常重要。它把Agent的执行过程转化为可交付结果。

在AIDD中,Artifact可能是:

靶点调研报告;

分子筛选表;

ADMET预测结果;

对接姿势文件;

蛋白结构图;

候选分子优先级清单;

实验验证建议;

项目汇报材料。

Artifact也需要管理版本。因为同一个任务可能多次迭代,生成多个版本。如果没有版本管理,用户很难知道哪个是最终结果,哪个是中间草稿,哪个已经被废弃。

Artifact是Agent行动留下的脚印。

脚印清楚,人才知道它走过哪里。

脚印混乱,所谓完成也只是口头上的完成。

把这10个概念串起来:Agent如何记住过程并交付结果?

现在,我们把这些概念放入一个完整场景。

假设用户让Agent完成一个任务:

请帮我分析一批候选分子,并生成筛选报告。

首先,Agent需要构建Context,也就是当前可见的信息:用户要求、候选分子文件、筛选规则、已有工具结果和报告格式。

但模型有Context Window限制,所以不能把所有数据一股脑塞进去。这时需要Context Engineering:筛选关键信息,压缩长表格,把中间结果结构化,只把当前决策需要的内容送入上下文。

任务执行过程中,Agent需要Memory。当前会话中的临时信息进入Short-Term Memory,例如当前分子列表、筛选阈值、工具返回结果。跨任务有用的信息进入Long-Term Memory,例如用户常用报告风格、项目背景、常用ADMET阈值。

同时,Agent维护State,记录当前执行到哪一步,哪些分子已经过滤,哪些工具已经调用,哪些结果待确认。

执行到关键节点时,系统保存Checkpoint。这样如果后续对接任务失败,可以回到对接前的状态继续,而不必从头开始。

如果任务时间较长,Persistence负责把状态、记忆和进度写入数据库或文件系统,使系统中断后还能恢复。

最后,Agent生成Artifact,比如候选分子筛选表、分析报告、图表、日志和结果文件。这些产物可以交付用户,也可以进入后续任务继续使用。

这条流程可以概括为:

组织上下文 → 控制窗口 → 设计上下文工程 → 使用短期记忆 → 沉淀长期记忆 → 维护状态 → 保存检查点 → 持久化进度 → 交付产物。

这就是Agent在复杂任务中保持连续性和可交付性的基本逻辑。

结语:Agent真正需要的不是无限记忆,而是有边界的记忆

上下文和记忆,是Agent系统中最容易被误解的部分。

很多人以为上下文越长,Agent越聪明。

很多人以为记忆越多,Agent越懂用户。

很多人以为能保存状态,就等于系统可靠。

但事实并不这么简单。

Context决定Agent当前看见什么;

Context Window决定一次能看多少;

Context Engineering决定哪些信息应该进入上下文;

Memory让Agent不必每次从零开始;

Short-Term Memory支撑当前任务连续推进;

Long-Term Memory支撑跨会话经验复用;

State记录执行过程中的结构化变量;

Checkpoint让系统可以中断恢复和失败重跑;

Persistence让状态和记忆离开临时内存,成为可恢复的系统能力;

Artifact让Agent的工作留下可检查、可复用、可交付的结果。

这些概念共同构成了Agent的"认知后勤系统"。

一个真正可靠的Agent,不只是会回答,也不只是会调用工具。它还必须知道:

当前该看什么;

过去该记什么;

过程该存什么;

错误后该从哪里恢复;

最终该交付什么。

没有上下文,Agent是盲的。

没有记忆,Agent是健忘的。

没有状态,Agent是不知道自己走到哪一步的。

没有检查点,Agent一旦失败就只能重来。

没有持久化,Agent无法承担长任务。

没有产物,Agent就没有真正交付。

但我们也要记住:

记忆不是智慧。

长上下文不是理解。

持久化不是正确。

产物也不等于价值。

Agent的未来,不在于让它无限记住一切,而在于让它在恰当的边界内,记住该记住的,忘掉该忘掉的,把过程留下来,把结果交付出来。

真正成熟的智能体系统,不是一个永不遗忘的怪物。

而是一个知道如何组织信息、如何保存过程、如何复用经验、如何接受审查的工作系统。

它不靠记忆堆积显得聪明。

它靠信息秩序变得可靠。

相关推荐
zhengfei6111 小时前
第7章 Agent 求职面试准备与行业实践
人工智能
老饼讲解-BP神经网络1 小时前
BP神经网络用什么训练算法(traingd、traingdm、trainlm)
人工智能·神经网络·算法
xiezhr1 小时前
Hermes官方桌面版发布了
人工智能·ai·agent·codex·hermes
Gavynlee1 小时前
ubuntu22.04 配置cluade code & 硅基流动API
人工智能
jinxindeep1 小时前
Bi-Adapt:基于语义对应实现跨类别双臂操作的高效泛化
人工智能·机器人
Godspeed Zhao2 小时前
Level 4自动驾驶系统设计2——功能与场景2
人工智能·机器学习·自动驾驶
Jerry.张蒙2 小时前
AI工具Opencode助力SAP提质增效实践
大数据·运维·服务器·人工智能·运维开发
老徐聊GEO2 小时前
AI搜索流量转化率实测分享:我的案例与复盘
人工智能·python
草莓熊Lotso2 小时前
【LangChain】流式传输原理与 LangSmith 应用监控全解析
人工智能·python·langchain·gpt-3