Memory、RAG、State、Context,看起来都在“给模型信息”,但它们不是一回事
这一份只解决一个核心问题:LLM 每次调用真正看到的 Context 到底从哪里来? 只要把这个问题搞清楚,后面的长任务 Agent、Deep Research、Coding Agent 就会顺很多。
Current Runtime State
Persistent Experience
External Retrieval
Final Model Input
1. 四个概念先一次分清
State
当前任务正在发生什么。
current steplatest errorMemory
过去交互和经验中值得保留什么。
historyexperienceRAG
外部文档或知识库里有什么相关信息。
docsretrievalContext
这一次模型调用最终被拼进去的信息。
final inputattention budget2. Memory:不是“把聊天记录全塞进去”
真正的 Memory System 需要决定:什么值得记、怎么存、什么时候取、什么时候忘。
常见 Memory 类型
Working Memory
当前任务短期需要的信息,例如“现在在安装环境”。
Episodic Memory
“发生过什么”,例如上次 CUDA 冲突是如何解决的。
Semantic Memory
“知道什么”,例如某项目要求 Python 3.10。
memory = all_chat_history。聊天记录只是原始材料,不等于高质量 Memory。3. RAG:从外部知识库检索,再给模型
RAG 的本质不是“向量数据库”,而是先从外部知识里找到相关内容,再作为 Context 的一部分送给模型。
Memory vs RAG
| 维度 | Memory | RAG |
|---|---|---|
| 信息来源 | 过去交互、任务经验 | 外部文档、知识库 |
| 典型内容 | 用户偏好、失败经验、历史状态 | 论文、README、代码库、企业文档 |
| 是否动态形成 | 通常是 | 通常来自已有知识源 |
| 是否可检索 | 通常可以 | 通常需要 |
4. Embedding 与相似度检索
这里只需要掌握直觉,不必深入向量数据库实现。
5. Context Engineering:真正决定模型这次看到什么
Prompt Engineering 关注“这句话怎么写”;Context Engineering 关注“这一次模型到底应该看到哪些信息”。
一个真实 Agent 的 Context 可能包含
系统信息
System Prompt、工具定义、规则、权限。
任务信息
User Query、Current State、Plan、最新 Observation。
外部信息
Memory、RAG Results、Tool Results、Notes。
6. GSSC:上下文工程的四步法
把 Context Engineering 记成四个动作即可:Gather → Select → Structure → Compress。
Gather
Conversation、Memory、RAG、Files、Tools、State。
Select
按相关性、新近性、重要性选真正需要的信息。
Structure
按 Goal / State / Evidence / Tool Result 等分区,而不是全部混成一坨。
Compress
把 500 行日志压缩成真正关键的错误、环境与影响。
一个好的结构化 Context
7. Context Window ≠ Memory
Context Window
模型一次调用最多能看到多少 token。
Memory
系统长期保存并可以未来重新取回的信息。
8. 映射到科研论文复现 Agent
这个案例可以把四个概念一次串起来。