nicobailon/surf-cli
The CLI for AI agents to control Chrome. Zero config, agent-agnostic, battle-tested.
它解决了什么问题
Surf 提供了一个简单、与智能体无关的 CLI,用于让 AI 智能体控制 Chrome 浏览器。它消除了对复杂设置、专有 API 密钥或特定 AI 提供商锁定的需求,允许智能体像人类一样与网页进行交互——使用现有的浏览器登录状态和会话。
工作原理
Surf 作为一个 CLI 工具运行,通过 Unix socket 与 Chrome 扩展程序进行通信。它使用原生消息主机(native messaging host)来桥接 CLI 和浏览器。这种架构允许任何可以执行 shell 命令的工具使用它(例如 Claude Code、GPT 或自定义 shell 脚本)。
关键技术特性包括:
- 可访问性树集成 (Accessibility Tree Integration):使用来自可访问性树的稳定元素引用(
e1、e2等),使交互比传统的 CSS 选择器对 DOM 变化的适应性更强。 - 会话管理:实现了一个会话系统,允许多个独立的智能体并发操作浏览器标签页而互不干扰。
- 远程访问:支持通过 Tailscale 进行远程浏览器控制,使用双向 Ed25519 挑战-响应机制进行安全身份验证。
- 智能默认设置:自动调整截图大小以节省 token,并在操作后捕获截图以减少智能体的往返次数。
适用人群
正在构建 AI 智能体的开发者,这些智能体需要浏览网页、进行研究或与 Web 应用进行交互,而无需承担管理无头浏览器集群或复杂 API 集成的开销。
亮点
- 与智能体无关 (Agent-Agnostic):适用于任何可以运行 CLI 命令的 LLM 或智能体框架。
- 零配置:通过 npm 和 Chrome 扩展程序快速安装。
- 语义定位器:通过 ARIA 角色、文本或标签查找并与元素进行交互。
- 利用浏览器 Cookie:使用现有的浏览器登录状态而非 API 密钥来查询 ChatGPT、Gemini 和 Perplexity 等 AI 服务。
- Iframe 支持:能够在 frame 之间切换以与嵌套内容进行交互。
- 网络捕获:自动记录网络请求,以便对 API 调用进行过滤和重放。
相关
- 项目
- 项目
- 项目
- 项目
- 项目