<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Persistence on CAO ZUOHUA</title><link>https://caozuohua.github.io/tags/persistence/</link><description>Recent content in Persistence on CAO ZUOHUA</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 18 Aug 2026 10:20:00 +0800</lastBuildDate><atom:link href="https://caozuohua.github.io/tags/persistence/index.xml" rel="self" type="application/rss+xml"/><item><title>DeepSeek Harness 解读（三）：会话、记忆与上下文压缩</title><link>https://caozuohua.github.io/posts/2026-08-18-deepseek-harness-series-3-session-memory-compaction/</link><pubDate>Tue, 18 Aug 2026 10:20:00 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-08-18-deepseek-harness-series-3-session-memory-compaction/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;这是 DSH 系列的第三篇。很多 Agent 都声称支持“记忆”，但这个词往往同时指会话保存、上下文压缩、跨会话召回和目标续跑。DSH 的有趣之处，是把这些问题明确拆开了。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="先把记忆拆成五件事"&gt;先把“记忆”拆成五件事&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Session Persistence 保存发生过什么&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Context History 决定模型当前看到什么&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Compaction 压缩当前可见历史&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Long-term Memory 跨会话主动召回知识&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Goal State Agent 还要继续完成什么&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;DSH 内置支持前四项中的一部分：它强内置会话事件日志和上下文压缩，Goal 是持久任务状态；真正的语义长期记忆则通过外部 Provider 或 MCP 接入。&lt;/p&gt;&#10;&lt;h2 id="1-session-persistence日志才是事实来源"&gt;1. Session Persistence：日志才是事实来源&lt;/h2&gt;&#10;&lt;p&gt;DSH 不把 &lt;code&gt;messages[]&lt;/code&gt; 当作唯一状态，而是将一次交互保存为 append-only 的类型化事件：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;turn/start&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;user/message&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;assistant/chunk&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;assistant/message&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tool/call&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tool/result&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;step/end&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;turn/end&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;模型的历史消息由这些事件重新派生。这样可以让 UI、Replay、Fork、Telemetry 和恢复逻辑共享同一份事实来源。&lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/session.md"&gt;Session 文档&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;持久化层通过 &lt;code&gt;ctx.sessionPersistence&lt;/code&gt; 抽象出来，目前支持 JSONL 和 SQLite 后端。写入采用批处理和 flush checkpoint；崩溃恢复时，DSH 会识别没有关闭的 turn，并以 &lt;code&gt;interrupted&lt;/code&gt; 结束它，而不是粗暴截断日志。&lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/persistence.md"&gt;Persistence 文档&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;这是一种“事实优先”的设计：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;原始日志尽量完整&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;模型上下文可以变化&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;历史投影可以重新计算&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-compaction压缩可见表面不删除原始历史"&gt;2. Compaction：压缩可见表面，不删除原始历史&lt;/h2&gt;&#10;&lt;p&gt;上下文接近模型窗口时，DSH 不直接删除旧事件，而是选择一段旧的 surface，调用 summarizer 生成摘要，然后追加一个 checkpoint：&lt;/p&gt;</description></item></channel></rss>