feat: 增加共享 Agent Browser 调试能力

需求:在 AI 编程会话中让用户与 Agent 共享同一浏览器页面,并查看控制台与网络信息。

实现:新增沙箱浏览器内核、Host API/渲染器面板、OpenCode 工具接入及安全边界测试。
This commit is contained in:
2026-07-31 14:53:36 +08:00
parent 80e8386fa6
commit e97a7ce9df
39 changed files with 6734 additions and 9 deletions

View File

@@ -0,0 +1,35 @@
---
name: agent-browser
description: 当需要打开、查看或调试当前 Makelore 项目的本地或公网网页,读取 Console、Network、DOM、样式、性能信息执行页面脚本或刷新验证修改时使用。
---
# Makelore 开发浏览器
开发浏览器是用户和智能体共享的项目调试界面。它只用于开发过程,不代表作品已经发布。
## 基本流程
1. 确认项目的开发服务已经启动,并取得本地网页地址。
2. 调用 `browser_context``open` 打开该地址。
3. 调用 `browser_cdp``read_events` 读取 Console 与 Network 事件。
4. 需要主动检查页面时,使用 `browser_cdp``send` 调用标准 CDP 方法。
5. 修改代码后调用 `browser_navigate``reload`,再读取新事件验证结果。
## 工具选择
- `browser_context`:打开、查看状态、关闭浏览器或清空当前项目的浏览器数据。
- `browser_navigate`:跳转、后退、前进或刷新共享页面。
- `browser_cdp`
- `send` 原样执行当前项目页面的 CDP 命令;
- `read_events` 按游标读取原始事件,不会消费其他读取者的数据;
- `read_payload` 分块读取响应体、截图等大型结果。
## 约束
- 不要传递或猜测 `projectId``tabId``targetId``webContentsId`;项目身份由当前会话目录自动绑定。
- 不要通过远程调试端口、`curl` 或另一个浏览器绕过这些工具。
- 页面刷新或调试器重连后,旧的 DOM node、RemoteObject 和子 Target 引用可能失效,应重新获取。
- 开发浏览器面板收起或被模态框遮挡时,智能体调试会暂停;等待用户重新显示页面后再继续。
- `CDP_TIMEOUT` 表示结果未知,客户端会关闭该浏览器以清理悬挂命令;不要盲目重复可能产生副作用的命令,先重新打开页面并核对状态。
- 原生 DevTools 与智能体调试冲突时,请用户关闭该页面的原生 DevTools 后再继续。
- Console、请求头、响应体、Cookie 和页面内容可能包含敏感信息,只在完成当前调试所必需时读取和展示。