会话资源

右侧可折叠会话资源面板的工程设计。它列出会话使用的完整软件和环境对象。活动视图负责代码执行、命令、脚本、后台进程和输出;文件保留在文件视图中。状态:实现已通过审查;安装验收检查默认 App。当前资源与预览交互定义见已批准的资源面板与预览设计.

交互

分组标题依次使用网页、虚拟机、桌面、终端、应用、容器、远程环境和其他资源。省略空分组及已关闭或退出的资源。多个分支用过的同一个 Page 是一个资源,只列一行:当前查看的分支用过它就取该分支的行,否则取最新的行。连接状态未知的资源保留原类型。已有行操作按钮不变。按会话保存类型分组的折叠状态。选择非网页视图会隐藏网页预览,但不会关闭其 Page。

右侧边栏在文件和活动旁设置会话资源导航按钮,复用相同的行、图标和标签类,标签左对齐,图标为 20px 动画图标,悬停与焦点行为一致。文件、活动和资源保留现有纵向导航。按钮在现有可调整大小的右侧面板中打开内容;面板切换按钮将其折叠为图标栏。仅显示记录的所有者与所选会话一致的资源,按资源类型分组。子 Agent 的资源显示在相应类型下,并标明实际所有者。切换会话会重置详情并中止先前请求。有归属的网页保留记录的会话上下文;草稿和未分配视图不显示会话资源。旧记录仍执行会话检查;缺少分支名不会创建显示分组。点击资源行选择只读聊天预览,不激活或重建 Page,不改变用户标签布局,也不抢占标签焦点。显式点击“打开页面”将同一个已有 Page 显示为常规顶层标签并隐藏预览;返回会话时恢复预览,除非用户已将其隐藏。重复打开复用同一 Page,不生成副本。Agent 打开的隐藏页面保留在资源中,只有上述显式操作才添加顶层标签。资源没有置顶控件。其他资源显示详情,同时保留资源面板。折叠面板或选择其他面板视图会停止资源轮询。所选面板视图在重新加载后保留。

右侧边栏 · 会话资源

资源类型

网页 · 2 个资源

网页 · 文档 · 打开页面 / 关闭

网页 · 结果 · Research Agent · 打开页面 / 关闭

容器 · 已识别容器 · 使用中 · 详情

虚拟机 · 已配置端点 · 已连接 · 详情

桌面 · 应用 · 已连接 · 详情

点击行在聊天中预览同一 Page。“打开页面”将其显示为顶层标签并隐藏聊天预览。Agent 的隐藏页面保留在资源中。切换所选会话时,列表只显示该会话的资源,仍按资源类型分组。

来源与归属

资源权限依据生命周期
网页现有 CenterTab 记录及已记录的会话来源;web_use 打开页面时,通过桌面命令传递可信运行时会话 ID直到网页关闭;用户打开或置顶的页面保留在标签栏中。Agent 打开的页面保留在资源中直到关闭;“打开页面”在标签栏中显示同一 Page
GUI 桌面/虚拟机目标可信运行时使用记录表,以及已配置的应用或虚拟机端点集成连接的生命周期
其他集成携带同一可信上下文的 resource_use(kind, title, target)由集成报告实际使用时段

记录表记录完整软件或环境对象的使用情况,不记录代码执行。集成必须识别实际容器、虚拟机、应用或远程环境。逐命令的 Docker 镜像调用和 SSH 子进程不注册资源。ProcessStore 由活动视图使用,不投影到此列表。记录表不扫描宿主机,也不从任意 shell 文本推断对象。

边界

服务器在返回资源前检查会话和执行授权。浏览器行仍由渲染进程管理;后端行请求仅涵盖所选会话。通过获授权后代范围返回的行仍按实际会话所有者过滤。记录载荷只包含长度受限的显示字段;URL 省略凭证、查询参数和片段。资源面板参与现有右侧面板布局。原生浏览器边界随剩余中央区域调整,使资源和网页同时可见。

