> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dureai.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 会话、worktree 与恢复

> Dure 托管代理背后的所有权模型，以及各种恢复路径实际提供的保证。

## 托管代理不只是一个终端

一个托管代理组合了三种 identity：

* provider conversation
* Dure pane 与 agent record
* Git worktree 与 branch

Hmux 持有 provider process 和 PTY，Dure 通过 versioned protocol 以客户端
身份连接。正是这个 process boundary，使关闭应用窗口不会终止托管的本地代理。

## 重新连接

Dure 重新连接时，host 会发送 canonical screen snapshot 以及之后的输出。
客户端不需要重放完整 terminal log 才能绘制当前画面。

带 generation fence 的 controller lease 决定哪个客户端可以输入。其他客户端
可以只读观察，而不会悄悄抢走当前 controller 的键盘控制权。

<video controls muted playsInline title="Dure 重新连接同一个由 Hmux 持有的 Codex 会话" className="w-full aspect-video rounded-xl" poster="/images/hmux-app-reconnect.png" src="https://mintcdn.com/hebbian/gBhXllKfo-gr_XE_/videos/hmux-app-reconnect.webm?fit=max&auto=format&n=gBhXllKfo-gr_XE_&q=85&s=92c12c2f82d750e887a0a9fd47d7408c" data-path="videos/hmux-app-reconnect.webm">
  浏览器不支持内嵌视频。
  <a href="/videos/hmux-app-reconnect.webm">打开重新连接视频。</a>
</video>

## Worktree 所有权

每个 worktree 代理都有自己的工作目录和 branch。这样可以隔离 Git index
与文件修改，但不能隔离 port、process、credential 或 network 等操作系统资源。

<Warning>
  Worktree 不是安全 sandbox。代理能够执行什么，仍由 provider 的批准设置和
  当前用户账号的权限决定。
</Warning>

## 三种不同的恢复

| 事件                             | 结果                                                                                   |
| ------------------------------ | ------------------------------------------------------------------------------------ |
| 应用退出、应用 crash 或 webview reload | 托管 host 保持 live process，Dure 重新连接。                                                   |
| Host process 退出                | Live PTY 与 process 消失。若记录了足够的 identity，Session Recovery 可以提供 provider-aware restart。 |
| 机器重启                           | 不会有 process 存活。`hmux restore` 只是在新 PTY 上重新创建已保存的 shell recipe。                       |

## 托管 pane 与普通 pane

即使直接在普通 terminal 中运行 agent CLI，Dure 也会从真实 process tree 与
terminal 证据中自动识别 provider 及其活动。你可以像平时一样使用终端，无需先
添加或手动注册代理。

自动识别不等于托管转换。托管 provider session 可以通过添加代理流程启动，
也可以在已审查的 terminal 状态下使用显示的转换操作。由于转换必须保留准确的
provider conversation 与 pane identity，因此只会在安全边界执行。

在 SSH 项目中依赖同样的保证之前，请先阅读[当前限制](/cn/current-limits)。
