Grok Build · 会话与记忆 —— 持久化、压缩、回滚、跨会话记忆 章节摘要:前面几章讲了 Agent 如何「思考」与「动手」。本章转向一个同样重要但常被忽视的主题:Agent 如何「记住」。一个会话可能跨越几十轮对话、上百次工具调用,这些历史如何存储?当历史逼近模型上下文窗口,如何压缩?当用户想回到 Agent 动手之前的状态,如何回滚?跨会话的项目知识,如何沉淀复用?这些问题的答案,构成了 Grok Build 的「记忆体系」——会话持久化(JSONL)、上下文压缩、Rewind 回滚、跨会话记忆、AGENTS.md 项目规则。本章逐个拆解,让你看清 Agent 「记得过去」的全部机制。
章节摘要:前面几章讲了 Agent 如何「思考」与「动手」。本章转向一个同样重要但常被忽视的主题:Agent 如何「记住」。一个会话可能跨越几十轮对话、上百次工具调用,这些历史如何存储?当历史逼近模型上下文窗口,如何压缩?当用户想回到 Agent 动手之前的状态,如何回滚?跨会话的项目知识,如何沉淀复用?这些问题的答案,构成了 Grok Build 的「记忆体系」——会话持久化(JSONL)、上下文压缩、Rewind 回滚、跨会话记忆、AGENTS.md 项目规则。本章逐个拆解,让你看清 Agent 「记得过去」的全部机制。
阅读完本章,你应当能够:
整章逻辑可浓缩为一句话:会话历史是 Agent 的「短期记忆」,跨会话记忆与项目规则是「长期记忆」——前者用 JSONL 与压缩管理当下,后者用 Markdown 与混合搜索沉淀经验。
讲清会话为何用 JSONL(而非 SQLite)存储,文件布局(updates.jsonl/chat_history.jsonl/summary.json 等),以及崩溃原子追加与行撕裂检测。
讲清新建、resume、continue、fork-session 的语义差异,以及会话目录的路径编码(短路径 URL 编码,长路径哈希)。
拆解 full-replace(Grok Build 专用,整段总结重建)、intra(逐步尾部保留)、inter(分块跨回合),85% 触发阈值,以及孤儿工具结果 snap。
讲清检查点是文件系统快照(非 git 提交、非模型权重),首次写入才捕获,All/ConversationOnly 两档回滚,hunk 增量(可选)。
讲清 MEMORY.md 全局 + per-workspace 哈希目录,FTS5 全文 + KNN 向量混合搜索,/flush 与 /dream 反思巩固。
讲清多文件名兼容(Agents/Claude/CLAUDE 等)、越深越优先的加载顺序、规则子目录(.grok/rules/、.claude/rules/ 等)。
本章遵循「当下记忆 → 启动恢复 → 压缩治理 → 历史回滚 → 跨会话沉淀 → 项目规则」的认知路径:
持久化 (01) ──会话怎么存 │ ▼ 启动方式 (02) ──会话怎么恢复 │ ▼ 压缩 (03) ──历史太长怎么办 │ ▼ 回滚 (04) ──想回到过去怎么办 │ ▼ 跨会话记忆 (05) ──跨会话记住什么 │ ▼ 项目规则 (06) ──项目知识怎么注入 │ ▼ 第 8 章:自动化与集成
每一节都为下一节铺垫:不存就没法恢复,不恢复就难谈压缩,压缩与回滚共同治理历史,跨会话记忆与项目规则则是历史的「升华」——把会话经验变成可复用的知识。
前置知识:
本章为后续章节奠定的基础:
若希望进一步了解 FTS5(全文检索)与 sqlite-vec(向量检索),可参考 SQLite 的 FTS5 文档与 sqlite-vec 项目;上下文压缩的策略,可参考 LLM Agent 领域关于 context window management 的研究文献。