离线和重连
连接中断后哪些内容会保留,以及 Control UI 在连接恢复后如何恢复。
繁忙的初始连接¶
如果 WebSocket 升级失败,但同源的 Gateway 仍能响应其 /healthz 存活探针,登录界面会显示 Gateway 繁忙,正在重试…,并显示下一次自动尝试的倒计时。当容量可用时,无需点击或更改凭据。当许多访客共享同一个场地 IP 并耗尽 预认证连接预算 时,可能会出现这种情况。
该探针不发送 Gateway token,也不跟随重定向。无法访问或未验证的端点会保留 Gateway 无法访问 指引;跨源 Gateway 连接不会被探测。身份验证和配对拒绝会保留其特定的恢复说明。
热重载¶
热重载仅适用于 token 或 device-token 身份验证之后。浏览器必须仍持有用于认证先前连接的 Gateway token,或从该连接保留的已配对 device token,并再次出示同一凭据。在该连接之后,OpenClaw 会在浏览器存储中保留一个小型 agent 列表、不含实时运行状态的会话列表以及自定义分组。最近的对话记录使用现有的聊天缓存。重新加载时,主界面、侧边栏和缓存的对话可以在 Gateway 仍在连接时显示。连接后,实时状态会替换缓存的列表,聊天会从其保存的对话记录游标请求变更。首次聊天请求在连接后最多等待 300 ms 以获取已存储的对话记录,如果未就绪,则回退到实时历史。已存储的对话记录属于其选定的 agent;在加载期间切换 agent 无法在新 agent 下显示或保存它。
可信代理和 Tailscale 身份始终显示初始连接屏幕,并且不保存热启动或列表记录。密码和一次性 bootstrap-token 连接遵循相同规则。缓存的对话记录内容在 Gateway 连接之前保持隐藏;普通对话记录缓存保持其现有行为。
热重载记录属于 Gateway 凭据范围和已登录配置文件。更改或删除浏览器凭据,或清除站点数据,会清除缓存的启动状态。agent 和会话列表记录在 30 天后过期。连接时报告的不同配置文件会在加载实时数据之前清除缓存的启动状态和对话记录。最近的对话记录保持其现有缓存限制。如果浏览器存储不可用或不存在可用记录,则初始连接屏幕会照常出现。
Gateway 更新和挂起标签页¶
打开的标签页在返回前台、重新上线或从浏览器历史记录恢复时,会检查当前活动的 UI 构建。如果更新在标签页挂起期间完成,它可以在未收到原始更新通知或打开新标签页的情况下恢复。
自动重载会等待页面可访问,并尊重未保存工作保护。当前路由和已存储的草稿会在重载后保留。如果浏览器存储不可用或重载保护阻止恢复,请在保存工作后重载标签页;在草稿或排队消息仍需要恢复时,不要清除站点数据。
未保存的文件编辑会阻止自动和应用内重载,即使你关闭了它们的预览或切换了对话。重新打开每个已编辑的文件并保存或丢弃其更改,然后重试重载。如果服务器更新使编辑器不可用,请在重载通知中选择 查看文件草稿。你可以在不连接 Gateway 的情况下复制或下载每个保留的草稿,明确丢弃已解决的草稿,然后再次尝试 刷新。保留草稿 会将它们保留在此标签页中并受保护。每个草稿都会显示文件打开时捕获的会话标题、会话键和窗格位置,因此匹配的文件名仍可区分。如果你在查看旧草稿时较新的编辑发生变化,它们仍会保持受保护。文件编辑会保留在当前页面的内存中;显式浏览器重载或关闭浏览器标签页会丢弃它们。
连接丢失和重连¶
一旦会话建立,Gateway 连接中断不会注销你。仪表板保持可见,其侧边栏页脚中的一个连接状态会说明 Gateway 正在挂起、已挂起、正在重启、正在重连还是正在完成恢复。计划中的转换和自动重连使用低调展示;需要你注意的身份验证和其他故障会保留其说明和恢复操作。相同的状态会显示在 macOS 应用的嵌入式仪表板中。连接状态不会替换账户菜单中的 Gateway 名称。
客户端会自动以随机退避方式重试普通连接丢失:首次重试等待 800–960 ms,持续故障会将重试分散在 12.5–15 秒之间。服务器重试提示仍为最小等待时间,并可能超过该正常上限,最多增加 20% 的分散。Gateway 启动提示保持其单独的有界计时。如果浏览器未提供断开原因,连接工具提示会说明连接已中断以及自动重连是否正在进行。它会保留 WebSocket 关闭代码以便排查故障;特定的 Gateway 错误会保留其说明。打开账户菜单,并在提供时使用 立即重试 请求立即尝试。登录失败使用登录流程,必需的仪表板刷新使用其重载流程;重试连接不会替代这两种操作。实时更新和实时/会话操作会暂停,直到连接恢复。聊天在没有预排队辅助的情况下仍可编辑。特定于对话的发件箱摘要仅在消息排队后出现,并与实际排队消息一起显示。
普通文本和附件发送需要成功准入当前标签页的 Gateway/会话范围的浏览器发件箱。符合条件的消息会在连接和账户恢复后自动恢复,但活动运行、打开的排队消息编辑或不确定的先前投递可能会使它们继续等待。收件箱 → 系统 显示失败或需要投递审查的本地提交,查看 会打开其对话及其现有恢复控件。普通排队消息保留在聊天队列中;它们不会引起收件箱注意。账户和连接指示器描述身份和连接性,而不是消息投递。编辑器计数仅覆盖其对话,并不承诺自动发送。草稿文本和等待目标恢复的已保存消息是分开的。
这些 Inbox 条目是现有浏览器标签页/Gateway 发件箱的只读视图,而不是新的按人员或跨设备收件箱。它们显示可用的会话标签,而不是消息文本、附件名称或私有错误详情。Review 不会重试或丢弃任何内容,并且条目不能独立于其待处理副本而被关闭。断开连接时,本地 Review 仍可用;依赖服务器的 Inbox 操作仍不可用。从 Settings 返回工作区以打开 Inbox。 如果存储失败,编辑器会保留未发送的输入并显示恢复指导。
需要实时连接的控件在离线期间保持不可用。Stop 可以排队一个精确的本地运行 ID 以用于重放。仅限会话的停止不会被重放,因为在连接恢复之前,该会话中可能会启动更新的工作。
排队消息遵循队列中显示的顺序,包括在重连后附件字节加载期间进行的移动。正在发送的消息会保持其位置。如果另一个窗格正在编辑消息,请在跨其移动消息之前完成或取消该编辑。成功的重试会清除该编辑冲突通知。 在另一个窗格释放其编辑后打开排队消息编辑器,会清除先前的编辑冲突通知。
如果连接在编辑过程中断开,编辑未发送的排队消息仍然是安全的。 切换会话时,打开的排队消息编辑仍可用,即使访问了足够多的聊天以替换旧的缓存视图。完成或取消编辑以释放该保留的会话。 打开的排队消息编辑还会阻止 Gateway 更新后的自动 UI 重载。 在重载通知中使用 Review edit 返回其会话和拆分视图,即使已切换到其他页面。 保存或取消编辑,然后使用 Refresh for full capabilities 继续。 显式浏览器重载不会保留未保存的排队消息更正。 如果另一个窗格更改或删除了该消息,编辑将保持打开:复制你的更正,取消编辑,并在重试前查看队列。队列已满时会要求你等待或删除一条消息。如果浏览器存储阻止保存编辑,请保持标签页打开,并在释放存储前复制更正。成功保存会清除先前的错误。
由于 Gateway 正在挂起、重启、启动或不可达而失败的页面和侧边栏刷新不会显示内联错误:页脚连接指示器负责该状态。每个面板保留其最后的数据,并在 Gateway 再次接受工作时自动刷新。 在重新连接到同一 Gateway 和账户期间,已建立的会话名称仍显示在浏览器标签页和聊天标题中,包括拆分视图。其他刷新失败仍会内联显示其消息,并在 Gateway 再次可用时自动重试。这些刷新提示没有手动 Retry 按钮。
当 Agent 身份保存被中断时,其编辑器在重新连接后会离开保存状态。如果同一 Agent 仍被选中,草稿仍可用于审阅并再次保存;来自中断请求的迟到结果不会清除更新的编辑。
重新连接后,打开的会话链接会与 Gateway 进行核对。如果 Gateway 确认该会话不再存在,例如 Gateway 重启后的隐身会话,页面会显示 Session not found,并提供打开 Main 或浏览会话的操作。连接失败或当前侧边栏页面中缺失的会话不算作删除。
首次打开视图时,如果其界面文件无法下载,可能会失败。检查连接,然后使用 Reload。更新后也可能出现相同错误;这本身并不意味着已安装新版本。如果未保存的工作阻止了重载,请按照显示的保存或取消指导操作,然后重试。
延迟的历史刷新会保留任何更新的运行及其实时输出。新的空闲响应可以在运行结束后清除过期的忙碌指示器。
如果聊天历史超时,其 Retry 操作会重新加载已保存的会话并恢复其实时会话订阅,包括审批更新。
当 Gateway 确认它持有相同的待处理输入时,Control UI 会清除不确定投递警告,而不会再次发送消息。浏览器会保留其重试负载,直到确认消费或取消。如果投递状态仍未知,审阅警告会保留。 如果 Gateway 正在为该输入的后续轮次保留它,它会显示在编辑器上方的队列中。删除该行会撤回精确的排队消息,而不会停止活动轮次。一旦取消得到确认,被删除的 prompt 及其附件将从队列和会话中消失,包括在重连或重载之后。服务器持有的消息不能被编辑或重新排序。 如果消息已经开始,Remove 会保持活动运行不变;使用 Stop 来中断它。 停止轮次或发送失败仍可能留下带有恢复指导的已取消 prompt;这些操作不会删除 prompt。 隐身聊天保持其现有的取消行为:Remove 会取消排队工作,但已取消消息通知会保留,直到私有会话结束。
如果自动重启恢复在 Agent 恢复之前被中断或取消,System · restart recovery 通知会显示该结果,并要求你发送一条消息以继续。这并不意味着 Agent 已恢复。从其他会话转发的消息会在每条消息旁边保留其自身的投递状态。
一旦 Gateway 确认消息在会话记录中,重新连接会弃用其临时浏览器副本,即使原始消息位于最新历史页面之外。加载较早的历史会在其原始位置显示已保存的消息,而不会添加第二个副本。
弃用已投递的附件不会丢弃运行的完成状态。如果浏览器错过了该完成状态,确认同一会话和运行已完成的队列恢复读取会清除过期的运行指示器并恢复排队输入。
排队附件使用浏览器IndexedDB中的二进制Blob;发件箱仅在会话存储中保留投递元数据和负载引用。附件字节随排队的输入一起保留;即使配置的主会话默认值发生变化,捕获的队列元数据仍拥有其目标。所有附件必须在消息被接受之前存储,并且所有附件必须在发送前可读。接受失败会使草稿保持未发送状态。缺失或不可读的排队负载会留下带有恢复指引的可见行;浏览器绝不会只发送剩余的附件。二进制发件箱存储需要浏览器存储访问权限。在纯HTTP上,由于Web Locks不可用,每次页面加载都会使用新的负载所有者;重新加载和复制标签页会在发送前复制负载,并将旧的有界负载留给浏览器存储清理。Gateway附件限制仍然适用。
发件箱在每条消息中保留最多25 MiB的附件,并在整个浏览器源中保留250 MiB,同时受浏览器自身配额的限制。排队负载没有基于时间的过期机制。投递或丢弃会释放它们;关闭标签页或中断标签页复制或清理可能会在该上限内留下孤立负载。如果在发送或丢弃队列后容量仍然已满,请在清除该站点的浏览器存储之前保存任何需要的草稿。这也会清除浏览器本地的草稿和登录状态。发件箱队列属于浏览器标签页;它们不同于可重启恢复的编辑器草稿。隐身会话保留其现有的仅限标签页的内联发件箱及其较小的浏览器存储限制;它们绝不会在IndexedDB中存储排队的附件Blob。
复制标签页会复制相同的提交ID。一旦打开,复制项会认领自己的负载副本,并将这些提交标记为投递未确认。重试前请检查对话。如果复制项是在源丢弃或投递消息之后首次打开的,则可能会报告缺少附件。独立的标签页不会共享新撰写的发件箱消息。
连接后,聊天会等待账户范围的恢复完成,然后才接受或发送普通消息。在此短暂检查期间,已提交的文本和附件会保留在编辑器中。一旦恢复就绪,离线队列就会恢复,除非会话仍然拥有未解决的初始轮次;请先用该轮次的重试或检查投递操作解决它。如果初始消息正在等待恢复,其聊天会显示加载占位符,直到消息可以恢复为止,而不是显示空白的新聊天欢迎屏幕。恢复通知出现在编辑器下方,并在阻塞条件解决时清除。
如果连接在发送被确认之前断开,重新连接会检查对话记录和会话的活动或最后运行ID以获取投递证明。匹配的运行即使在其对话记录行出现之前也能确认已收到。如果没有证明,已尝试发送的消息会保留在对话中,并带有琥珀色的投递未确认页脚、重试和丢弃。请检查对话,仅当消息未到达时才重试。丢弃会从该浏览器的发件箱中移除待处理的副本;它不会撤销或取消Gateway已接受的工作。后续排队的消息会保持暂停,直到较早的未确认消息被解决或丢弃,队列会解释该阻塞原因。丢弃较早的消息后,下一个排队的消息会在会话就绪时继续。未确认的本地命令保留其重试/丢弃队列控件。
被Gateway拒绝的普通消息会保留在对话中,并带有未发送页脚。使用重试再次尝试,或使用丢弃移除其待处理的浏览器副本。丢弃在重新加载标签页后仍然有效;它不会取消Gateway的工作,也不会移除对话历史中已有的消息。
如果Gateway报告/steer或/redirect消息未能启动,控制界面会在编辑器仍为空时恢复已提交的草稿。它会保留更新的文本、回复和附件。如果您切换了对话,恢复会留在原始对话中。如果在命令待处理期间将Home在页面与其停靠栏之间移动,恢复会跟随当前的Home编辑器,并保留在其中输入的任何较新草稿。
排队消息和草稿会保留创建时选择的对话和代理。切换代理、打开分屏或重新加载不会将它们移动到其他目标。当分屏显示同一对话时,在访问其他对话后返回到较旧的窗格不会替换较新的已保存草稿。文本、选定的收件人、引用回复、目标模式和附件遵循相同的草稿修订版本。选定的回复在重新加载后仍会保留其预览和原始消息目标,即使您尚未输入文本。取消回复会清除该选择,但不会丢弃文本。发送会将回复转移到已提交的消息;接受失败时,只有在您尚未开始较新草稿的情况下才会恢复它。在分屏之间快速切换会保持最后选定的对话处于活动状态,包括在缩小窗口时也是如此。字面意义上的global对话会保留其捕获的代理;代理的主对话保持独立,除非Gateway配置了全局会话范围。
较旧的浏览器状态可能已将多个目标合并到一个存储桶中。控制界面使用元数据版本4(openclaw.control.chatComposer.v4:),当版本1、2和3记录的目标仍然可识别时,会直接迁移这些记录。在删除较旧的源之前,它会验证新元数据;当存储或恢复容量阻止迁移时,会保留完整的源。此元数据更改不会改变IndexedDB模式或持久草稿键。不明确的记录会出现在已保存消息需要目标下,并保持未发送状态。打开带有空编辑器和队列的预期非隐身对话,展开通知,并选择在此处恢复以供查看。确认显示的对话键和代理。恢复的排队消息会保持暂停:在使用重试之前请检查之前的投递情况。恢复的附件草稿会返回到编辑器,而不会发送。在确认打开期间重新连接、更换会话或启用隐身模式会取消转移;请在预期的对话中再次确认。目标已知的较旧附件草稿,在该目标已有较新的清除操作时保持已清除。不明确的已保存数据仍可供查看。排队的Blob引用和原始提交ID在自动迁移和显式目标恢复中都会保留。凭证绑定的消息仅在其原始Gateway凭证范围下显示,包括当较旧的存储桶包含来自多个范围的消息时。将消息移入或移出恢复不会删除其字节;清理会遵循已验证的投递或丢弃,并计入保留的恢复消息。如果目标发生变化、出现较新的草稿或存储失败,恢复会保持源可用,而不会覆盖较新的输入。当您仍有已保存的消息或附件草稿需要恢复时,请勿清除浏览器站点数据。
如果浏览器关闭了其草稿数据库连接,下一次存储操作会自动打开一个新连接。没有已加载条目的恢复错误会显示为无法加载已保存的消息;这并不意味着消息丢失了目的地,也不意味着浏览器存储已满。如果错误持续存在,请重新加载以重试,同时保持站点数据完整。
首次打开以及没有可用热状态的重新加载会在 Gateway 解析初始连接期间显示一个小型动画 OpenClaw 标记,包括身份验证来自受信任代理或 Tailscale 而非浏览器中存储的凭据的情况。登录门控仅在初始连接失败或 Gateway 主动拒绝身份验证(无效 token/密码、缺少受信任身份、已撤销配对)后出现。瞬时连接失败会自动重试;身份验证失败会说明需要您输入什么。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw