嘿,各位老铁,我是元哥。
上回书,咱们总算搞明白了“AI工作流”和“AI智能体”(Agent)的区别:一个是被动执行的“流水线工人”,一个是能主动想办法的“项目经理”。
大家是不是觉得,有了Agent,就能当甩手掌柜,从此高枕无忧了?
元哥先泼盆冷水:一个没有“记忆”和“视野”的项目经理,比流水线工人还可怕!
想象一下,你花重金请来一位履历光鲜的项目经理。第一天,你告诉他:“我们的目标是年底前,把用户活跃度提升20%!” 他满口答应。第二天你问他进展,他一脸迷茫:“对不起老板,我们项目的目标是啥来着?以及,您是哪位?”
你敢用这样的项目经理吗?他今天可能还在按你的要求分析数据,明天没准就忘了这事,跑去研究《母猪的产后护理》了。
你别笑,不经过特殊设计的AI Agent,真的就是这副德行。而这一切问题的根源,都指向一个所有大模型都无法回避的“天生缺陷”。
智能体的“囚徒困境”:那块又贵又小的“白板”
这个“缺陷”,就是大模型的**“上下文窗口”(Context Window)**。
你可以把“上下文窗口”想象成AI大脑里的一块**“临时白板”**。AI在思考和回答问题时,只能看到这块白板上写着的东西。我们跟它聊天,每一次对话,都是在往这块白板上写字。
问题是,这块白板的大小是有限的,而且写字是要钱的(按token计费)!
一旦聊天记录太长,或者你给它的任务资料太多,“白板”写不下了怎么办?AI为了腾地方写下新的内容,就只能擦掉最开始的那些内容。
这一擦,就出大事了。 AI“忘记”了你们最初聊了什么,忘记了它的核心目标,忘记了之前的经验教训。一个有“失忆症”的Agent,会:
- 忘记目标: 执行着执行着,就不知道自己要干嘛了,开始“放飞自我”。
- 重复犯错: 反复在同一个地方跌倒,因为它已经忘了自己是怎么摔的。
- 逻辑混乱: 前后矛盾,行为不一,堪称“精神分裂”。
- 无法处理复杂任务: 任何需要长期记忆的任务,比如“帮我读完这本书并做个总结”,它都无法完成。
【元哥秀代码:一个注定失败的“金鱼”Agent】
我们用一段伪代码,看看一个没有上下文管理的“金鱼”Agent是怎么工作的。
# 一个没有上下文管理的“金-鱼”Agent
conversation_history = ""
while True:
# 1. 获取用户的新输入
user_input = get_user_input()
# 2. 无脑拼接历史记录
# 每次都把所有历史记录和新问题一起发给AI
prompt = conversation_history + user_input
# 3. AI模型处理
# 当`prompt`变得超长,超过模型的上下文窗口时,最早的内容就会被截断
response = large_language_model(prompt)
# 4. 更新历史记录,准备下一次循环
conversation_history += user_input + response
# 5. 输出AI的回复
print(response)
这个简单的循环,在对话初期可能还行。但要不了几轮,conversation_history就会变得无比巨大,不仅每次请求的费用飞涨,更致命的是,一旦超出模型的上限,AI就会开始“失忆”,灾难就此开始。
救星登场:到底啥是“上下文工程”?
为了把AI从这个“记忆囚笼”里解救出来,一个全新的、至关重要的领域应运而生——上下文工程(Context Engineering)。
如果说“提示词工程”是教我们“如何跟AI说话”,那**“上下文工程”就是教我们“如何管理AI的记忆和视野”**。
如果AI的上下文窗口是那块小小的“白板”,那上下文工程,就是成为一个“白板管理大师”的艺术。 它研究的是一整套方法论,关于如何:
- 决定什么信息最重要,必须留在白板上(核心目标、关键指令)。
- 决定什么信息可以被擦掉或“压缩”(不重要的对话历史)。
- 决定什么时候,需要从旁边的“文件柜”(外部知识库)里,取出一份重要的历史文档,临时写在白板上。
说白了,上下文工程的核心,就是在正确的时间,把正确的信息,用最高效的方式,提供给AI Agent,确保它在有限的“视野”里,永远能看到最关键的内容,做出最正确的决策。
这包括了系统提示词的设计、任务约束的定义、工具的说明、记忆的管理、甚至是错误处理的模式。它是一个系统性的工程,是打造一个可靠Agent的基石。
上下文的“四层洋葱模型”
为了让你更好地理解“上下文工程”到底在管什么,元哥给你总结了一个“四层洋-葱模型”,它揭示了一个优秀Agent“白板”上应该有的内容层次:
-
核心层 - 系统上下文(System Context): 这是Agent的“灵魂”和“世界观”。它定义了Agent的角色、个性、核心使命和基本行为准则。比如“你是一个严谨的科研助手,你的回答必须基于文献,不能臆测。” 这部分内容在一次任务中通常是固定不变的。
-
任务层 - 任务与工具上下文(Task & Tool Context): 这是Agent的“工作手册”。它清晰地描述了当前任务的具体目标,以及为了完成这个目标,它可以使用的工具有哪些、每个工具怎么用。比如“任务:总结报告。可用工具:搜索引擎、文件阅读器。”
-
记忆层 - 动态上下文(Memory Context): 这是Agent的“草稿纸”和“参考资料”,也是最能体现“工程”的地方。它包含对话历史的摘要、通过RAG检索出的外部知识、Agent自己的思考链(Thought)和行动观察(Observation)。这一层是动态变化的,需要我们用各种技术来管理。
-
输入层 - 用户指令(User Input): 这是最外层、最直接的上下文,也就是用户当前输入的一句话指令。
一个设计良好的Agent,它的每一次思考,都是基于这“四层洋葱”提供的完整信息。这保证了它既不会忘记自己是谁(核心层),也不会忘记自己要干嘛(任务层),还能随时参考历史经验和外部知识(记忆层),并对用户的最新指令做出响应(输入层)。
元哥小结
今天咱们聊了个大的。老铁们只要记住最核心的一点:
上下文工程,是把一个只有“短期记忆”的LLM,升级成一个拥有“长期记忆”、能够执行复杂、长期任务的AI Agent的“灵魂”所在。 它通过系统化地设计和管理AI的“输入信息”,确保Agent在有限的“上下文窗口”内,也能保持专注、逻辑连贯、高效执行。
没有上下文工程,AI Agent就是个纸老虎,看起来很强,一跑起来就“失忆”、“掉链子”。只有做好了上下文工程,Agent才能成为我们手中真正可靠、强大的“数字员工”。
那么,我们具体该怎么做呢?如何给Agent打造一个完美的“长期记忆”系统?
下一期,元哥就带大家来一场**“上下文工程”的深度潜航**,手把手教你利用我们之前学到的各种技巧,建立一个强大的“深度研究型Agent”!绝对硬核,千万别掉队!
【引用说明】 本文的创作灵感和核心知识点来源于《Prompt Engineering Guide》网站。
- Why Context Engineering?: www.promptingguide.ai/agents/cont…
- Context Engineering Guide: www.promptingguide.ai/guides/cont…
大家也可微信搜索“极客纪元”并关注我,获得更多分享。