## 背景 / 痛点 我日常会在一个项目里同时跑 3-4 个 AI Agent(WorkBuddy、Codex、Claude 等),每个 Agent 通过 BrowserSkill 控制不同的浏览器窗口 / 标签页。 但当前任意一个被控制的窗口,顶部控制条都显示同一句话:**「BrowserSkill 已开始调试此浏览器」**,右下角协作浮窗标题也是固定的 **「BrowserSkill」**。 结果:**看不出到底是哪个 AI、哪个项目、哪个会话正在控制这个窗口**。多 Agent 并发时,面对一排长得一模一样的「BrowserSkill 控制中」窗口,用户无法区分,也不利于安全(不知道谁在动哪个浏览器)。 ## 现状分析(已查源码,fork 同步至 0.4.0 / PR #521) - 控制条文案来自 i18n 常量:`packages/i18n/src/locales/zh-CN/extension.json` 的 `brandName: "BrowserSkill"`(第 29 行)+ `status: "Agent 正在控制"`(第 177 行)。是**产品名 + 固定文案**,不依赖任何可变的控制者字段。 - 协议层**完全没有「控制者身份」字段**,逐层确认: - `crates/bsk-protocol/src/tools/session.rs` `SessionStartParams`(第 53 行):仅 `session_id / incognito / browser_instance_id / width / height / focused / unattended`,**无 agent 名 / 项目 / 颜色**。 - `crates/bsk-protocol/src/system.rs` `SessionStatusEntry`(第 530 行):仅 `session_id / browser_instance_id / agent_window_id / created_at_ms`,**无控制者标识**。 - `crates/bsk-protocol/src/tools/tabs.rs` `TabBorrowParams`(第 139 行):仅 `tab_id / session_id / confirmation_timeout_ms`,**无控制者标识**。 - `system.rs` 里出现的 `label` 字段(如 `VersionSkewEntry.label`)是**浏览器实例**的 label(如 "Turbo"),不是 session 控制者。 => 结论:**无法用轻量方式(复用已有 label / metadata)实现**,必须在协议层新增控制者身份字段。 ## 提议方案 1. **协议层**:`SessionStartParams` 新增可选 `controller: Option<ControllerInfo>`,其中 `ControllerInfo { name: String, project: Option<String>, color: Option<String> }` (`color` 为稳定 hex,供 UI 区分)。同时把 `controller` 透传到 `SessionStatusEntry`,使 `system.status` / `bsk status` 也能展示。 2. **daemon 层**:在 session 状态中保存 controller 信息,并随心跳 / status 下发到扩展。 3. **扩展层 UI**: - 顶部控制条:从固定「BrowserSkill 已开始调试」改为「`[颜色] {name}·{project}` 正在控制 · 已 X分X秒 · 取消」,左边框用 `controller.color`。 - 右下协作浮窗:标题从「BrowserSkill」改为控制者名 + 颜色点;「交给 Agent」按钮写明具体 Agent。 - 可选:浏览器窗口标题前缀 `[{shortTag}·{project}]`,任务栏层面也能区分。 4. **i18n**:新增 controller 相关文案(多语言)。 ## 设计要点 - **四维身份模型**:Agent 名称 / 项目标签(**最核心**——用户按项目区分多个 AI)/ 会话 ID / 视觉颜色。 - **颜色编码**:每个控制者实例分配稳定颜色,3-4 个并发窗口一眼可辨。 - **安全增强**:明确控制者后,可加「抢占确认」——某窗口已被 A 控制时 B 想借用,弹「当前由 X 控制,是否抢占」。 ## 价值 - 解决多 Agent 并发时的「谁在控制这个窗口」困惑。 - 提升可控性与安全感。 - 多 Agent 协作是明显趋势,对上游也有普遍价值(可同时提 PR 给 Tencent/BrowserSkill)。
Activity