用户提供的 Chrome 参考用于设计可搜索、按组显示的资源行。已批准的位置是右侧可折叠面板。实现复用现有右侧面板、中央标签存储、获授权资源路由和原生浏览器边界上报,不引入第二套浏览器管理器或通用破坏性操作协议。

会话预览与 Page 访问

预览独立于可复用聊天标签 ID 保存会话 ID。在聊天标签内或通过其历史导航时,只显示所选会话的预览。未选择 Page 的会话不显示预览;返回时恢复该会话自己的选择。隐藏预览不会释放或公开 Page。

尚未作为顶层标签打开的保留 Agent Page 只属于其记录的会话。Page 清单、轮次上下文、截图、解析、激活和关闭均通过可信执行会话归属强制检查所有权,独立于当前 UI 标签。显式“打开页面”将已有 Page 暴露为常规标签:其他会话可以发现它,但只有现有独占 Page 租约允许时才能取得控制。公开 Page 改变可发现性,不改变原始来源或预览归属。关闭标签会移除其预览。异步结果交付前仍必须匹配当前访问范围。

这扩展了现有渲染进程管理的标签来源和服务器管理的 Page 租约,不引入替代浏览器记录表。现有 GUI Agent 预览和内置浏览器文档仍为权威依据。验收涵盖同标签会话导航及前进/后退、独立聊天标签、私有页面发现和精确 ID 拒绝、显式公开打开、忙碌 Page 拒绝及释放后取得控制,以及原生操作等待期间的访问变化。

实现状态:已实现并通过独立审查。回归测试验证会话绑定预览、私有与公开 Page 访问、异步访问撤销、可信会话归属及清理和独占 Page 获取。Web 测试、浏览器 E2E、完整 Python 检查、类型检查、生产构建及文档检查通过。真实提供方会话仍是单独验收环境。

验收与实现状态

验证右侧边栏位置、不存在左上角资源按钮、按会话隔离、资源类型分组、会话切换、搜索/折叠、指针与键盘操作、原生浏览器共存、点击行预览、显式打开同一 Page、该标签激活时隐藏聊天预览、资源没有置顶控件,以及排除代码/进程/文件条目;同时验证持久终端环境、虚拟机/桌面注册、跨会话授权、正常/异常/所有者终止时清理和重新加载行为。后端测试确认 Docker/SSH 代码执行不注册软件对象。虚拟机连接测试使用受控适配器。

已实现:可信软件使用注册、获授权会话投影和右侧面板。受控测试覆盖正常、异常和过期所有者释放、范围授权及异构 UI 投影。真实 Docker 引擎和虚拟机端点属于单独的在线环境。原生应用及虚拟机控制器适配器仍单独规划。资源/预览交互权威文档:GUI Agent 资源与操作预览。网页行为权威文档:内置浏览器.

统一资源接口

资源用于标识持久环境。终端资源是现有 PTY 和 shell,而不是命令记录。网页、终端和已安装应用共享发现、身份、会话归属、能力描述及视图选择。现有提供方保留执行权限和类型特定操作 schema。

共同操作网页终端应用
list / describe获授权 Page 清单及支持的操作原生宿主清单及 generation已安装、已启用应用的 manifest 和声明操作
open显式创建 Page显式创建私有 shell打开已安装应用实例
observe具有当前身份的 Page 观察独立输出游标和输入修订号实例状态和操作状态
act现有 web_use 操作携带已观察修订号的输入或中断仅限声明为 Agent 可见的操作
release释放控制绑定释放 Agent 绑定,保留进程解除资源关联;操作保留各自明确的生命周期
close在支持时显式关闭 Page请求终止进程;等待实际退出仅在应用声明支持时可用

不支持的操作返回明确的能力错误。共同接口不会为提供方虚构关闭、暂停、截图或键盘支持。结构化观察保留图像、输出游标和类型化结果。现有 web_use 与 terminal_use 保持为兼容的公开入口。资源标识符不等于访问授权。

信任与失败

