福生无量摸鱼天尊

context engine note

2025/12/02
17
0

Context Manager

多模态数据的处理

现在大模型系统的对话窗口和处理数据会产生大量的上下文,后续的qa往往会用到其中一部分上下文,所以建立有效的context engine是十分必要的。

NLP

用时问戳标记上下文 一种常见的设计是在每条信息上附加时间戳,以保留其生成的顺序。这种方法由于简单且维护成本低,在聊天机器人和用户活动监控中广受欢迎。然而,该方法存在若干局限性。尽管时间戳能够保持时间顺序,但它们不提供语义结构,使得捕捉长程依赖关系或高效检索相关信息变得困难。随着交互数据的累积,序列呈线性增长,导致在存储和推理方面均面临可扩展性问题

基于功能和语义属性的标注上下文 该方法通过显式标注每个条目功能角色(如“目标”、“决策”和“动作”)来组织上下文信息,使每个条目更易于理解。最近的系统支持从多个维度进行标注,包括优先级、来源信息等,从而支持更高效的检索和上下文管理。尽管这有助于明确每条信息的含义,但可能略显僵化,限制了更灵活的推理或创造性整合。

带问答对的压缩 该方法将上下文重新表述为独立的问题-答案对,以提高检索效率,尤其适用于搜索引擎或基于常见问题解答的系统。然而,这种方法破坏了原始思想的连贯性因此不太适合需要全面理解上下文的任务,例如摘要生成或推理。

分层注释压缩 该方法将信息组织成树状结构,其中宽泛的概念分支出越来越具体的子点。尽管这种结构有助于清晰地呈现观点,但它主要反映的是信息的分组方式,而非观点之间的逻辑联系。因果关系或证据与结论之间的关系通常未被体现。此外,这种设计未能捕捉到理解随时间演变的过程例如新见解的出现或原有观点的修订。

多模态

现有多模态的方法偏向于将其与nlp进行结合思考,比如说与nlp一样给每一种模态建立子空间,然后进行模态对齐融合。另一种是所有模态投影到一个空间里,用这个空间去解码。最后是把一种模态投影到另一个模态内,也就是交叉注意力的方式。

将多模态输人映射到可比较的向最空间 该方法将来自不同模态(如文本、图像和视频)的输入变换到一个共享的向量空间中以便它们可以直接比较。每种模态首先由其对应的编码器进行处理。由于这些向量最初存在于具有不同统计特性的分离表示空间中,因此每个向量随后通过一个现成的投影层,将其映射到固定维度的共享嵌入空间中。在此空间中,来自不同模态的语义相关内容被置于彼此接近的位置,而无关内容则被相互推开。

融合不同模态的自注意力 投影到共享嵌入空间后,模态特定的 token 由单一Transformer 架构联合处理。在此统一的自注意力机制中,文本和视觉 token 在每一层都相互关注,从而实现细粒度的跨模态对齐与推理。这种方法被现代多模态大模型采用,使模型能够捕捉详细的对应关系,例如某个短语对应图像的哪个区域,而非依赖于独立嵌入的浅层拼接。

通过交叉注意力实现一种模态对另一种模态的聚焦 该方法使用交叉注意力层,使一种模态(如文本)能够直接关注另一种模态(如图像)的特定部分。具体而言,一种模态的特征用作查询,而另一种模态的特征则作为注意力机制中的键和值。这种设置使得模型能够以目标导向且灵活的方式跨模态检索相关信息。交叉注意力机制可以灵活地实现为位于主 Transformer架构之前的专用模块,或嵌入到 Tansformer 块内部,具体取决于整体系统设计。然而,传统设计通常需要指定哪些模态之间进行交互,而人类大脑则能灵活地整合来自感官和记忆通道的信息,无需依赖此类定映射。

处理(重点)

由于不断积累的上下文,建立结构去将原始上下文转换为更紧凑、结构化的表示非常重要。我们将这一过程称为自烘焙:智能体有选择性地消化自身上下文,形成持久的知识结构。

