---
title: "会话"
description: "会话是一个 Git 分支，也是代理工作的沙箱。"
---

会话是智能体工作的一项单元。Beeuni 会为其创建一个 git 分支，并配置
一个沙箱。会话 ID、分支名称和沙箱 ID 是同一个值。

<a id="status"></a>

## 状态

实际使用中，会话有 4 种状态。

| 状态 | 含义 |
|---|---|
| `provisioning` | Beeuni 创建分支并请求沙箱。 |
| `running` | 沙箱已启动且可以访问。 |
| `stopped` | 会话已暂停，可能是你暂停的，也可能是空闲时自动停止的。 |
| `failed` | 配置失败。 |

数据库还定义了另外 3 个值（`queued`、`branching`、`completed`）。
目前 Beeuni 不会为会话写入这些值。

<a id="stop-resume-and-idle-auto-stop"></a>

## 停止、恢复和空闲时自动停止

你可以自行停止会话。恢复会重新启动同一个沙箱，保留相同的文件系统和运行时身份。只有正在运行的进程和内存会重置。标准运行器 对话仍与该会话关联。

Beeuni 也会为你停止空闲会话：

- 普通会话或触发器运行空闲 15 分钟后。
- 由另一个会话启动的工作会话空闲 2 分钟后。

智能体正在执行回合时不会停止。维护任务每 5 分钟运行一次。因此，普通会话通常会在终端回合结束后约 15 到 20 分钟自动停止。

需要等待人员响应的回合不会执行任何工作：智能体提出了问题，或请求运行工具的权限。这类回合最多会让电脑在 Beeuni 首次检测到等待后继续运行 2 小时。如果是触发器或计划任务运行，则没人会收到请求，时限为 30 分钟。之后 Beeuni 会结束回合并停止电脑。发送消息即可继续。模型调用或你打开的会话页面会被视为活动，电脑会照常延长运行时间。

你正在使用的会话页面会让会话保持运行。只有在标签页可见、且你在最近 10 分钟内点击、输入、滚动或触摸过页面，并且你有权在该项目中启动会话时，页面才会被视为正在使用。打开标签页但没有输入，10 分钟后就不再计入，因此会话会在约 15 到 20 分钟后停止。只读查看者打开的标签页不会让会话保持运行。仅使用页面最多只能让会话在智能体上一个回合结束后继续运行 2 小时；发送新消息会开始一个回合并重置时限。


<a id="what-stop-and-delete-keep"></a>

## 停止和删除会保留什么

:::warning[删除操作不可撤销]
删除会话会永久销毁其沙箱。Beeuni 会保留会话记录和 git 分支，因此你仍可恢复已推送的工作。未推送的内容将会丢失。
:::

停止和恢复会保留沙箱的身份和文件系统。删除会销毁沙箱。Git 是唯一持久记录：智能体提交并推送的工作会保留，其他内容都会丢失。

<a id="labels"></a>

## 标签

标签用于分类会话：`bug`、`customer: eu`、`worker`。打开会话的
`⋯`菜单并选择 **Edit labels**。会话列表中的 **Labels** 筛选器只会显示带有你选定的所有标签的会话。标签可自由填写，长度为 1–64 个字符，每个会话最多 20 个。

智能体和脚本也可以设置标签：`beeuni sessions new --label worker`、
`beeuni sessions update --label needs-review`（在会话内使用且不指定 ID 时，会为当前会话添加标签），或在 API 和 SDK 中使用 `labels`。会话还包含一个可自由填写的 `metadata` 对象，供你存储自定义键值 — 参见
SDK sessions。

<a id="runtime"></a>

## 运行时

会话运行一个执行框架：标准运行器 或实验运行器。参见
[Harnesses](/docs/zh/work/harnesses)。Beeuni 会在会话启动时保存选定的智能体和模型。运行中的会话会继续使用原来的执行框架，直到重新启动或恢复。

<a id="session-access"></a>

## 会话访问权限

会话仅对创建者开放。所有者打开 **Session access**，并从 3 个选项中选择一个。

| 选项 | 谁可以打开会话 |
|---|---|
| Only you | 仅所有者。这是默认设置。 |
| Specific people | 所有者，以及所有者选定的成员和群组。 |
| Whole project | 项目中的所有成员。 |

