SuperAPI AI 工具集

surf-codebase

编程与开发

查看项目

更新于 10-16 00:05

技能介绍

用途:帮助在 surf-cli 代码库中导航与修改代码,回答架构问题。surf-cli 是 Chrome 扩展加原生主机的 AI 浏览器自动化工具。

架构:cli.cjs 经 socket:/tmp/surf.sock 连接 host.cjs,host.cjs 通过 native-msg 连接 service-worker/index.ts,再经 CDP 或 Chrome API 操作浏览器。

主要能力与核心文件:src/service-worker/index.ts(约2500行)是中央消息路由、CDP 操作、截图缓存与标签注册表,消息类型含 EXECUTE_CLICK、EXECUTE_TYPE、READ_PAGE、EXECUTE_SCREENSHOT;src/cdp/controller.ts(约1000行)封装 CDPController,提供鼠标、键盘、截图、网络与控制台跟踪、模拟等;src/content/accessibility-tree.ts(约1900行)生成无障碍树 YAML 并处理元素交互;native/cli.cjs 与 native/host.cjs 分别负责 CLI 解析与 socket 服务、AI 集成。

扩展方式:新增 CLI 命令需在 native/cli.cjs 的 TOOLS 加定义并在 service-worker 的 handleMessage() 加处理;新增 CDP 操作在 CDPController 加方法,用 this.send(tabId, "Domain.method", params)。

用法与调试:构建用 npm run build,测试用 npm test,覆盖率 npm run test:coverage;开发用 npm run dev,产物在 dist/,作为未打包扩展加载,再用 surf install <ext-id> 注册原生主机。扩展日志在 chrome://extensions 的 Service Worker 控制台,主机日志在 /tmp/surf-host.log,CLI 原始输出用 --json。

限制:CDP 首次附加每标签需 100-500ms;chrome:// 页面受限;已存在标签需刷新才能注入内容脚本;截图默认自动缩放到 1200px,除非使用 --full。元素引用 e1、e2 在 READ_PAGE 时生成,存于 window.__piRefs,每次读取命令重置。网络捕获存于 /tmp/surf/requests.jsonl。