跳转至

卷四 08|restore / session recovery:系统怎么把这条线重新接活

导读

如果卷四只讲到 projection、collapse 和 compact,那么它解释的仍然只是系统怎样防止自己被历史压垮;但卷四真正要回答的是更完整的问题:这套系统怎样在治理之后继续活着。所以最后必须把 restore / session recovery 拉回来。它们不只是把旧消息读一遍,而是把一条会话工作线、连同必要状态与当前工作条件,一起接回当前 runtime。

这篇要回答的问题

为什么治理之后还需要恢复与续接,session recovery 又怎样把工作线重新接起来?

这篇要留下的判断是:

卷四真正要解释的,不是系统怎样压短历史,而是它怎样在治理之后把工作线重新接活。

先给恢复链主图

flowchart TD
    A[会话档案 / state 仍然存在] --> B[整理出可接的恢复包]
    B --> C[restore 接回当前 runtime]
    C --> D[重新组织当前工作面]
    D --> E[工作线继续推进]

这张图就是本篇最该留下的残影:恢复链不是回看过去,而是把一条还能继续工作的线重新接回当前现场。

recovery 不是“把旧聊天翻出来”,而是先整理出可接的工作包

恢复链的第一步,不是把 transcript 原样重贴到屏幕上,而是从会话档案里整理出一份还能继续工作的恢复包。

cc/src/assistant/sessionHistory.ts 提供的是分页读取 session events 的能力,这说明系统恢复依赖的是事件线,而不是单一聊天文本。也因此,recovery 关心的重点是:

  • 当前要恢复的是哪条 session
  • 这条 session 留下了哪些事件和状态线索
  • 哪些内容值得进入新的工作起点

所以 recovery 更像 从档案层重新提炼出可工作的入口

restore 才是“把这份工作包接回当前 runtime”

恢复链的第二步才是 restore。cc/src/bridge/createSession.ts 说明 session 可以带着已有 events 被创建出来;这意味着 restore 的重点不是回看过去,而是让当前运行现场重新拥有:

  • 一条有效的 session 壳
  • 可继续承接的事件历史
  • 能重新组织当前工作面的起点

从这个意义上说,restore 更像“把工作包重新落回当前运行现场”,而不是简单“读档”。

图:恢复不是单层动作,而是“读出工作包 -> 接回运行现场”

flowchart TD
    A[会话档案] --> B[恢复包]
    B --> C[restore 到当前 runtime]
    C --> D[继续 query / 继续工作]

这张图能把 recovery 和 restore 的分工压清:前者偏读取与整理,后者偏接回与落地。

补图:restore 与 transcript replay 的区别

flowchart TD
    A[只把旧 transcript 翻出来] --> A1[看见过去发生过什么]
    A1 --> A2[不等于当前就能继续工作]

    B[recovery / restore] --> B1[整理可接的工作包]
    B1 --> B2[接回当前 runtime]
    B2 --> B3[重新进入可继续推进的工作线]

这张补图值在它能把 restore 最容易被误解的一点直接打掉:restore 不是重新展示过去,而是把一条还能继续推进的工作线重新接回当前现场。

为什么恢复不是附属功能,而是持续工作闭环的最后一环

如果把恢复理解成一个可有可无的附属能力,卷四就会在 07 停住:

  • 系统会治理
  • 系统会压缩
  • 系统会减负

但这还不等于系统真的具备持续工作能力。持续工作真正困难的地方在于:

工作线被治理过、被重组过、被阶段化之后,还能不能重新成为一个可继续推进的现场。

所以 restore / recovery 在卷四里不是“讲完治理以后顺手补一下”的尾声功能,而是这条链最终成立的证据。没有它,前面的 projection、collapse、compact 都只是在说明系统会处理负担;有了它,卷四才能说明系统会把处理过的工作重新接成活线。

把卷四压回一句闭环判断

到卷尾,卷四真正留下的不是 8 篇文章目录,而是这句:

Claude Code 之所以能持续工作,不是因为它把历史一直背着走,而是因为它会分清对象边界、构造当前工作面、在过重时治理,并在必要时把这条工作线重新接活。

自然导向后续,但不抢后续职责

卷四收在这里,刚好把读者送到后续两卷:

  • 卷五继续解释:系统怎样接入 skills、agents、MCP 等外部扩展能力。
  • 卷六继续解释:命令、工作流与产品入口怎样把这些能力收成今天的 Claude Code。

但卷四自己的任务到这里已经完成:它解释的不是系统怎样长出更多能力,也不是这些能力怎样被用户入口调度,而是 这套系统为什么能一直工作

一句话收口

restore / session recovery 在卷四里的作用,不是把旧聊天重新读出来,而是把会话档案、当前工作条件与新的运行现场重新接成一条线;它不是附属功能,而是持续工作闭环的最后一环。