所有有权访问的人都可以阅读对话并继续对话。

**共享会话使用共享密钥。** 会话共享后，只能使用与整个项目共享的提供商密钥，不能使用任何个人密钥或 ChatGPT 连接。如果会话使用你的个人密钥运行模型，共享后就会切换为该提供商的项目密钥。如果项目没有可用于该模型的共享密钥，则无法共享，会话仍保持私有。参见
[Provider keys and member access](/docs/zh/project/models#provider-keys-and-member-access)。

**只有所有者可以更改此设置。** 未创建该会话的项目管理员在会话与其共享后可以打开会话，也可以停止、重启或删除会话，但无法更改其他人的访问权限。与管理员共享会话，不代表将其访问名单交给管理员管理。

有一类会话没有人工所有者：由触发器创建、以触发器智能体身份运行的会话。这类会话由项目管理员管理。要为所有这类会话设置策略，请在触发器本身的 **Session access** 下进行设置 — 保存后也会更新该触发器已创建的会话。

<a id="admins-can-open-every-session"></a>

### 管理员可以打开所有会话

账户所有者可以允许账户所有者和管理员打开账户中的**所有**会话，包括成员设为私有的会话。在 **Account → Settings → Security → Admins can open every session** 下启用此选项。默认关闭。

- **只有账户所有者可以更改此设置。** 管理员可以看到开关，但无法切换，因此没有管理员可以自行授予自己访问所有人工作内容的权限。
- **管理员可以在项目的 Sessions 页面找到这些会话。** 侧边栏仍只列出你启动的会话或与你共享的会话。
- **访问权限完整。** 管理员可以打开、阅读并继续会话，与共享给整个项目的会话相同。
- **成员可以看到此设置。** 启用后，Session access 对话框会说明所有者和管理员可以打开所有会话。
- **所有操作都会记录审计日志。** 每次切换都会记录为 `iam.session_oversight.enable` 或 `iam.session_oversight.disable`，管理员通过此功能打开的每个会话都会记录为 `project.admin_oversight_session_read`
  （每位管理员对每个会话每小时最多记录一次）。
- 智能体和沙箱令牌不会因此获得访问权限，即使它们是由管理员启动的也不例外。

<a id="find-a-session-by-owner-or-access"></a>

### 按所有者或访问权限查找会话

项目的 **Sessions** 页面会在每个会话条目中显示其所有者和访问权限：所有者的头像和名称（自己的会话显示 **You**），以及表示谁可以打开会话的图标：锁表示 **Only the owner**，多人图标表示 **Specific people**，地球图标表示 **Whole project**。

在 Sessions 页面打开 **Filter** 以缩小列表范围：

- **Owner** — 每人一项，并显示数量。
- **Access** — Only the owner、Specific people 或 Whole project。
- **Grouping → Owner** — 按人员分组，每人一个分区，你的分区排在最前。

这些筛选条件可以与 **Status**、**Source** 和搜索组合使用。**Reset** 会清除所有筛选条件。

:::warning[会话会保留其所有者]
从账户中移除某人，不会将其会话转移给其他人。其访问策略会冻结为当时的设置。项目管理员仍可停止或删除这些会话 — 删除是撤销无人拥有的会话访问权限的方式。
:::

<a id="sharing-a-preview"></a>

## 分享预览

你可以通过公开链接分享会话的实时预览，并选择只读或交互模式。是否创建此链接由会话所有者决定，原因相同：该链接无需身份验证，因此任何持有 URL 的人都可以在不登录的情况下查看会话。项目管理员可以列出并撤销会话链接，即使他们不是会话所有者也可以 — 撤销只会移除访问权限。

完整状态枚举、注入的环境变量和守护进程端点，请参见 [Runtime](/docs/zh/work/runtime)。了解会话如何选择智能体，请参见 [Agents](/docs/zh/project/agents)。了解由计划任务或 webhook 启动的会话，请参见 [Triggers](/docs/zh/connect/triggers)。要将会话工作合并到默认分支，请参见 [Change requests](/docs/zh/work/change-requests)。
