createrole

约 5 分钟

上下文工程:Manus 的六条原则,以及数字员工的上下文该由谁来管

通读 Manus 团队关于 Context Engineering 的博客、后续研讨会与访谈,整理出可核对的原则与阈值,再对照 createrole 目前服务端自动压缩的做法,说清已对齐的部分和还没做到的一件事。

  • 上下文工程
  • 调研
  • agent
  • 记忆

一个 agent 每一步都要把此前的全部状态喂给模型。上下文怎么装、怎么压、压掉的东西还能不能找回来,直接决定它能不能把一件长任务做完。2026 年 9 月,我们把 Manus 团队公开讲过的上下文工程内容读了一遍,包括 2025 年 7 月的博客、2025 年 10 月与 LangChain 的研讨会,以及几次访谈的转述。这篇文章整理其中可核对的部分,再对照我们自己的做法。

为什么 200K 以上的上下文不重要

Manus 联合创始人季逸超在访谈里有一句被广泛转述的话:200K 以上的 context 就不重要了。理由不是模型放不下,而是三件事:

  • 观察结果太大。网页、PDF 一次就能吃掉几万 token。
  • 模型表现会随长度下降。窗口标 100 万,通常在 20 万左右就开始重复、变慢、变差。
  • 长输入贵。就算有前缀缓存,输入输出比常在 100 比 1。

他给的解法是让模型具备「压缩意识」:上下文很长时,知道把信息卸载到文件系统里,只留摘要,并且明白这些信息是被压缩了,不是消失了。需要时按路径取回。

博客里的六条原则

原文标题是 Context Engineering for AI Agents: Lessons from Building Manus。六条原则可以压成一句话一条:

  1. 围绕 KV 缓存设计。 命中率是生产环境 agent 最重要的单一指标。系统提示前缀要稳定,不要放精确到秒的时间戳。上下文只追加,不改历史。序列化要确定。
  2. 遮蔽而不是移除工具。 工具定义在上下文最前面,中途增删会让后面全部缓存失效,还会让模型引用已经不存在的工具。用 logit 遮蔽来限制可选动作。
  3. 把文件系统当上下文。 任何不可逆的压缩都有风险,因为没人能预测十步之后哪条观察会变得关键。所以压缩必须可恢复:网页内容可以丢,URL 要留;文档内容可以丢,路径要留。
  4. 用复述操纵注意力。 长任务平均 50 次工具调用,模型会跑偏。Manus 让 agent 维护一个 todo 文件并不断重写,把全局目标推到上下文末尾、最近的注意力范围内。
  5. 保留错误。 抹掉失败就抹掉了证据。失败的动作和堆栈留在上下文里,模型才会更新自己的判断。
  6. 别被 few-shot 带偏。 上下文里全是相似的动作观察对,模型会机械重复。刻意引入一点结构性变化。

2025 年 10 月的更新:阈值、阶梯和 todo 的反转

博客本身没有给数字。研讨会上补上了:

  • 可用长度:多数模型在 20 万 token 左右开始出现 context rot。能放得下不等于能处理好。
  • 先 compaction 再 summarization。每个工具调用有完整和紧凑两种表示,紧凑版去掉能从外部状态重建的信息。比如写文件的内容字段可以省略,因为文件已经在环境里了。先把最旧一半的工具调用换成紧凑版,收益递减后再做摘要,摘要时保留最后几次调用的完整细节。
  • todo 复述被撤回了。 统计发现约三分之一的动作花在更新 todo 上。后来改成独立的 planner 通过结构化工具调用给执行 agent 下发任务。

第三条值得单独记住。博客里最被引用的技巧,三个月后被作者自己以数据推翻。

createrole 目前怎么做

我们的数字员工在自己的电脑上干活,上下文压缩由服务端自动完成,模型不参与决策。分四个阶梯:

  • 装配时遮蔽。 每次组装消息,最近两条以外的历史工具结果一律换成占位符。原文在数据库里,模型有一个内置工具可以回捞。
  • 发送前裁剪。 估算超出预算,就丢最旧的工具交换或问答轮,系统提示和摘要不动。
  • 回合中途主动压缩。 一个回合里工具连着调,占用逼近预算九成时,遮蔽本回合较早的工具结果。估算值和上一轮实测值取更保守的那个。
  • 撞窗重试。 真的超了窗口,最多重试两次,最后一次按比例截断单条超大消息。

压缩之外,还有一条异步摘要:摘要模型蒸馏历史,再机械抽取所有 URL 和绝对路径做逐字附录。压缩发生时用户会收到一条提示,但这条提示不进模型上下文。

对照六条原则:系统提示常量化、易变信息放在当前回合、工具清单固定、错误原样回喂、计划文件全量重写,这五项已经对齐。文件系统即上下文做到了一半:占位符可以回捞,但占位符本身不带路径,模型只知道有一条结果被省略,不知道原文件可以重新读。

还没做到的一件事:压缩意识

我们的模型从头到尾看不到自己用了多少上下文,不知道哪条工具结果何时被遮蔽,也不知道摘要何时替换了历史。它唯一主动外置的动作是写计划文件和写记忆,而这两者的触发条件都和上下文占用无关。

这就是差距所在。三个候选方向,按风险从低到高:

  1. 占位符带上可恢复路径,大观察直接落盘,回喂只给头尾加路径。纯文本模板改动,几乎零风险。
  2. 每回合把上下文占用作为一个量化到十档的信号注入当前回合,规定跨过某档时把已确认事实、已产出文件路径和下一步写进笔记文件。
  3. 压缩前先让模型写一份交接笔记,再执行遮蔽和摘要。摘要模型只做合并。

计划文件的复述我们打算保留,但把频率从每完成一步改成事件驱动,避免重蹈三分之一动作在改 todo 的覆辙。计划和笔记也要分开:计划是要做什么,笔记是已经知道什么。

参考

  • Manus 博客:Context Engineering for AI Agents: Lessons from Building Manus(2025-07)
  • LangChain 与 Manus 研讨会 Context Engineering for Agents(2025-10),Lance Martin 的笔记
  • 张小珺《商业访谈录》第 128 期季逸超专访的公开转述(2025-12)