RenOS
学习笔记 ·

Context 上下文

本文目录 12 节
  1. 1、定义
  2. 2、为什么它重要
  3. 3、上下文里通常放什么
  4. 4、Context 与 Memory、State 的区别
  5. 5、一个 Agent 开发例子
  6. 6、常见误区
    1. 误区一:长上下文等于好上下文
    2. 误区二:聊天历史都应该保留
    3. 误区三:RAG 结果一定可靠
    4. 误区四:Context 可以替代 State
  7. 7、一句话总结
  8. 参考资料

Context 上下文

返回 Agent 开发笔记合集

1、定义

Context 是模型在一次生成中能够看到的信息集合。它通常包括用户输入、系统指令、历史消息、工具结果、检索材料、业务状态和输出格式要求。

LLM 不是真的“记得一切”。它只能基于当前上下文窗口里的内容生成结果。因此,Agent 的上下文设计,本质上是在决定模型此刻应该看见什么。

如果把模型比作厨师,Context 就是当前料理台上摆着的订单、食材、便签、半成品和安全规则。料理台上没有的东西,厨师就只能猜。

2、为什么它重要

上下文决定了模型能理解什么、能引用什么、能执行什么任务。上下文不足,模型容易幻觉;上下文过多,模型可能忽略重点,还会增加成本和延迟。

一个可靠的 Agent 不会把所有信息都塞给模型,而是会根据任务动态选择必要信息。

Context 管理的核心问题是:

在当前任务里,模型现在最需要看到什么?

3、上下文里通常放什么

内容例子
用户请求“帮我修复这个测试失败”
系统规则不能删除用户文件,改代码前先读规范
对话历史前几轮讨论、用户偏好、已确认决策
业务状态当前订单、项目、PR、任务、用户权限
工具结果搜索结果、测试输出、API 返回值
RAG 材料文档片段、代码片段、知识库结果
输出要求JSON Schema、Markdown 模板、字段约束
错误信息失败日志、异常堆栈、重试次数

这些内容不一定都要进入模型。更好的做法是按任务阶段动态装配。

4、Context 与 Memory、State 的区别

概念重点
Context模型本轮生成能看到什么
State系统为了继续执行任务保存了什么
MemoryAgent 为未来任务长期保留什么
Storage数据具体保存在哪里

Context 是“当前可见信息”,State 是“任务进行到哪里”,Memory 是“以后应该记住什么”。

比如用户偏好可能保存在 Memory 里,但只有当它和当前任务相关时,才应该被取出来放进 Context。

5、一个 Agent 开发例子

假设 Agent 要修复一个 CI 失败。上下文里应该优先放:

1. 用户目标:修复当前 PR 的 CI 失败
2. 失败日志:具体失败命令和报错
3. PR diff:这次改了哪些文件
4. 相关源码:失败测试涉及的模块
5. 项目规范:测试命令、代码风格、AGENTS.md
6. 输出要求:说明修改了什么、验证了什么

不应该一开始就把整个仓库、所有历史对话和所有文档都塞进去。那会让模型更贵、更慢,也更容易抓错重点。

6、常见误区

误区一:长上下文等于好上下文

不是。长上下文只是容量更大,不代表信息组织更好。关键材料如果被噪声淹没,模型仍然可能判断错误。

误区二:聊天历史都应该保留

不一定。历史消息需要摘要、筛选和分层。过期假设、错误结论和无关闲聊都可能污染当前任务。

误区三:RAG 结果一定可靠

RAG 只是把检索结果放进上下文。检索错了、片段过短、来源不可靠,模型仍然会基于错误材料生成。

误区四:Context 可以替代 State

不能。Context 是给模型看的输入,State 是系统保存的结构化执行状态。长任务不能只靠聊天记录续命。

7、一句话总结

Context 是模型本轮能看见的工作台。Agent 做得稳不稳,很大程度取决于系统能不能在正确时间,把正确材料放到这个工作台上。

参考资料

Comments

留下评论

GitHub Issues