想象你面前摆着一本八百页的《宇宙百科全书》,你希望自家那位「天才学霸」——大模型——一口气把它读完。可惜学霸虽然聪明,工作台面(上下文窗口)却有限:读到第 300 页时,第 5 页的内容早被挤出桌面了。这就是大模型面对长文档时的经典困境:不是不够聪明,而是「桌子」太小,装不下整本书。 学霸想了个聪明的办法:他一章一章地读,每读完一章就在便签上写下核心要点,贴在桌面——这是短期记忆;桌面贴满了,就把便签归类誊进一本大笔记本——这是长期记忆;等全书读完,他翻开笔记本,把所有章节的要点按顺序串起来,写出一篇贯通全书的综述——这就是信息聚合推理。LongAgent 正是把这套「学霸读书法」教给了大模型:增量式阅读、双层记忆、聚合推理,让模型用有限的窗口一步步啃下超长文档。

岗位关联

掌握 LongAgent 的增量式 Agent 设计,你就能在合同审查、论文综述、技术问答等场景中,用有限的上下文窗口处理任意长度的文档——这是每位长文本 AI 从业者的进阶必修课。

目录
  1. 可视化演示
  2. 长文档困境
  3. 增量式阅读
  4. 双层记忆机制
  5. 信息聚合推理
  6. 对比MapReduce
  7. 工程实现
  8. 应用场景
  9. 局限与展望
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示梯度下降算法在二次损失函数上的迭代优化过程,通过切线方向逐步逼近最小值,支持学习率调节和步进控制。

本节配有交互动效(进入视口后自动加载,约 3KB)。

梯度下降 沿负梯度方向迭代更新参数 切线斜率表示当前梯度大小 x←x-η·∇f(x)

长文档困境

给学霸一本八百页的厚书,他第一反应不是「读不完」,而是「没地方放」——书桌太小,摊开 300 页,前 100 页就被挤到地上了。大模型面对长文档时正是如此:它的「书桌」叫上下文窗口,能同时容纳的 token 数量是固定的。文档一旦超过窗口,要么被硬生生截断,要么必须丢掉前面的内容来「腾地方」,这被称为上下文窗口有限的痛。

更尴尬的是长距离依赖问题。假设你问学霸:「第 50 页的假设和第 700 页的结论矛盾吗?」他根本没同时见过这两页,自然无法回答。传统做法是「硬塞」——把全文拼进 prompt,可窗口放不下时就只能截断中间部分,导致关键信息落在窗外。这种截断式方案在几十页的短文上勉强能用,遇到上百页的合同、几千页的技术手册就彻底失灵了。

从数学上看,模型在任意时刻 t 能看到的上下文,只是整篇文档的一个子集。这个子集的长度受窗口硬约束,超出的部分对模型而言「不存在」:

这就是 LongAgent 诞生的原因——既然一张书桌摊不开整本书,那就「读一页、收一页、记一页」,把厚书变成可以逐块消化的增量过程。

Ct⊆D,∑di∈Ct∣di∣≤WcC_t \subseteq D, \quad \sum_{d_i \in C_t} |d_i| \le W_c
意思是:模型当前能「看见」的文档块($d_i$ 们)总长度,不能超过窗口容量 $W_c$。就像书桌只能摊开这么多书页,其他页面暂时看不见。
  1. 上下文子集模型在时刻 t 能看到的上下文 $C_t$,只是整个文档 $D$ 的一部分,不可能全放进去
    Ct⊆DC_t \subseteq D
  2. 容量上限子集中所有块的长度之和必须小于等于窗口容量 $W_c$,这是硬性天花板
    ∑di∈Ct∣di∣≤Wc\sum_{d_i \in C_t} |d_i| \le W_c

增量式阅读

学霸调整了策略:不再试图一次性摊开全书,而是从目录开始,一章一章地读。每读完一章,就把核心要点写在便签上,然后合上书,把那一章「归档」,再翻开下一章。这种「读一章、记一章、过一章」的方式,就是增量式阅读。

在 LongAgent 中,文档首先被切成有序的块。切块很有讲究:块太大塞不进窗口,块太小上下文被切得稀碎,模型难以理解段落语义。一般以「语义完整的自然段」为切分边界,且每块长度要控制在窗口容量的五到七成,剩余空间留给模型做推理和输出。