worker 从可信上下文取得会话、执行和来源窗口。提供方保留常规工具审批、沙箱检查、私有资源检查、独占绑定、generation 检查和输入修订号。应用 manifest 不能通过渲染进程请求提供任意宿主代码。第三方资源使用已安装且明确受信任的应用包。桌面可用性如实报告,不替换为其他宿主。结果不确定的写入永不自动重放。隐藏视图、释放 Agent 访问和终止环境是独立操作。

共享交互

右侧边栏显示一个按会话过滤的列表,共享分组、状态和选择。终端行属于同一列表,不追加独立区域。选择终端会把交互视图连接到其已有 PTY,不得创建新 shell。切换会话清除所选视图。网页保留原生 Page 预览和显式顶层标签操作。会话可见时仍可输入终端。关闭控件标明要终止的环境。输出是不可信内容;输入确认不代表命令已完成。

框架对比

保留现有 Page 记录表提供的原生目标归属和观察新鲜度。保留共享终端管理器提供的 generation、绑定、输出游标和原生回执关联。复用 Applications 运行时的已安装 manifest、实例及声明操作,用于用户软件。现有 resource_use 上下文管理器只报告显示用途的生命周期,本身不能提供控制。拒绝第二套浏览器记录表、通用 shell 命令回退和不受限制的渲染进程插件加载器,因为它们重复权限管理或绕过提供方约束。

验收

验证异构资源之间的会话隔离、副作用发生前拒绝不支持的能力、预览保留既有 Page 身份、用户与 Agent 观察同一终端 cwd/环境/输出、释放但不终止进程、拒绝 generation 变化、阻止冲突的人类输入片段、回执丢失后不重放写入、隐藏但不关闭、实际退出后才重启,以及应用操作受声明暴露范围约束。检查完整 Web 和 Desktop 测试、Python 契约及受影响资源测试、完整仓库验证、原生平台 CI 和已安装的默认 App。

实现状态

源码实现共同资源工具、JSON Schema 能力描述、可信 Python 提供方注册、Web 和终端适配器,以及带内嵌同 PTY 终端视图的共享会话列表。独立规格和质量审查通过。完整本地候选验证通过;这些改动的原生 CI 和已安装 App 验收仍待完成。已安装应用适配器及同实例视图包含在下文后端对等扩展中。操作系统桌面输入控制与已安装应用操作相互独立。应用包必须明确安装并信任后才能自动发现提供方。本节不宣称合并或发布完成。

后端操作对等与可安装提供方

每个产品操作都有经过认证的后端入口。HTTP 操作从已注册 API schema 生成描述;现有 WebSocket 业务命令也可通过请求/响应后端适配器调用,使用同一处理器。Agent 发现具名操作后以结构化参数调用,无需检查或点击 OpenProgram 界面来执行框架操作。

权限与边界

framework 工具要求现有 owner authority 和工具审批,拒绝启用中的沙箱或非本地后端,且从不返回 owner 凭证。内部认证、原生回执和连接注册端点属于传输内部机制,不是可调用产品操作。渲染进程偏好、导航和原生窗口功能具有显式后端命令,指向精确的已连接窗口。响应关联到该连接;断连和结果不确定的修改不触发重试。浏览器与终端资源操作保留原提供方检查。应用操作保留明确的 Agent 暴露范围及已安装包信任要求。

应用自动集成

已启用的已安装应用自动在资源目录提供 application.<id>,无需重启进程或手工修改记录表。manifest 描述操作及输入/输出 schema;open 将持久实例绑定到当前会话,observe 读取状态和运行记录,act 提交声明为 Agent 可见的操作,release 只移除会话关联。取消和问题回答针对精确实例及运行。资源中通过隔离的应用视图打开同一实例。禁用、移除或更新应用会撤销过期描述符。脚手架命令创建可运行应用包,其界面与 Agent 使用相同后端操作。

文件组织