使用分层内存架构 分层记忆通过在不同抽象层次上组织信息,为管理不断增长的上下文提供了一种有原则的方法。在底层,存储原始上下文,以确保细粒度细节仍然可访问。随着上下文数量的增加,这些原始项被逐步总结为更抽象的表示,并传递到下一层。新信息通常从最低层进入,并逐渐“烘焙”向上,使系统能够在不压垮上下文窗口的同时实现扩展,同时仍保留可追湖回原始细节的链接。从这个意义上说,分层记忆补充了短期记忆与长期记忆之间的区别:原始上下文通常位于较低的短期记忆中,而更抽象的表示则倾向于对应长期记忆He et al., 2025)。

添加自然语言摘要 在此模式中,系统以原始的非结构化形式存储完整的上下文。此外,系统会周期性地生成摘要,提供迄今为止发生事件的压缩视图。随着摘要数量的增长,系统可能采用多级摘要(将较旧的摘要合并为更高层次的概览)或使用特定策略根据时间或重要性丢弃较无的摘要。然而,由于摘要仪为纯文本,缺乏结构,这使得系统难以理解事件之问的关联,也难以对上下文进行更深层次的推理。

逐步将上下文压缩 与摘要类似,压缩数据也是一种节省上下文的方式。 (Sun and Zeng 2025; Chen and Xu, 2024)

使用固定模板提取关键事实 该模式通过添加结构化解释扩展了第一种模式。系统不仅存储原始上下文,还将其关键信息提取为预定义格式,以便更易于访问和推理

  • 该模式可采取多种形式:可以是实体图谱,将关键实体(如人物、物品或地点)表示为结点。每个结点维护实体的属性(例如名称、类型)、当前状态(例如位置、状态)以及与其他实体的关联(例如“拥有”、“合作”、“位于”)。

  • 此外,它还可以是任务树,将复杂目标以分层结构分解为子任务。一个具体例子是 CodeRabbit,其在代码审查前构建结构化的案例文件,将跨文件依赖关系、历史 PR 信息以及团队特定规则编码为显式模式,使人工智能能够基于完整的系统上下文进行推理,而非孤立地分析文件变更。

  • 这种方法相比原始摘要能实现更有效的推理,因为它允许系统检索、分析并关联显式模式中的具体事实。然而,维护多层结构可能导致不一致,而设计可靠的提取器来填充这些模式仍然是一个重大挑战 (Du et a., 2025)。

隔离

agent隔离上下文 以cursor或者claude为代表这种上下文是由prompt决定用哪种agent,然后sys给agent上下文和tools。由于agent独立运作,不会污染主对话的上下文,但是需要功能维度(如分析、执行、验证)或层级结构(如规划、实施、审查)上进行分离。LeadResearcher首先制定计划。若现有信息不足,它可以发起进一步搜索、调整关键词或创建新子任务。子智能体可并行工作,而 LeadResearcher 会汇总中间结果并决定下一步行动。这一反馈环有助于系统收敛到高质量答案,进而提升系统可靠性和可解释性。

