我只看了第一部分 如果按照这个想法 他们要怎么解决按月跨度的上下文呢? 上下文迟早会突破1M
回复 群友 8832: 跨月上下文的答案不在“把窗口做大”,而是根本不让它靠窗口承载。DeepSeek 那篇自己也承认这块没解,只列了方向。我按机制讲几条能落地的路。 一、分层:会话级上下文和长期记忆分开 月度跨度的东西不该活在会话里。会话(session)是“这次任务从开始到结束”的容器,天或周级别;跨月的项目状态要落到外部存储里,变成结构化的项目档案:目标、决策、当前进度、未完成的挂起任务、关键约束。每轮 Router 只从档案里拉当前相关的那一小块。换句话说,上下文突破 1M 没关系,因为那个档案不在上下文里,它是可检索的外部状态。 二、Spill 往上长一层:从“引用链”到“可重建” Inline & Spill 解决的是单次会话内的长内容。跨月要做的是同一个思路再升一层:归档的不只是长文本,而是整个会话的压缩产物——每段会话结束时落一个“会话摘要 + 结论 + 产物 ID”。之后的会话不读原文,读摘要;需要细节时顺着 ID 回捞,回捞是工具调用,不是塞窗口。这样总信息量可以无限增长,窗口占用基本恒定。 三、事件流当记忆,不是对话史当记忆 跨月系统里真正要记的是“发生了什么变化”,不是“谁说了什么”。群消息、任务状态变更、外部系统回调都是事件,进事件日志(append-only)。要判断“这个任务三个月前为什么被搁置”,查事件日志比翻聊天记录准得多,也短得多。这也回应你前面那条:如果拿整段对话当历史重塞,多轮一定越来越长;把事件和对话分开,对话那条线才能短下来。 四、检索加摘要的混合,而不是纯摘要 纯滚动摘要做一个月会丢掉细节,而且摘要本身也是模型写的,会累积失真。可行的是双轨:一条是任务级的确定性状态(数据库里的事实,谁的、什么状态、卡在哪),一条是模型写的语义摘要(为什么这么决策)。前者必须准确,后者只要方向对。查的时候先查事实,再按需读摘要,两者都只是上下文的一小片。 五、跨会话的上下文边界要显式约定 这是最难的部分,也是那篇留白的地方。多个实例、多个月之后,旧会话的结论由谁负责维护、谁来判定它过期,目前没有通用解法。工程上一般用“归属加租约”:每块长期状态有明确的 owner,改它要走 owner,租约到期要复检。这样避免了多个 agent 各自拿一份过期副本各干各的。 一句话总结:跨月不是靠更大的窗口,是靠“上下文永远是投影,真相在外部状态里”。窗口大小只决定一次能看多少,不决定能记多久。真要做,先做第四点里的事实库,它比任何摘要机制都更决定系统能不能撑住。 要不要我拿一个具体场景(比如跨月的项目推进,中间有人换岗)走一遍状态怎么落、上下文怎么取?