LongAgent 维护一个「阅读指针」,按顺序逐块送入模型。每处理完一块,模型提炼要点更新记忆,然后指针向后移动。为了让块与块之间不断线,LongAgent 会在 prompt 中带上「跨段衔接提示」——比如「上一段确认了甲方付款义务,本段继续查看违约责任」,像学霸在便签角落写上「接第 3 章」一样。

分块策略的数学描述如下:整篇文档被拆成 n 个有序块,每块长度受窗口约束:

增量式阅读的核心价值,是把「读不完的长文档」变成「读得完的一段段」。每一块都能完整地进入窗口被模型理解,上一块的收获则通过记忆延续下来——这也是 LongAgent 区别于「截断式」方案的第一个关键设计。

D={d1,d2,…,dn},∣di∣≤ηWc    (0<η<1)D = \{d_1, d_2, \dots, d_n\}, \quad |d_i| \le \eta W_c \;\; (0 < \eta < 1)
文档 D 被拆成 n 块,每一块的长度不能超过窗口容量 W_c 的 η 倍。η 通常取 0.5~0.7,就像学霸每章只读「够记笔记」的量,而不是把整章塞进书桌。
  1. 有序切分把原始文档拆成按顺序排列的 n 个块 $d_1$ 到 $d_n$
    D={d1,d2,…,dn}D = \{d_1, d_2, \dots, d_n\}
  2. 长度预留每块长度限制在窗口的 $\eta$ 倍以内,给答案生成留出空间
    ∣di∣≤ηWc|d_i| \le \eta W_c

双层记忆机制

回到学霸的书房:桌面上贴着最近几章的便签(短期记忆),抽屉里放着一本厚厚的笔记本,里面是之前所有章节的归类摘要(长期记忆)。便签的优势是「随手可见、即时使用」,缺点是贴不了太多;笔记本容量大,但每次查阅都要翻找。LongAgent 的记忆系统正是模仿这套双层结构。

短期记忆存储最近读过的几块的原始要点。它解决了「局部问题」——比如「刚才那一章里甲方付款期限是几天?」模型直接查短期记忆就能快速回答,不用翻遍全书。长期记忆存储跨段的压缩摘要,解决「全局问题」——比如「整份合同中哪些条款涉及违约金?」这需要综合各章节的信息,只有长期记忆里才有全景。

两层记忆之间有一条「写入规则」:当短期记忆的条数超过阈值(比如 3~5 条),就把当前便签整体做一次摘要,誊入长期记忆,然后清空短期记忆,继续存放新内容。这个「便签攒满 → 整理进笔记本」的动作,在 LongAgent 中就是记忆合并:

此外,检索时模型会同时查询两层记忆:局部问题优先用短期记忆的证据,全局问题则依赖长期记忆。这套「便签 + 笔记本」的协作机制,让 LongAgent 既保留了近处的细节,又不丢失远处的脉络。

Mlong←Mlong∪{Summarize(Mshort)}M_{\text{long}} \leftarrow M_{\text{long}} \cup \{\text{Summarize}(M_{\text{short}})\}
当短期记忆 $M_{\text{short}}$ 条数超限,先用摘要函数 Summarize 把所有便签浓缩成一条笔记,再追加(∪)到长期记忆 $M_{\text{long}}$ 中。短期记忆随之清空,继续承载新的近期信息。
  1. 短期聚合对短期记忆里的全部条目做一次整体摘要,浓缩成一条精华
    Summarize(Mshort)\text{Summarize}(M_{\text{short}})
  2. 长期归档把摘要结果追加进长期记忆集合,完成一次「誊写」
    Mlong←Mlong∪{⋯ }M_{\text{long}} \leftarrow M_{\text{long}} \cup \{\cdots\}

信息聚合推理

学霸读完全书,合上笔记本,开始回答最初的问题:「这本书的核心观点是什么?各章节之间有矛盾吗?」他不会只翻某一页,而是把笔记本里所有相关章节的要点摊开,按原书顺序排列,交叉对比,最后给出一个贯通全局的判断。这就是信息聚合推理。

LongAgent 在完成增量阅读后,面对用户的提问,会执行三步:第一步是证据召回,从长期记忆和短期记忆中检索与问题相关的证据片段;第二步是证据聚合,把召回的证据按在原文档中的位置排序,拼成一段有序的临时上下文;第三步是推理决策,让模型基于拼接后的上下文输出答案。