轻量级引用 上下文隔离通常依赖于将大量信息存储在外部,并仅在模型窗口中暴露轻量级引用,庞大的输出被存储在分离的box中仅在需要时才检索。这样,模型仅与简洁的引用进行交互,而box则持有完整数据,并按需提供。类似的原理也适川于基于模式的状态对象,其中文件或日志等重型元素保留在外部存储中,仅将选定字段暴露出来。(Martin,2025

Context Use

系统内上下文共享

(原图这个图注是错的,有点搞笑)

把通信内容放在prompt里 这种传递上下文的方式在 AutoGPTChatDev等系统中很常见,主要是顺序性。

智能体之间交换结构化消息 智能体通过使用固定格式交换结构化消息进行通信,这些消息通常遵循预定义的模式。类似Letta MemOS 这类系统采用此方法,在智能体之间传递信息时保持洁晰性和一致性。

使用共享内存进行间接通信 智能体通常通过读写共享内存空间来间接通信,该内存空间可实现为集中式的外部存储,也可实现为单个智能体内存中的公共区域。

  • 智能体不直接发送消息,而是将信息留存在这一共享空间中,该空间通常以内存块的形式组织,之后再检查以获取更新。像 MemGPTA-MEM这样的系统采用此方法以支持智能体之间的间接通信与协调。

  • 与第二种方法结合,产生结构化池,允许agent去查看和监控的成熟工作有:Blackboard System

  • 与图结构结合,任务记忆引擎(TME)将智能体的推理过程表示为任务图:每个节点编码一个步骤,包括其输入、输出和执行状态,而边则捕捉步骤之间的依赖关系。这种结构使智能体能够可靠且可解释地追踪、重用和恢复多步推理。类似的还有G-memory

跨平台的agent通信

议题其实是claude和codex之间的通信,这种基本上就是定义共享格式了

选择上下文进行处理(重点)

若缺乏稳健的过滤机制,智能体可能因自身记忆而陷入困境,这是一种现代形式的“上下文过载”。因此,有效的上下文选择成为一种 注意力之前的注意力——即决定哪些内容值得被关注。

语义相关性 它指的是选择与当前查询或目标在语义上最相似的记忆条目。这通常通过基于向量的检索实现:将查询和候选条目都编码为稠密嵌入,然后通过最近邻搜索(例如 FAISS 或其他近似最近邻方法)根据相似度检索项目,即使没有确切的关键字匹配,也能找到语义相关的项目。这种方法常用于检索增强生成(RAG)流水线和 Letta 等系统中。

逻辑依赖 逻辑依赖指的是当前任务直接依赖于先前步骤产生的信息,例如先验规划决策、工具输出或推理链。MEM1 等系统通过在执行过程中显式记录推理迹来解决这一问题:每当生成新步骤时,MEM1 将其存储在记忆槽中,并将其与所依赖的早期步骤(如先验分析或工具输出)关联起来。随着时间推移,这在记忆条目之间形成一个结构化的依赖图。当出现新的查询时,MEM1 可以遍历该图,仅检索位于相关依赖链中的上下文,从而确保记忆不仅反映表面的相关性,还体现任务的逻辑流程。(Haoran Sun

最近一次和频率 最近使用过或经常访问的项目更有可能再次被检索。这是基于简单的启发式规则:如果某事物之前有用,那么它可能再次有用。同时,反复访问的条目会积累更高的重要性,确保常被引用的信息始终保持可随时获取。通过平衡这些因子,记忆池逐渐演化为更倾向于新鲜且重要的上下文 (Team, 2024)。

重叠信息 如果多条信息传达相同的意义,较旧或较不详细的条目可以被过滤掉 (Du et a., 2025; Jiao et al., 2024)。系统不仅被动地检测相似性,还会主动决定何时合并、更新或删除冗余条目,以保持记忆池的简洁性和相关性 (Yun et al., 2025)。

用户偏好与反馈 随着时间推移,智能体可以适应用户的习惯:学习用户倾向于重视的信息类型。一些系统,如自演化记忆 (Jin et al., 2024),会跟踪用户与信息的交互方式,并据此调整记忆条目的重要性或权重。

常见过滤策略 考虑到这些因子,系统会采用不同的过滤策略。

  • 在 RAG 流水线中,第一步是将源代码分割成可管理的片段,这可以通过简单的策略(如固定行或 token 窗口)完成,也可以通过更结构化的方法(如基于 AST 的分割)实现,后者能够尊重函数、类或模块边界并保持语义连贯性。

  • 随后的检索过程有多种不同方式。语义检索通常依赖于基于嵌入的搜索,根据查询与片段之间的向量相似度进行选择。非语义检索则可能非常直接,例如使用 Grep,它通过字符串或正则表达式匹配来查找,而不解释其含义。

  • 结构化检索利用知识图谱,借助实体和依赖关系(例如函数调用图)连接跨文件和模块的信息 (Wen et al, 2025)。由于这些方法经常返回重叠或噪声较多的候选结果,许多系统引入了重排序阶段(有时由大模型驱动),以进一步优化相关性,但需在准确率提升与效率之间权衡,不同实现(如 Windsurf)在设计选择上有所差异 (Mohan, 2025)。

学习并适应用户偏好 现代智能体主要通过分析对话历史和存储的个人数据(如用户文档、笔记和过往互动)来学习并适应用户偏好,以识别沟通风格、兴趣以及决策方式上的模式 (Pan et al., 2025; Sun et al., 2024)。

  • 在许多情况下,这些洞察会被整合为不断演化的用户画像,从而指导更加个性化的交互。它们还通过观察用户对建议的反应、是否继续对话以及对已完成任务的明显满意度等间接信号来学习,并将这些观察结果融入未来的交互中(OpenAI, 2024)。

  • 此外,有时智能体还会主动探索偏好,通过直接询问用户喜好或在对话中提供多种选项以获取明确反馈 (Ryu et al)。

从相关问题推断隐藏目标 系统可以通过分析用户查询的序列来推断隐藏的目标。例如,如果用户先询问关于 Python 装饰器的问题,随后又询问性能调优,这可能反映出其更广泛的目标是提升软件设计效率。为了支持此类推断,系统可以将当前上下文编码并输入大语言模型(LLM),以预测用户的潜在需求 (Anthropic, 2025a)。此外,思维链推理技术使系统能够进行多步逻辑演绎,从表层的用户输入中推断出深层意图 (Yao et al. )。识别这些模式后,系统能够提供更加符合用户目标的帮助。

采用上面的技术一定要考虑下面可能出现的问题:

  • 存储瓶颈:在严格的资源约束下,如何尽可能保留相关的上下文。

  • 处理退化:随着输入长度增加,注意力变得稀疏,模型难以保持对相关信息的关注,也难以捕捉远距离依赖关系

  • 系统不稳定性:随着记忆随时间积累,即使是很小的错误也可能影响系统的更多部分。

  • 评估的难度:随着记忆的积累,判断系统是否正确推理变得越来越困难。

context Memory

从Forms 形式、functions 功能和dynamics 动态三个方向进行描述:

  • Forms :agent memory可以采取哪些架构或表示形式?(是什么)

  • functions :为什么需要agent memory,它起到哪些作用或目的?(为什么)

  • dynamics :agent memory如何随时间运作、适应与演化?(怎么做)

模糊不清的边界 —— 定义问题

Rag VS Agent Memory

一个实际(尽管并非完全可分离)的区分标准在于 任务领域

RAG 主要用于为大模型在单个推理任务中补充大规模外部来源的上下文,典型例子包括

  • 经典的多跳和知识密集型基准测试,如HotpotQA (Yang et al., 2018)、2WikiMQA (Ho et al., 2020) 和 MuSiQue (Trivedi et al., 2022)。

Agent Memory系统通常在需要持续多轮交互、时间依赖性或环境驱动适应性的场景下进行评估。代表性基准包括

  • 长上下文对话评估(如 LoCoMo (Maharana et al., 2024) 和 LongMemEval (Wu et al.,2025a))

  • 复杂问题求解与深度研究基准(如 GAIA (Mialon et al., 2023)、XBench (Chen et al., 2025b)和 BrowseComp (Wei et al., 2025b))

  • 以代码为中心的智能体任务(如 SWE-bench Verified (Jimenezet al., 2024))

  • 以及终身学习基准(如 StreamBench (Wu et al., 2024a))

即使这种基于领域的区分也存在大量模糊地带,如长文档问答任务HotpotQA,实现了某种形式的 Agentic 自我改进,能够随着时间不断提炼和优化知识或技能。

另一种分类方法是分成模块化 RAG、 图 RAG 和 Agentic RAG:

模块化 RAG(Retrieval-Augmented Generation ) 模块化 RAG 指的是将检索流水线分解为明确指定的组件(如索引、候选检索、重排序、过滤和上下文组装)的架构,这些组件以相对静态且流水线化的方式运行:

  • 相应的技术通常出现在检索阶段,其中记忆访问通过向量搜索、语义相似度匹配或基于规则的过滤实现,这在流行的智能体记忆框架如 Memary (Memary, 2025)、MemOS (Li et al., 2025k) 和 Mem0 (Chhikara et al., 2025) 中均有体现。

图 RAG 基于图形的 RAG 系统将知识库结构化为图,涵盖知识图谱、概念图或文档-实体关系等多种形式,并利用图遍历或基于图形的排序算法来检索上下文:

  • 值得注意的是,基于图形的智能体记忆系统可能在智能体运行过程中动态地“构建、扩展或重组”其内部图。

  • 一些成熟的做法包括 Mem0g(Chhikara et al., 2025)、A-MEM (Xu et al., 2025c)、Zep (Rasmussen et al., 2025) 以及 G-memory (Zhang et al., 2025c),建议参阅的综述

Agentic RAG Agentic RAG 将检索集成到自主决策环中,其中大语言模型智能体主动控制何时、如何以及检索什么内容:

  • 这些系统通常采用迭代查询、多步规划或自我导向的搜索流程,使智能体能够通过有意识的推理来优化其信息需求,如 PlanRAG (Lee et al., 2024b) 和 Self-RAG (Asai et al., 2023) 中所实现的那样

  • Agentic RAG更多服务于某个特定任务的数据库,而agent memory是维护一个持久的内部记忆库,可以跨任务积累升级(A-MEM参考)。

  • 参考的综述

Agent Memory VS Context Engineering

Agent Memory与Context Engineering之间的关系最好理解为不同操作范式的交集,而非层级包含关系。

  • Context Engineering要从系统工程的角度去理解,解决的问题是大规模输入容量与模型生成能力之间的不对称性,工程上将上下文窗口视为一种受限的计算资源,如token、knowledge、status和memory。

  • Agent Memory则聚焦于在一个任务内持续的认知建模,Context Engineering则在资源管理范式下运作。

从Context Engineering的角度看,Agent Memory仅仅是Context Engineering组装函数中的一个变量,需要高效调度以最大化推理效率。反之,从Agent Memory的角度看,Context Engineering是确保认知连续性保持在潜在模型物理限制内的实现层

由于Agent Memory与Context Engineering的界限非常模糊,我们尝试从异同去分析它

相同的是在长时程交互中,这两个领域在工作记忆的技术实现上高度融合,都会对信息进行压缩、组织和选择,来确保长时间交互的连续性。

区别是是在长时程交互中:

  • Context Engineering主要解决大模型与其运行环境之间交互接口的结构组织问题

    • 这包括优化工具集成的推理与选择流水线,以及标准化通信协议,如 MCP。

  • Agent Memory定义了一个显著更广阔的认知范围,其并不关注推理时信息如何呈现给模型,而是决定智能体知道什么、经历过什么,以及这些要素如何随时间演变

从这一视角来看,上下文工程构建了在资源约束下实现感知与动作的外部支撑框架,而智能体记忆则构成了支持学习、适应与自主性的内部基础。前者优化智能体与模型之间的即时交互界面,后者维持一种超越单个上下文窗口的持久认知状态。

Deep Research

深度研究智能体旨在协助用户解决开放性、知识密集型的查询任务,例如涉及多个事件及复杂关系的推理问题。一个典型例子是通义深度研究(Tongyi DeepResearch),其运行包含四个主要步骤:根据用户查询在互联网上进行搜索,从相关页面中提取关键信息,生成新的子问题以引导进一步搜索,最后将多源证据整合为连贯的答案。

这一循环通常持续多轮,直到不确定性被降低并形成完整的证据链。与短轮次会话智能体不同,深度研究面临极长交互历史的挑战:直接拼接所有观察结果、思考过程和动作会迅速超出上下文窗口的容量。为克服此限制,通义深度研究采用系统性的上下文工程策略。

在探索阶段,智能体周期性调用专用的摘要模型,将累积的历史信息压缩为紧凑的推理状态,这不仅保留了关键证据,还突出了缺失信息和下一步的方向。后续的搜索与推理均基于这些压缩后的“上下文快照”,而非完整的原始历史记录。通过这种方式,系统建立了清晰的上下文生命周期:从信息的收集与积累,到周期性压缩与抽象,再到基于摘要的推理与复用,从而突破上下文约束,实现可扩展的长时程研究能力。

BCI

BCIs 可以直接捕捉神经信号,这带来了两个显著优势。首先,它们能够采集更丰富的上下文维度,例如注意力水平、情绪状态或认知负荷——这些因子通常仅通过外部行为难以观测。

其次,它们提供了一种更便捷的上下文采集方式,减少了对用户显式动作的需求,从而能够通过神经活动实现更即时的输入 (Liu et al, 2025)。尽管当前技术对脑信号的理解仍较为粗略,且噪声和稳定性等问题仍是重大挑战,但 BCIs 展示了上下文工程可能演进的方向:将上下文采集从外部环境扩展至用户的内部认知状态。

参考文献:

Context Engineering 2.0: The Context of Context Engineering

Memory in the Age of AI Agents