会话
会话是一个 Git 分支,也是代理工作的沙箱。
会话是智能体工作的一项单元。Beeuni 会为其创建一个 git 分支,并配置 一个沙箱。会话 ID、分支名称和沙箱 ID 是同一个值。
状态
实际使用中,会话有 4 种状态。
| 状态 | 含义 |
|---|---|
provisioning |
Beeuni 创建分支并请求沙箱。 |
running |
沙箱已启动且可以访问。 |
stopped |
会话已暂停,可能是你暂停的,也可能是空闲时自动停止的。 |
failed |
配置失败。 |
数据库还定义了另外 3 个值(queued、branching、completed)。
目前 Beeuni 不会为会话写入这些值。
停止、恢复和空闲时自动停止
你可以自行停止会话。恢复会重新启动同一个沙箱,保留相同的文件系统和运行时身份。只有正在运行的进程和内存会重置。标准运行器 对话仍与该会话关联。
Beeuni 也会为你停止空闲会话:
- 普通会话或触发器运行空闲 15 分钟后。
- 由另一个会话启动的工作会话空闲 2 分钟后。
智能体正在执行回合时不会停止。维护任务每 5 分钟运行一次。因此,普通会话通常会在终端回合结束后约 15 到 20 分钟自动停止。
需要等待人员响应的回合不会执行任何工作:智能体提出了问题,或请求运行工具的权限。这类回合最多会让电脑在 Beeuni 首次检测到等待后继续运行 2 小时。如果是触发器或计划任务运行,则没人会收到请求,时限为 30 分钟。之后 Beeuni 会结束回合并停止电脑。发送消息即可继续。模型调用或你打开的会话页面会被视为活动,电脑会照常延长运行时间。
你正在使用的会话页面会让会话保持运行。只有在标签页可见、且你在最近 10 分钟内点击、输入、滚动或触摸过页面,并且你有权在该项目中启动会话时,页面才会被视为正在使用。打开标签页但没有输入,10 分钟后就不再计入,因此会话会在约 15 到 20 分钟后停止。只读查看者打开的标签页不会让会话保持运行。仅使用页面最多只能让会话在智能体上一个回合结束后继续运行 2 小时;发送新消息会开始一个回合并重置时限。
停止和删除会保留什么
停止和恢复会保留沙箱的身份和文件系统。删除会销毁沙箱。Git 是唯一持久记录:智能体提交并推送的工作会保留,其他内容都会丢失。
标签
标签用于分类会话: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。
运行时
会话运行一个执行框架:标准运行器 或实验运行器。参见 Harnesses。Beeuni 会在会话启动时保存选定的智能体和模型。运行中的会话会继续使用原来的执行框架,直到重新启动或恢复。
会话访问权限
会话仅对创建者开放。所有者打开 Session access,并从 3 个选项中选择一个。
| 选项 | 谁可以打开会话 |
|---|---|
| Only you | 仅所有者。这是默认设置。 |
| Specific people | 所有者,以及所有者选定的成员和群组。 |
| Whole project | 项目中的所有成员。 |
所有有权访问的人都可以阅读对话并继续对话。
共享会话使用共享密钥。 会话共享后,只能使用与整个项目共享的提供商密钥,不能使用任何个人密钥或 ChatGPT 连接。如果会话使用你的个人密钥运行模型,共享后就会切换为该提供商的项目密钥。如果项目没有可用于该模型的共享密钥,则无法共享,会话仍保持私有。参见 Provider keys and member access。
只有所有者可以更改此设置。 未创建该会话的项目管理员在会话与其共享后可以打开会话,也可以停止、重启或删除会话,但无法更改其他人的访问权限。与管理员共享会话,不代表将其访问名单交给管理员管理。
有一类会话没有人工所有者:由触发器创建、以触发器智能体身份运行的会话。这类会话由项目管理员管理。要为所有这类会话设置策略,请在触发器本身的 Session access 下进行设置 — 保存后也会更新该触发器已创建的会话。
管理员可以打开所有会话
账户所有者可以允许账户所有者和管理员打开账户中的所有会话,包括成员设为私有的会话。在 Account → Settings → Security → Admins can open every session 下启用此选项。默认关闭。
- 只有账户所有者可以更改此设置。 管理员可以看到开关,但无法切换,因此没有管理员可以自行授予自己访问所有人工作内容的权限。
- 管理员可以在项目的 Sessions 页面找到这些会话。 侧边栏仍只列出你启动的会话或与你共享的会话。
- 访问权限完整。 管理员可以打开、阅读并继续会话,与共享给整个项目的会话相同。
- 成员可以看到此设置。 启用后,Session access 对话框会说明所有者和管理员可以打开所有会话。
- 所有操作都会记录审计日志。 每次切换都会记录为
iam.session_oversight.enable或iam.session_oversight.disable,管理员通过此功能打开的每个会话都会记录为project.admin_oversight_session_read(每位管理员对每个会话每小时最多记录一次)。 - 智能体和沙箱令牌不会因此获得访问权限,即使它们是由管理员启动的也不例外。
按所有者或访问权限查找会话
项目的 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 会清除所有筛选条件。
分享预览
你可以通过公开链接分享会话的实时预览,并选择只读或交互模式。是否创建此链接由会话所有者决定,原因相同:该链接无需身份验证,因此任何持有 URL 的人都可以在不登录的情况下查看会话。项目管理员可以列出并撤销会话链接,即使他们不是会话所有者也可以 — 撤销只会移除访问权限。
完整状态枚举、注入的环境变量和守护进程端点,请参见 Runtime。了解会话如何选择智能体,请参见 Agents。了解由计划任务或 webhook 启动的会话,请参见 Triggers。要将会话工作合并到默认分支,请参见 Change requests。