一个值得注意的细节是冲突消解:如果两段证据结论相反(比如合同第 8 条和第 42 条对违约金的描述不同),LongAgent 不会静默忽略,而是在 prompt 中显式标注「注意:证据 A 与证据 B 冲突,请裁决」,让模型依据合同整体逻辑做判断。这一步是「学霸看到两页笔记打架时会停下来重新翻原书核实」的数字化版本。

聚合推理的最终答案选择,可以形式化为一个条件概率最大化问题:

有了这套聚合推理,LongAgent 回答的问题就不再局限于「某一章讲了什么」,而是能跨越几十个分块,回答「整本书到底想说什么」。这是增量式阅读 + 双层记忆的最终闭环。

A∗=arg⁡max⁡A  Pθ(A∣Aggregate(Retrieve(M,q)))A^* = \underset{A}{\arg\max}\; P_\theta\bigl(A \mid \text{Aggregate}(\text{Retrieve}(M, q))\bigr)
模型在所有候选答案 A 中,挑选那个在「聚合后的记忆上下文」下条件概率最高的答案 A*。Retrieve 负责找证据,Aggregate 负责把证据整理成有序上下文,argmax 负责选最优答案。
  1. 证据检索从双层记忆 $M$ 中召回与问题 $q$ 最相关的若干条证据
    Retrieve(M,q)\text{Retrieve}(M, q)
  2. 证据聚合把召回证据按原文档顺序拼接成有序上下文
    Aggregate(⋯ )\text{Aggregate}(\cdots)
  3. 最优答案让模型输出使条件概率最大的答案 $A^*$
    arg⁡max⁡APθ(A∣⋯ )\arg\max_A P_\theta(A \mid \cdots)

对比MapReduce

如果把长文本处理比作写读书报告,Map-Reduce 的方式是「请十位书童,一人分一章,各写各的摘要,最后把十份摘要装订成册」;LongAgent 则是「一位学霸从头读到尾,边读边记」。两种方式都能产出一份报告,但前者各章之间的呼应、伏笔、矛盾全被切断了——书童甲不知道书童乙的章节里提到过同一件事。

Map-Reduce 的流程是线性的:Map 阶段把文档切成若干块,并行地对每一块调用模型提取信息;Reduce 阶段把所有块的结果汇总成最终输出。它的优势是并行效率高,每块独立处理,互不等待。但它有一个致命缺陷:信息割裂——如果两个关键线索分别落在不同的块里,Map 阶段各自处理时都「看不见对方」,到 Reduce 阶段只剩两份孤立的摘要,模型无法做跨块推理。

LongAgent 的增量式方案牺牲了并行性(块必须按顺序读),换来了跨段连贯性。在处理第 10 块时,模型仍然记得第 2 块的要点(因为长期记忆里有一条相关记录),这种「记忆留痕」让长距离依赖问题得到缓解。这在很多任务中是质的差别:比如核对合同中「第 5 条定义的术语」在「第 80 条」是否被一致使用,Map-Reduce 根本做不到,LongAgent 却可以。

两者并非谁绝对替代谁:如果任务本身就适合「各块独立处理、汇总结果」(比如给 100 篇论文分别打分),Map-Reduce 更快更省;如果任务要求跨段综合理解(合同审查、全书问答),LongAgent 的精度优势就体现出来了。

工程实现

把「学霸读书法」落地成真实系统,还要处理一堆工程细节。首先是上下文管理:每一轮向模型发送 prompt 时,要动态决定「塞什么进去」——通常包括当前块全文、最近短期记忆条目、相关的长期记忆条目,以及当前问题。塞太多会撑爆窗口,塞太少又让模型「失忆」,需要精心调配比例。

其次是记忆容量控制:长期记忆如果无限增长,最终也会超出窗口,笔记本再厚也有合不上的一天。LongAgent 的工程实践中,通常给每个记忆条目一个重要性得分(比如被检索命中的次数),定期按分数保留 Top-K 条,淘汰低频条目。这就像学霸每隔一段时间把笔记本里「不常翻的旧笔记」清理掉,只留高频引用的核心内容。

