第 5 章 会话、上下文与记忆
本章你会学会
- 理解 Session 和 Context Window;
- 知道 Agent 为什么会“忘事”;
- 区分“会话内记忆”和“跨会话记忆”;
- 用文件、
AGENTS.md、Skill 做长期记忆; - 管理上下文,避免越聊越慢、越聊越贵。
5.1 Session 是什么
Session 是一次连续对话。
在同一个 Session 里:
- 你说过的话、Agent 的回复、工具结果,会形成历史;
- Agent 能引用前面的内容;
- 但历史不是无限的。
新建 Session:
- 通常不会自动继承上一个 Session 的完整聊天记录;
- 它会重新读取工作区、
AGENTS.md、可用 Skill 等; - 适合开始一个新任务。
你可以把 Session 理解成“一次会议”。会议结束,新的会议不会自动记得上一次的每句话,除非你留下会议纪要。
5.2 Context Window:Agent 的“工作内存”
模型一次能处理的文本量是有限的,这个上限叫 Context Window(上下文窗口)。[1]
进入上下文的东西包括:
- 系统提示词;
- 工具定义;
- Skill 内容;
- 你的消息;
- Agent 的历史回复;
- 工具返回结果;
- 读进来的文件内容。
上下文满了会怎样
- 变慢;
- 变贵;
- 开始忘掉早期内容;
- 可能触发压缩(compaction)或截断;
- 严重时,它会“自信地”用错误信息继续。
常见信号
- 它开始重复问已经说过的事;
- 它引用了错误的文件名;
- 它忘记了你前面定的规则;
- 回复越来越长、越来越散。
5.3 DSH 不会自动记住一切
这是新手最大的误解。
DSH 有 Session 日志,但不等于跨会话的长期记忆。[2]
- 同一个 Session:它记得聊天历史;
- 新建 Session:它通常不会自动记得上一个 Session 的每句话;
- 它可能读取工作区文件、
AGENTS.md、Skill; - 如果你装了记忆插件,才可能有额外的跨会话记忆。
所以,重要信息要落到文件里:
- 项目背景 →
PROJECT.md; - 约定 →
AGENTS.md; - 进度 →
TODO.md或任务列表; - 决策 →
DECISIONS.md; - 交付物 → 输出文件。
能被文件记住的,不要指望聊天记住。
5.4 新会话 vs 继续会话
| 场景 | 建议 |
|---|---|
| 开始一个全新任务 | 新建 Session |
| 同一任务继续做 | 继续当前 Session |
| 当前 Session 太长、开始混乱 | 让它先写总结,再新建 |
| 换了一个完全不同的项目 | 换工作区 + 新建 Session |
| 只想问一个独立问题 | 新建 Session,避免污染上下文 |
长任务的做法
- 让 Agent 把当前进度写到
PROGRESS.md; - 让它列出“已完成 / 未完成 / 下一步”;
- 新建 Session;
- 第一句话让它读
PROGRESS.md和AGENTS.md。
这比无限延长一个 Session 更稳。
5.5 用文件做“长期记忆”
一个简单可复用的结构:
project/
AGENTS.md # 规则
PROJECT.md # 项目背景
DECISIONS.md # 关键决策
PROGRESS.md # 进度
TODO.md # 待办
notes/ # 资料
output/ # 交付物
每次新 Session,先让它读:
请先读 AGENTS.md、PROJECT.md、PROGRESS.md,然后用三句话复述当前状态。
在复述之前不要改任何文件。
这样它不需要“记住”所有聊天,也能快速恢复上下文。
5.6 Context 卫生
- 不要一次读入大量无关文件;
- 让 Agent 先搜索、再读需要的部分;
- 长文档分段读;
- 工具输出很大时,要求摘要或只取关键段;
- 任务完成后,把结论写进文件,而不是留在聊天里;
- 不要在一个 Session 里混很多不相关任务。
一个实用提示词
请只读取与当前任务最相关的 3 个文件。
如果需要更多,先告诉我为什么。
不要一次性把整个目录读进来。
5.7 记忆插件与记忆文件
有些插件提供“跨会话记忆”:
- 自动提取事实;
- 存储到本地或云端;
- 下次对话时召回。
它们有用,但不是魔法:
- 可能召回错误;
- 可能把旧信息当新信息;
- 可能增加上下文和成本;
- 需要隐私和权限评估。
对 0 基础用户,建议先用文件 + AGENTS.md 这种可控方式。等你有明确需求,再考虑记忆插件。
马上试试
- 让 Agent 写一个
PROJECT.md,记录当前任务目标和约束; - 新建 Session;
- 第一句话让它读
PROJECT.md,复述目标; - 观察它是否能在没有旧聊天记录的情况下继续工作。
常见坑
- 以为新 Session 会记得旧 Session:不会自动记得。
- 把所有资料一次性塞进上下文:又慢又贵。
- 长 Session 里反复改需求:上下文污染。
- 只让 Agent “记住”而不落文件:下次就没了。
- 记忆插件当真相:召回可能错。
小结
- Session 是一次对话;Context Window 是工作内存。
- 上下文会满,满了会忘、会慢、会贵。
- DSH 不自动跨 Session 记住一切。
- 重要信息落文件;长任务先总结再换 Session。
- 记忆插件是补充,不是替代。
参考
链接均为公开来源;产品行为可能随版本变化。