DSH入门

第 5 章 会话、上下文与记忆

约 4 分钟 · 1,991 字 · 12 个小节

本章你会学会

  • 理解 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,避免污染上下文

长任务的做法

  1. 让 Agent 把当前进度写到 PROGRESS.md;
  2. 让它列出“已完成 / 未完成 / 下一步”;
  3. 新建 Session;
  4. 第一句话让它读 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 这种可控方式。等你有明确需求,再考虑记忆插件。


马上试试

  1. 让 Agent 写一个 PROJECT.md,记录当前任务目标和约束;
  2. 新建 Session;
  3. 第一句话让它读 PROJECT.md,复述目标;
  4. 观察它是否能在没有旧聊天记录的情况下继续工作。

常见坑

  • 以为新 Session 会记得旧 Session:不会自动记得。
  • 把所有资料一次性塞进上下文:又慢又贵。
  • 长 Session 里反复改需求:上下文污染。
  • 只让 Agent “记住”而不落文件:下次就没了。
  • 记忆插件当真相:召回可能错。

小结

  • Session 是一次对话;Context Window 是工作内存。
  • 上下文会满,满了会忘、会慢、会贵。
  • DSH 不自动跨 Session 记住一切。
  • 重要信息落文件;长任务先总结再换 Session。
  • 记忆插件是补充,不是替代。

参考

  1. DeepSeek API Token 用量
  2. DeepSeek Harness GitHub 仓库

链接均为公开来源;产品行为可能随版本变化。


↑