第三是检索效率:记忆条目可能成千上万,线性扫描太慢。工程上会为每条记忆生成 embedding 向量,用 FAISS 这类向量索引做近似最近邻检索,毫秒级召回相关记忆。上下文组装时,按「语义相似度 + 原始文档位置」双维度排序,保证既相关又不打破文档的叙事顺序。

系统架构上,LongAgent 通常作为 Agent 框架的一部分部署:文档解析模块负责分块,记忆服务(Redis 或向量数据库)负责存储检索,大模型推理负责阅读和回答,编排层负责调度「读取 → 记忆更新 → 推理」的循环。每一步的循环节奏可以由进度条可视化——就像演示动画里那条逐块推进的绿色进度。

应用场景

学霸毕业后,带着这套读书法进入职场。第一个岗位是法律合同审查——一份投资协议动辄一百多页,条款之间互相引用、定义交叉。审查员最怕的是「第 12 条定义的『重大不利变更』与第 78 条的触发条件不一致」。LongAgent 把合同按条款分块,逐条阅读并记忆,最后聚合推理时能跨条款核对术语使用的一致性,找出隐藏的条款冲突,这是人工翻阅和普通截断式模型都难以高效完成的工作。

第二个岗位是学术论文综述。要写一篇 30 篇论文的综述,传统做法是让学生一篇篇读再自己总结,费时费力。LongAgent 把每篇论文按章节分块,增量阅读全部论文,把每篇的「方法贡献」和「实验结果」写进长期记忆,最后通过聚合推理梳理出「方法演进脉络」和「各方法的优劣对比」。它甚至能指出「论文 A 的方法与论文 B 的改进点之间的衔接关系」,这正是综述中最难写的部分。

第三个岗位是技术文档问答。想象几千页的云平台 API 手册,工程师想知道「配置 A 与配置 B 的优先级是什么」。LongAgent 以主题为粒度分块,阅读全部手册后,把相关配置说明存入记忆,回答时跨多个章节检索证据并综合判断。审计报告分析也是类似场景:数百页的财务报告中,某个数字在附注和主表里是否一致,LongAgent 能快速定位并交叉验证。

局限与展望

学霸并非完美。他会忘事:便签写得太潦草,誊进笔记本时丢了不少细节;有时笔记本被咖啡渍糊住一页,刚好是那个最关键的例外条款。LongAgent 的第一个固有局限是记忆丢失风险——「摘要再摘要」的过程必然损失信息,合同中某个具体金额、某句话里的豁免条件,可能在合并时被压缩掉。对细节敏感的问答,它可能会给出「方向对、数字错」的回答。

第二个局限是顺序敏感性。增量式阅读的每一步都依赖之前的记忆,如果文档中某个关键信息只出现一次且位于早期,而它要与很晚的内容配合回答问题时,早期记忆可能已经被压缩得面目全非了。打个比方:学霸读第一章时对一句不起眼的话做了个标记,读到第十章时发现它至关重要——但笔记本里那句话已经被归纳成了「一些背景信息」,细节早没了。工程上,这种问题叫「长距离依赖误差」。

第三个权衡是算力成本。串行增量读取意味着 100 块文档要调用 100 次模型,而 Map-Reduce 可以并行。长文档的 Agent 任务天然是计算密集的,企业部署时要在「精度」和「成本」之间做取舍。未来可能的优化方向包括:分层记忆双轨制(细粒度原始片段 + 粗粒度摘要并存,按需检索)、自适应分块(按语义边界动态切分,而非固定长度)、以及把记忆检索训练成可学习的强化组件。

这些局限也为后续研究留出了空间。LongAgent 的价值不在于「完美」,而在于它证明了一条朴素但有效的路:读不完的书,就读一段记一段;记不住全部细节,就记住那些最重要的线索。 增量式 Agent 的长文档处理思路,未来会继续向更高效、更抗遗忘的方向演进。

AI 应用场景

法律合同审查

阶段:增量式阅读 + 双层记忆 + 聚合推理

解决的问题:传统合同审查靠律师逐页翻看,动辄百页的合同读完需要数小时,且跨国条款引用时人工极易遗漏前后矛盾处。普通大模型直接喂全文会被窗口截断,只能「看了后段忘前段」。LongAgent 按条款分块增量阅读,把每条定义和承诺写进记忆,聚合推理时能跨条款检索核对,几分钟就能定位潜在的条款冲突。