资源契约和分发位于 openprogram/resources,适配器位于其 providers 包。框架发现、权限和客户端调用位于 openprogram/framework。服务器路由保留在 Server 应用下,按控制职责分组。界面命令处理器位于 apps/web/lib/framework,资源视图位于 components/session-resources。兼容导入保留已有集成。新模块职责单一,不包含无关的全仓库文件移动。

验证

在不渲染前端时测试后端发现与调用;副作用发生前拒绝无效操作、未授权上下文和不安全路径。验证安装/禁用/更新/移除后的自动发现、无 iframe 的真实应用执行、资源会话关联、版本检查、状态并发、取消和视图复用。验证精确窗口的界面回执,并确保不重试结果不确定的修改。检查前端 HTTP/WS 操作由共享后端目录覆盖,且已注册界面命令与声明一致。执行独立规格和质量审查及全仓库本地检查,原生 CI 与已安装 App 验收仍为独立门禁。用户禁止中断期间不重启运行中的默认 App。

实现状态

源码包含后端操作发现与调用、显式窗口命令、自动发现已安装应用的提供方、会话关联、同实例视图及应用包脚手架。修复 Agent 暴露、审批策略隔离、Page 权限、重复选择资源、profile 控制和错误传播后,独立规格与质量审查通过。公开入口测试、完整本地 Python 测试分层和覆盖率门禁、Web 测试及生产构建、Desktop 检查、浏览器 E2E 和文档检查通过。合并后的本地 App 候选也通过完整 Web 检查。这些改动的原生 CI 和已安装 App 验收仍待完成;本设计不宣称发布完成。窗口呈现要求已连接视图,而后端业务及应用操作可在不渲染前端时执行。

分屏画布的会话归属

Files、Activity、Resources、资源快照请求和拖放区域使用同一个会话。右侧栏持有唯一的窗口资源同步组件,确保混合画布不会展示一个会话却请求另一个会话。点击聊天窗格立即切换会话;点击网页或文件窗格时保留同一画布内最后选中的可见聊天。画布只有一个聊天时,从网页窗格打开也使用该聊天。隐藏或其他画布内的会话不作为回退目标。独立资源仍使用其记录的会话归属。

网页拖到 Resources 时,关联到右侧当前展示的会话。分屏标签只包含一个网页时,会关联其中的网页;包含多个网页时,拖动所需网页的窗格把手。顶部标签和窗格把手两种拖动均使用与画布停靠一致的蓝色区域预览,并显示“松开以添加到资源”。悬停在 Resources 导航按钮时,按钮与可见资源面板一起高亮;移出或取消后清除。松手后等待原生转移取消和关联确认,再展开资源面板并显示成功通知。失败时显示重试提示,保留网页。关联保留现有 Page 和布局,不改变网页创建归属。验收包括聊天与网页分屏、两个聊天与一个网页、隐藏会话、悬停、取消、释放以及请求中的会话 ID。

实现状态:Resources 和拖放定向回归通过,规格与质量审查通过。安装后 App 单独验收。

关闭资源标签页

标签页是 Page 的显示入口。关闭顶层标签或分栏中的页面时,会话关联的 Page 只隐藏显示入口,保留原生页面、导航状态和资源关联。Agent 创建的页面,以及手动打开后关联到会话的页面,都遵循此规则;可以从 Resources 再次打开同一个 Page。关闭会话标签不销毁其保留页面。

标签关闭动画结束时,根据最新会话归属决定保留或销毁。未关联任何会话的独立页面会被移除并销毁原生视图。Resources 中明确的“关闭网页”和已授权的 Agent 关闭仍执行真正关闭。隐藏页面退出分栏布局,不参与关闭后的焦点候选;焦点转到其他可见标签,没有候选时中心区域为空。隐藏状态持久化,不修改创建来源,也不公开私有页面。

验证

通过共享标签状态、资源列表和原生视图清理验证打开、导航、关闭及重新打开;覆盖 Agent 创建、手动关联、分栏与批量关闭、独立页面销毁和显式资源关闭。实现检查与安装版 App 验收分别记录。