Skip to content

Context Window:Agent 每一步到底能看见什么?

今天先记住

Context window(上下文窗口)不是“模型记忆力”的同义词,而是模型在这一次决策里实际能看到的输入边界。Agent 出错时,很多问题不是模型不会做,而是它这一步看见的东西不对、太少、太乱,或被旧信息挤满了。

它在大地图里的位置

还是看这条主线:

txt
用户目标
  -> 上下文 / 记忆
  -> 规划 / 决策
  -> 工具调用 / 外部系统
  -> 执行 / 观察结果
  -> 评估 / 修正
  -> 最终输出

今天讲的是“上下文 / 记忆”这一层。它站在规划之前,决定模型做下一步判断时能看到哪些用户目标、系统规则、历史状态、工具结果和候选资料。

它到底是什么

上下文窗口可以理解成模型当前这一轮的“工作台”。工作台上可以放系统提示、用户消息、开发者规则、历史对话、工具定义、检索材料、上一轮命令结果、错误日志等内容。

窗口大,不等于系统稳。窗口塞满了无关内容,模型会被噪音带偏;窗口缺少关键状态,模型会凭空补;窗口里同时有新旧冲突信息,模型可能沿用过期状态。

所以 Agent 里真正要管的不是“能塞多少 token”,而是每一步该放什么、不该放什么、冲突时谁优先。

为什么 Agent 里会用到它

Agent 每一步都要决策:现在该查文件、改代码、运行构建、问用户,还是停止输出。这个决策依赖上下文。

比如文档发布任务里,如果模型看不到上一课标题,就可能重复选题;看不到构建报错,就只能泛泛说“修复失败”;看不到“不要手动跑 vercel”,就可能执行错误发布动作。

上下文窗口的工程价值,具体落在这些失败点上:少了关键规则会越权,少了工具结果会假装成功,混入过期状态会误判现场,塞入太多无关历史会让真正重要的约束被淹掉。

怎么判断它有没有用

如果任务只是一轮问答,通常不用专门设计上下文管理。

如果任务会跨多步执行,就要明确每一步最小必需上下文:目标、当前状态、可用工具、刚才观察到的结果。

如果系统经常“明明说过却忘了”,先别急着加长 prompt,先检查那条信息是否真的进入了本轮上下文。

如果系统经常引用旧状态,比如人已经到家却还按“在路上”回复,就要给上下文加时间戳、优先级和过期判断。

最近冒出来的词

这几天可以留意一个说法:agent computer。

LangChain 在 2026-07-15 的文章里讨论了“给 Agent 自己的电脑”:文件系统、shell、包管理器、网络和可持久化状态。它不是一个全新理论,更像把 Agent 的执行环境说清楚。

这和今天主题有关:一旦 Agent 有了自己的执行环境,上下文窗口就不能只装聊天记录,还要装环境状态、命令输出和权限边界。

来源提示:LangChain Blog,2026-07-15。

一个小例子

txt
Input:
生成并发布 2026-07-17 的 AI Agent Daily lesson。

Process:
1. 放入上下文:写作框架、已有课程列表、上一课主题、发布规则。
2. 不放入上下文:无关聊天、旧项目日志、未参与本任务的未跟踪文件内容。
3. 执行后追加观察:npm run docs:build 是否通过,git status 里哪些文件相关。

Output:
模型选择“Context Window”作为下一课主题,并只提交 docs/ai-agent/2026-07-17.md 这类相关文件;如果构建失败,下一轮上下文里必须包含具体报错。

这个例子可以拿来判断真实系统:它不是问“模型记不记得”,而是问“这一步决策时,证据有没有摆到工作台上”。

常见误区

  1. 以为上下文窗口越大越好。大窗口只是容量,选择和压缩才决定质量。
  2. 以为记忆就是把历史全塞进去。长期记忆应该按任务检索,不是整仓倾倒。
  3. 以为工具结果天然会被模型记住。工具输出必须被写回状态,并进入下一轮上下文。
  4. 以为提示词能解决所有冲突。新旧信息冲突时,需要明确优先级和过期规则。

今天自测

  1. 上下文窗口和长期记忆有什么区别?
  2. 如果 Agent 重复昨天的主题,你会先检查哪几类上下文?
  3. 一个工具调用失败后,哪些信息必须进入下一轮上下文?