具体案例:某律所引入基于 LongAgent 的合同审查工具处理一份 80 页的投资协议。工具发现第 12 条「重大不利变更」的定义与第 78 条触发条件措辞不一致,并高亮标注了两处条款位置及各自的原文表述,供律师复核。律师原来需要 3 小时的通读核对缩短到 20 分钟。

学术论文批量综述

阶段:文档分块 + 长期记忆归档 + 跨论文聚合推理

解决的问题:写综述需要综合几十篇论文的方法、实验、结论,人工阅读量大且容易「各看各的」无法串联。LongAgent 以每篇论文的章节为块,逐篇增量阅读,把每篇的贡献和结果写入长期记忆,最后在聚合阶段按「方法演进时间线」组织答案,自动梳理出各工作之间的承继关系。

具体案例:一位博士生用 LongAgent 对 30 篇「大模型推理增强」相关论文做综述。系统输出的综述初稿按「提示工程 → 思维链 → 自我反思」梳理出演进脉络,并标出了三篇论文之间「提出方法 — 改进 — 简化」的引用链关系。博士生将初稿修改后直接作为论文 related work 的素材。

企业知识库文档问答

阶段:增量式阅读 + 记忆检索 + 冲突裁决

解决的问题:企业知识库包含数百份技术手册、流程文档、历史决策记录,员工提问常常要跨文档找答案。传统 RAG 只做「检索-拼接」,对相互矛盾的文档束手无策。LongAgent 先把全部文档增量读入记忆系统,回答问题时用向量检索召回跨文档证据,遇到冲突内容显式标注让用户决策,大幅提升答案的可靠度。

具体案例:某云计算公司搭建了支持 3 万页文档的 LongAgent 问答系统。运维人员提问「误删云硬盘后如何恢复」,系统从三份不同版本的操作手册中检索到两条冲突流程,按「文档更新时间」排序后,优先展示了最新版流程,并标注了旧版流程的差异点,避免了运维事故。

Python 演示

python55 行
class LongAgent:    """极简版 LongAgent:增量式阅读 + 双层记忆 + 聚合回答"""     def __init__(self, chunk_size=60, short_limit=3):        self.chunk_size = chunk_size        self.short_limit = short_limit        self.short_mem = []      # 短期记忆:暂存最近要点        self.long_mem = []       # 长期记忆:合并后的摘要        self.read_count = 0      # 已读块数计数     def chunk_text(self, text):        """把长文档切成有序小块"""        chunks = []        for i in range(0, len(text), self.chunk_size):            chunks.append(text[i:i + self.chunk_size])        return chunks     def summarize(self, chunk):        """模拟块级摘要(真实项目替换为 LLM 调用)"""        return "要点[" + chunk[:12] + "...]"     def read_chunk(self, chunk):        """增量式读取一个文档块"""        summary = self.summarize(chunk)        self.short_mem.append(summary)        self.read_count += 1        if len(self.short_mem) >= self.short_limit:            merged = ";".join(self.short_mem)            self.long_mem.append("合并{" + merged + "}")            self.short_mem = []     def answer(self, question):        """聚合记忆推理:检索相关记忆并生成答案"""        all_ctx = self.long_mem + self.short_mem        if not all_ctx:            return "尚未阅读任何内容"        related = [m for m in all_ctx if question[:4] in m]        if not related:            related = all_ctx        return "基于" + str(len(related)) + "段记忆回答:" + " | ".join(related)  def main():    doc = "合同第一条:甲方应支付货款。乙方应按时交付。" * 20    agent = LongAgent(chunk_size=24)    for chunk in agent.chunk_text(doc):        agent.read_chunk(chunk)    print("已读块数:", agent.read_count)    print("短期记忆条数:", len(agent.short_mem))    print("长期记忆条数:", len(agent.long_mem))    print(agent.answer("甲方的义务是什么?"))  if __name__ == "__main__":    main()
目的:用 60 行 Python 演示 LongAgent 的核心流程——分块、增量读取、短期记忆满后合并进长期记忆,以及基于记忆的聚合回答。
  1. self.short_mem.append(summary)每读一块,提炼要点存入短期记忆,就像学霸往桌面贴一张新便签。
  2. if len(self.short_mem) >= self.short_limit:短期记忆达到阈值(3 条)时触发合并,这是「便签攒满该誊进笔记本」的判定。
  3. self.long_mem.append("合并{" + merged + "}")把短期记忆整体摘要成一条,追加进长期记忆,随后清空短期记忆。
  4. related = [m for m in all_ctx if question[:4] in m]用简单的关键词包含做「证据召回」,真实系统会用向量相似度替换这一行。
  5. for chunk in agent.chunk_text(doc): agent.read_chunk(chunk)主循环里逐块喂入文档,体现「增量式」而非一次性的处理方式。

常见误区

误区我以为 LongAgent 和普通的截断策略一样,反正窗口装不下,就只把文档末尾的片段塞给模型,前面的内容丢掉算了。

正解这是完全错误的理解。截断是「丢前保后」,LongAgent 是「读完记得」——它按顺序读完每一块后,把关键信息提炼进短期记忆,再合并到长期记忆。模型虽然不能同时看到所有原文,但通过记忆保留了前面的核心信息。就像学霸读完第 1 章后合上书,但便签上记着第 1 章的重点,而不是把第 1 章从书上撕掉丢掉。

为何常见:因为很多人习惯把窗口限制理解为「只显示末尾」,而忽略了 LongAgent 最核心的记忆机制——增量留下的不是原文,而是提炼过的要点。

误区我总觉得短期记忆和长期记忆不都是「存信息」吗?只是名字听起来一个快一个慢,数据上没区别。

正解两者的数据形态、生命周期和用途都截然不同。短期记忆保存的是「最近几块的原始要点」,条数少、更新快、查询即时,适合回答局部问题;长期记忆保存的是「跨段的压缩摘要」,是短期记忆合并归档的产物,条数多、更新慢、检索需要向量索引,适合回答全局问题。就像桌面的便签和抽屉里的笔记本,一个随手贴、一个长期存,物理形态都不一样。

为何常见:因为对初学者来说,「记忆」这个词容易让人以为只是缓存的两种说法,而忽略了「合并、压缩、归档」这条动态转化链路。

误区我以为增量式 = 无损,每一块的信息都会完整保存在记忆里,所以模型什么都能回答。

正解增量式 ≠ 无损。每次短期记忆合并进长期记忆时,都要做一次摘要压缩——这就是必然的信息丢失过程。合同里的具体金额、某个例外条款、某句话里的精确措辞,都可能被合并时压缩掉。LongAgent 保证的是「关键线索的连续性」,而非「所有字节的完整性」。所以工程上会配合「检索原始块」的能力,在记忆模糊时回查原文。

为何常见:人很容易把「增量」脑补成「无损追加」,但实际的摘要合并机制决定了这是一个有损压缩过程。

误区Map-Reduce 也是把文档分块处理再汇总,LongAgent 也是分块,这不是同样的思路换个名字嘛。

正解核心区别在于块之间是否「交换信息」。Map-Reduce 的 Map 阶段各块完全独立,块与块之间没有任何信息传递,Reduce 阶段只做线性汇总;LongAgent 则通过记忆模块在块与块之间传递信息,处理第 10 块时知道第 2 块讲了什么。一个是被切碎后各看各的再缝起来,一个是连贯地读完全书。对跨段推理任务,这两者的精度差距是本质性的。

为何常见:从「分块」这个表层动作看两者确实相似,但忽略了「是否有跨块记忆流通」这一深层差异。

面试题

Q1. LongAgent 处理长文档的核心策略是什么?

单选题 · easy

  • A.一次性读完整篇文档
  • B.增量式分段阅读← 正确答案
  • C.随机抽样几个段落
  • D.只读文档开头结尾

答案:B。LongAgent 的核心是「增量式阅读」——像学霸一章一章读书一样,分块逐段处理文档,而不是一次性读完(A)或随机/截断(C、D)。增量式分段阅读让它能突破上下文窗口限制。

Q2. 设计 LongAgent 的分块大小时,块长通常应满足什么条件?

单选题 · easy

  • A.越大越好一次多读
  • B.适配窗口并留余量← 正确答案
  • C.固定为十个字符
  • D.与窗口毫无关系

答案:B。分块的核心约束是「每块长度不超过上下文窗口的 η 倍(通常 0.5~0.7)」——既要窗口装得下,又要给模型推理输出留出余量。B 正确;A 会导致超出窗口,C 太小失去语义,D 与约束相悖。

