news 2026/9/15 22:28:59

Open Agents 会话管理指南:如何创建、恢复与归档编码任务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open Agents 会话管理指南:如何创建、恢复与归档编码任务

Open Agents 会话管理指南:如何创建、恢复与归档编码任务

【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents

Open Agents 是一个开源的云编码智能体(Coding Agent)参考应用,它的会话管理(Session Management)是整套系统的核心:每个会话绑定一个独立云沙箱,负责编码任务的创建、恢复与归档。本文带你快速看懂这三件事是如何运作的——从一条提示词到可运行的代码变更,全程无需保持笔记本参与。

先搞懂结构:会话(Session)与聊天(Chat)

Open Agents 是三层系统:

Web -> Agent workflow -> Sandbox VM
  • Web 层:负责登录、会话列表、聊天界面与流式输出;
  • Agent 层:作为持久化工作流(Workflow)运行,可跨多个持久化步骤执行;
  • 沙箱层:执行环境,提供文件系统、Shell、Git 与开发服务器。

在数据模型中,一个 Session(会话)对应一个沙箱,而一个会话下可以挂多个Chat(聊天)。每次新对话就是新建一个 Chat,消息按时间持久化,会话可随时切回。相关定义见 schema.ts,数据库操作层在 sessions.ts。

创建编码任务:一个请求,三步完成

当你点击"新建会话",前端会向POST /api/sessions发起请求,route.ts 中按顺序完成三件事:

  1. 安全防护:机器人识别 + 每用户每分钟 10 次的创建频率限制;
  2. 写入数据库:通过 createSessionWithInitialChat 在同一个事务里创建会话和初始聊天,状态置为running,沙箱状态为provisioning(准备中);
  3. 异步拉起沙箱:调用kickSandboxProvisioningWorkflow启动供给工作流,克隆仓库、切换分支、准备执行环境。

几个贴心细节:

  • 自动命名:不填标题时,系统会从随机城市名中挑选一个不重复的名称(random-city.ts),避免列表里一片"新会话";
  • 自动开新分支:开启isNewBranch后,系统按用户名缩写/随机后缀生成分支名,你的改动不会直接落在主干上;
  • 可选自动化:可以按会话覆盖"自动提交推送"和"自动创建 PR"的偏好。

📌 想本地跑起来:git clone https://gitcode.com/GitHub_Trending/op/open-agents,然后bun install && bun run web

恢复会话:快照休眠与唤醒机制

云沙箱不会永远开机——闲置 30 分钟后自动休眠,这是 Open Agents 会话恢复的关键。完整状态机见 SANDBOX-LIFECYCLE.md:

provisioning ──▶ active ──▶ hibernating ──▶ hibernated ▲ │ └──── 用户点击 Resume ───────┘
事件系统行为
用户发消息刷新lastActivityAt,顺延休眠倒计时
闲置满 30 分钟打快照(snapshot)并停止沙箱,进入hibernated
用户点击 Resume从快照恢复沙箱,继续之前的工作
会话归档停止沙箱、清理快照,状态置为archived

恢复之所以无缝,是因为沙箱支持基于快照的恢复:文件系统、Git 分支、开发服务器状态都保存在快照里。核心评估逻辑在 lifecycle.ts,持久化工作流(能扛过部署与冷启动的"可存活睡眠")在 sandbox-lifecycle.ts。

前端每 15 秒轮询GET /api/sandbox/status同步状态,状态芯片会显示Active / Paused / No sandbox,你随时知道沙箱是醒着还是睡了。

归档编码任务:保留记录,释放资源

任务完成后,归档会话是"善后"的标准动作。调用PATCH /api/sessions/[sessionId](route.ts)将状态改为archived,底层执行 archive-session.ts 中的流程:

  1. 回刷 Git 状态:连上沙箱读取真实分支,查询 PR 最新状态(open / merged / closed),确保列表显示的是准确信息;
  2. 更新会话记录:状态与生命周期状态同步置为archived,清空过期时间等字段;
  3. 后台收尾:异步停止沙箱、清除快照 URL 与沙箱状态——聊天历史、Diff 缓存、PR 编号全部保留,随时可以在"已归档"标签页翻查(侧边栏逻辑见 inbox-sidebar.tsx)。

归档后的会话在侧边栏有独立的分页列表(默认每页 50 条,最多 100 条),既不打扰进行中的任务,也不丢失历史成果。✅

会话状态速查表

状态(lifecycleState)含义你能做什么
provisioning沙箱准备中等待克隆完成
active沙箱运行中正常对话、看 Diff
hibernated已休眠点击 Resume 恢复
archived已归档查看历史、翻找 PR
failed异常查看 lifecycleError 详情

小结

Open Agents 的会话管理可以一句话概括:创建即开沙箱,闲置即休眠,归档即清场。三层分离架构(Web / Agent 工作流 / 沙箱 VM)让智能体执行不依赖单一请求、沙箱生命周期可独立休眠与恢复,这正是它在云端跑长编码任务依然稳的关键。核心源码路径:

  • 会话 API:app/api/sessions/
  • 数据库层:lib/db/sessions.ts
  • 生命周期工作流:app/workflows/sandbox-lifecycle.ts
  • 归档逻辑:lib/sandbox/archive-session.ts

【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 22:28:18

大模型Prompt注入攻击防御与测试实践

1. Prompt注入攻击的本质与危害在大模型应用开发中,Prompt注入攻击已成为最隐蔽且破坏性最强的安全威胁之一。这种攻击通过精心构造的输入文本,诱导模型执行非预期操作或泄露敏感信息。我曾在金融领域的大模型项目中,亲眼见证过攻击者仅用三行…

作者头像 李华
网站建设 2026/9/15 22:27:27

软考软件设计师安全与加密认证技术核心考点解析

1. 软考软件设计师安全与加密认证技术全景解析作为软考软件设计师考试的核心模块,计算机安全与加密认证技术占据着举足轻重的地位。根据近5年真题统计,该模块平均占比达18-22分,涉及知识点多达37个,是考生普遍反映的难点集中区。我…

作者头像 李华
网站建设 2026/9/15 22:25:14

R-EAM与SOA单片集成:实现10.7 Gb/s无色ONU的关键技术

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/15 22:23:42

SpringBoot前后端分离租房管理系统:三端协同与状态流设计实践

简介:基于SpringBoot的智能租房全流程管理系统,面向需要快速搭建房屋租赁平台的开发者、高校毕业设计或中小型项目实践者。资源集成管理端、屋主端、租客端三端协同,覆盖房源上下架、订单处理、预约看房、评价反馈、通知公告等核心业务&#…

作者头像 李华