前两篇文章中,我们讲了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的未来,不在于让它无限记住一切,而在于让它在恰当的边界内,记住该记住的,忘掉该忘掉的,把过程留下来,把结果交付出来。
真正成熟的智能体系统,不是一个永不遗忘的怪物。
而是一个知道如何组织信息、如何保存过程、如何复用经验、如何接受审查的工作系统。
它不靠记忆堆积显得聪明。
它靠信息秩序变得可靠。