State and lifetimes
This page has not been translated yet. It is shown in Chinese.
这一篇的收获遇到断网或重启时,先找到状态的持有者,再判断哪些东西还能继续使用。
不要把所有东西都叫“会话”
一次远端工作同时包含几种寿命不同的对象。它们可能同时开始,却不需要一起结束。
| 对象 |
保存什么 |
谁持有 |
| 访问授权 |
可以访问哪些资源、何时失效 |
授权系统与调用方凭据 |
| 工作区引用 |
这次工作对应哪个设备和工作区 |
调用方或独占对话的适配器 |
| 网络/MCP 会话 |
当前这段通信的协议状态 |
两端的通信组件 |
| 远端工作区 |
根目录、shell、执行记录 |
设备端进程 |
| 执行任务 |
某条命令的进度和输出 |
设备端工作区 |
MCP 的 HTTP 请求、协议会话和产品里的聊天窗口不是同一个对象。协议允许会话管理,也明确指出断开连接本身不应被当作取消请求。具体工作区如何存活,仍由 wanctl 自己实现。原始资料:传输与会话管理
先看拥有状态的进程
当前目录和已导出的环境变量属于一个活着的 shell。把下一条命令交给同一个 shell,就能延续它们。启动同一种 shell 的新进程,得到的仍是另一份状态;子进程中的环境修改也不会自动改回父进程。原始资料:Bash 执行环境
这也解释了 Python 的边界:shell 可以反复启动 Python 完成复杂逻辑,但每次新启动的 Python 程序不会自动继承上一次 Python 进程的内存变量。持久 Python 内核是另一种需要管理的进程,不是“支持执行 Python”自然附带的能力。原始资料:Python subprocess
用四种事件检查寿命
概念演示:选择一种事件,观察工作区状态。这里不会连接设备。
先问“谁持有这份状态”,再判断能否恢复。
| 事件 |
v0.12.1 的判断 |
| 网络断开 |
设备仍存活时,已受理任务可继续;重连后查原任务 |
| 保存绑定的控制端进程重启 |
远端状态可能还在,但调用方需要保存的引用来重新附着 |
| 设备端 agent 重启 |
进程内的 shell 和执行账本丢失,不自动复原;项目文件不因此自动删除 |
| 显式 exit |
工作区关闭,旧引用不能继续用于工作 |
这里的“持久”指跨调用和跨连接,不是任意进程重启后的内存快照恢复。项目契约
自检:先判断,再看解释
连接断开后,设备进程仍正常运行。原 shell 状态能否延续,主要取决于谁还活着?
查看解释(可以跳过作答)
状态放在设备端工作区及其 shell 中。调用方仍需要有效授权和原引用才能找回它,但网页标签或网络连接的消失不等于远端进程退出。
带着什么进入下一篇
以后遇到“重启后还在吗”,先画出状态的持有者。下一篇把这些状态放进一次完整的修改流程。
如果这一点还不清楚,可以把本篇的问题和你自己的项目场景交给协作 agent,请它换一个例子解释。自检只提供即时反馈,不代表已经掌握;隔一段时间,不看答案再解释一次更有价值。
术语速查 · 架构卡片 · 课程目录
03|状态:断掉一条连接,会丢掉什么
这一篇的收获遇到断网或重启时,先找到状态的持有者,再判断哪些东西还能继续使用。
不要把所有东西都叫“会话”
一次远端工作同时包含几种寿命不同的对象。它们可能同时开始,却不需要一起结束。
| 对象 |
保存什么 |
谁持有 |
| 访问授权 |
可以访问哪些资源、何时失效 |
授权系统与调用方凭据 |
| 工作区引用 |
这次工作对应哪个设备和工作区 |
调用方或独占对话的适配器 |
| 网络/MCP 会话 |
当前这段通信的协议状态 |
两端的通信组件 |
| 远端工作区 |
根目录、shell、执行记录 |
设备端进程 |
| 执行任务 |
某条命令的进度和输出 |
设备端工作区 |
MCP 的 HTTP 请求、协议会话和产品里的聊天窗口不是同一个对象。协议允许会话管理,也明确指出断开连接本身不应被当作取消请求。具体工作区如何存活,仍由 wanctl 自己实现。原始资料:传输与会话管理
先看拥有状态的进程
当前目录和已导出的环境变量属于一个活着的 shell。把下一条命令交给同一个 shell,就能延续它们。启动同一种 shell 的新进程,得到的仍是另一份状态;子进程中的环境修改也不会自动改回父进程。原始资料:Bash 执行环境
这也解释了 Python 的边界:shell 可以反复启动 Python 完成复杂逻辑,但每次新启动的 Python 程序不会自动继承上一次 Python 进程的内存变量。持久 Python 内核是另一种需要管理的进程,不是“支持执行 Python”自然附带的能力。原始资料:Python subprocess
用四种事件检查寿命
概念演示:选择一种事件,观察工作区状态。这里不会连接设备。
先问“谁持有这份状态”,再判断能否恢复。
| 事件 |
v0.12.1 的判断 |
| 网络断开 |
设备仍存活时,已受理任务可继续;重连后查原任务 |
| 保存绑定的控制端进程重启 |
远端状态可能还在,但调用方需要保存的引用来重新附着 |
| 设备端 agent 重启 |
进程内的 shell 和执行账本丢失,不自动复原;项目文件不因此自动删除 |
| 显式 exit |
工作区关闭,旧引用不能继续用于工作 |
这里的“持久”指跨调用和跨连接,不是任意进程重启后的内存快照恢复。项目契约
自检:先判断,再看解释
连接断开后,设备进程仍正常运行。原 shell 状态能否延续,主要取决于谁还活着?
查看解释(可以跳过作答)
状态放在设备端工作区及其 shell 中。调用方仍需要有效授权和原引用才能找回它,但网页标签或网络连接的消失不等于远端进程退出。
带着什么进入下一篇
以后遇到“重启后还在吗”,先画出状态的持有者。下一篇把这些状态放进一次完整的修改流程。
如果这一点还不清楚,可以把本篇的问题和你自己的项目场景交给协作 agent,请它换一个例子解释。自检只提供即时反馈,不代表已经掌握;隔一段时间,不看答案再解释一次更有价值。
术语速查 · 架构卡片 · 课程目录