---
read_when:
    - 你想知道重启 Gateway 网关是否会丢失正在进行的智能体工作
    - 智能体运行因重启、崩溃或配置重新加载而中断
    - 你正在调试 Gateway 网关恢复运行后的自动会话恢复功能
summary: Gateway 网关重启或崩溃后仍会保留的内容：中断的智能体轮次会自动恢复，子智能体和后台任务会恢复运行，排队的投递会继续处理完毕
title: 重启恢复
x-i18n:
    generated_at: "2026-07-12T14:29:50Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 15
    provider: openai
    source_hash: b2701cb9cdc5aabffc395a2956260389cbe81a6c3ca2876830ef4ed83db2fb53
    source_path: gateway/restart-recovery.md
    workflow: 16
---

重启 Gateway 网关不会丢失智能体状态。对话、转录记录、
定时任务、后台任务记录和排队等待的出站消息都存储在
磁盘上；轮次执行中途被中断的工作会在 Gateway 网关恢复运行后
被自动检测并恢复。无需手动干预，
也无需进行任何配置：恢复功能始终启用。

本页介绍哪些状态可在重启后保留、如何检测中断的工作，
以及自动恢复的具体过程。

## 重启后保留的状态

| 状态                          | 存储方式                                            | 重启时的行为                                                            |
| ----------------------------- | --------------------------------------------------- | ----------------------------------------------------------------------- |
| 对话历史记录                  | JSONL 转录记录 + 磁盘上的每智能体会话存储           | 保持不变；会话从已存储的转录记录继续                                    |
| 中断的主会话轮次              | 会话存储中的恢复标记                                | 启动几秒后自动恢复                                                      |
| 子智能体运行                  | SQLite（共享状态数据库）                            | 启动时恢复注册表；恢复中断的运行                                        |
| 后台任务                      | SQLite（共享状态数据库）                            | 启动时协调状态；恢复孤立的运行或将其标记为丢失                          |
| 排队等待的出站投递            | SQLite 投递队列                                     | 重启后清空队列；重试尚未投递的回复                                      |
| 定时（cron）任务              | SQLite cron 存储                                    | 调度计划持久保留；调度器在启动时重新启用                                |
| 重启后继续执行                | SQLite 重启哨兵                                     | 向请求重启的会话分派一次性后续轮次                                      |

## 优雅重启会先等待任务完成

请求重启（`openclaw gateway restart`、需要
重启的配置更改或 Gateway 网关更新）不会立即终止正在执行的工作。
Gateway 网关会停止接受新工作，然后等待活跃的智能体轮次和
后台任务完成，最长不超过排空时限（默认为 5 分钟）。因此，大多数
重启不会中断任何工作。

只有无法在排空时限内完成的工作（或因强制重启或崩溃而中断的任何运行）
才会被中止——而且在此之前，每个
受影响的会话都会被标记为需要恢复。

## 如何检测中断的工作

有两种互补机制用于标记轮次未完成的会话：

- **关闭时：**在重启排空期间，会话存储中每个存在活跃运行的会话
  都会被写入恢复标记，然后才会中止该运行。
- **启动时：**Gateway 网关会扫描会话存储，查找仍然
  声称正在运行、但在新进程中没有活跃所有者的会话。此机制可处理
  未执行任何关闭代码的严重崩溃和进程终止。同时也会清理过期的转录记录锁
  文件。

## 自动恢复

启动几秒后，Gateway 网关会重新分派每个已标记的会话，
并附上一条合成的系统消息，告知智能体其上一轮次因重启而
中断，并要求其从现有转录记录继续。如果最终回复已经生成但尚未投递，
消息中会包含其文本，
以便智能体直接投递，而不是重新执行工作。恢复过程最多重试
3 次，并采用指数退避。

恢复前，Gateway 网关会检查转录记录末尾是否适合
继续执行。如果不适合（例如，该轮次结束于一个过期的待处理
审批），则不会盲目地重新运行该会话；智能体会改为发布一条简短
通知，请用户重新发送上一个请求。

OpenClaw 还可以重建中断的只读[代码模式](/zh-CN/reference/code-mode)
工作。代码模式会将这些运行标记为重启安全，并在有副作用的
目录工具或插件命名空间执行前拒绝它们。如果重启发生在
`wait` 控制处，新 Gateway 网关会根据转录记录重建该轮次，
并强制重建后的执行保持重启安全，即使
模型省略或清除了该标志。宿主会将整个重建轮次限制为经过审计的
只读核心工具和明确可安全重放的插件工具，
即使代码模式在重启后已禁用也是如此。有副作用的工作
仍由重新发送通知保护，避免重复写入的风险。

### 子智能体

子智能体运行持久化在共享 SQLite 状态数据库中，因此
子智能体注册表可跨进程保留。启动时会恢复注册表，并使用原始任务上下文
恢复中断的子智能体会话。
此过程应用两项安全阀：

- 超过 2 小时前中断的运行会被终结，而不是恢复，因此
  停机一整夜的 Gateway 网关不会重新唤醒过期工作。
- 反复恢复失败的会话会被标记为卡死并设置墓碑，
  防止恢复过程无限循环。

### 后台任务

[后台任务注册表](/zh-CN/automation/tasks)由 SQLite 支持，
会在启动时及定期进行协调：恢复已完成运行记录的持久结果，
而所有者进程已消失的运行会在宽限期后
被标记为丢失，而不是永久挂起。

### 智能体请求的重启

当智能体自身触发重启（应用配置更改、更新
Gateway 网关或显式请求重启）时，会在进程退出前向
SQLite 写入重启哨兵。启动后，Gateway 网关会将结果发回
发起请求的聊天，并分派一次性后续轮次，使
智能体在同一渠道和线程中从中断处准确继续。

## 安全阀和可观测性

- **崩溃循环熔断器：**5 分钟内发生 3 次非正常启动会触发熔断器，
  在下次启动时禁止自动启动辅助服务，从而防止崩溃的 Gateway 网关
  加剧自身问题。非正常启动时间窗口清空后，熔断器会恢复。
- **指标：**恢复活动通过
  [Prometheus](/zh-CN/gateway/prometheus) 导出为 `openclaw_session_recovery_total` 和
  `openclaw_session_recovery_age_seconds`。
- **日志：**恢复决策记录在
  `main-session-restart-recovery` 和 `subagent-interrupted-resume`
  子系统的日志中。

## 不会恢复的内容

- 因已有其他所有者负责处理而被排除在主会话恢复之外的会话：
  子智能体会话（由子智能体恢复机制处理）、cron 会话（由
  调度器按计划重新运行）和 ACP 管理的会话（由连接的 IDE
  或客户端负责恢复）。
- 转录记录末尾无法安全继续的会话；这些会话会收到
  上述重新发送通知，而不是被静默地重新运行。
- 从未被接纳的工作：在排空时间窗口内到达的消息会
  收到明确的重启错误并被拒绝，而不是被静默地排入即将终止的
  进程。