Q3. LongAgent 的短期记忆主要承担什么职责?

单选题 · easy

  • A.永久保存全部原文
  • B.暂存最近读到的要点← 正确答案
  • C.替代模型内部权重
  • D.负责情感识别输出

答案:B。短期记忆就像桌面便签,暂存最近几块提炼出的要点,支持快速回答局部问题。它不是永久存储(A),不碰模型权重(C),也不负责情感任务(D)。条数超过阈值后会合并进长期记忆。

Q4. 短期记忆条数超过阈值时,LongAgent 会执行什么操作?

单选题 · mid

  • A.直接丢弃最早条目
  • B.合并摘要写入长记忆← 正确答案
  • C.重读一遍整个文档
  • D.停止后续分块阅读

答案:B。正确流程是「短期聚合 → 长期归档」:对短期记忆全部条目做摘要,追加进长期记忆,再清空短期。A 是丢信息,C 和 D 破坏流程。这正是便签攒满后端进笔记本的动作。

Q5. 相比 Map-Reduce,LongAgent 在长文档任务上的核心优势是?

单选题 · mid

  • A.并行处理速度更快
  • B.跨段落信息连贯好← 正确答案
  • C.完全不需要大模型
  • D.不消耗任何算力

答案:B。Map-Reduce 各块独立、信息割裂,LongAgent 通过双层记忆在块间传递线索,跨段连贯性更好(B)。A 是 Map-Reduce 的优势,C、D 是错误表述。对合同核对、全书问答这类长程依赖任务,LongAgent 精度更优。

Q6. LongAgent 聚合推理时遇到冲突证据,正确的处理方式是?

单选题 · mid

  • A.忽略冲突随意选取
  • B.显式标注让模型裁决← 正确答案
  • C.删除后文只留前文
  • D.把冲突文本直接拼接

答案:B。LongAgent 会把「证据 A 与 B 冲突」显式标注在 prompt 中,让模型依据全局逻辑裁决,而不是静默忽略。选 B。A 会丢失准确性,C 破坏信息完整性,D 只是机械拼接不做判断。

Q7. 工程上控制长期记忆无限增长的有效手段是?

单选题 · mid

  • A.每次读完就清空记忆
  • B.按重要性保留 Top-K← 正确答案
  • C.全部塞入一个句子里
  • D.只在离线阶段保存

答案:B。长期记忆要定期清理——给每个记忆条目打重要性分(如被检索命中的次数),定期淘汰低分条目,保留 Top-K。A 会让全局问题无法回答,C、D 不符合记忆服务的动态特性。

Q8. LongAgent 在合同审查场景中具备哪些能力?

多选题 · hard

  • A.跨条款核对违约责任一致性← 正确答案
  • B.对百页合同进行增量阅读← 正确答案
  • C.从记忆中检索条款证据← 正确答案
  • D.直接修改合同法律效力

答案:ABC。A 是聚合推理能力,B 是增量式阅读能力,C 是记忆检索能力,三者都是 LongAgent 的核心机制。D 超出 AI 系统的职责——模型只能辅助审查,不能直接修改合同的法律效力。

Q9. LongAgent 自身可能存在的局限包括?

多选题 · hard

  • A.记忆压缩丢失次要信息← 正确答案
  • B.对顺序敏感线索易漏检← 正确答案
  • C.能处理任意长度无压力
  • D.串行读取速度相对慢← 正确答案

答案:ABD。A 是摘要合并的固有代价,B 是长距离依赖误差,D 是串行增量比并行 Map-Reduce 慢的权衡。C 是错误表述——没有方案能无压力处理任意长度,记忆容量控制永远是工程课题。

Q10. 关于 LongAgent 两层记忆的协作机制,下列说法正确的有?

多选题 · extreme

  • A.短期记忆快速响应局部问题← 正确答案
  • B.长期记忆支撑跨段全局推理← 正确答案
  • C.短期满后合并进长期记忆← 正确答案
  • D.长期记忆永不更新且不可检索

答案:ABC。A 和 B 分别描述了两层记忆的分工——局部与全局;C 是「写入规则」的核心:短期达到阈值后摘要合并进长期。D 错误:长期记忆既会定期按重要性更新淘汰,也需要向量索引支撑高效检索,并非只写不读。