DeepLook 开源了:真实 Chrome、命令行工具、HTTP API 和 MCP

Dev.to AI 2026-10-21T04:46:46+08:00

我正式开源了 DeepLook,一个浏览器工具,能把公开网页转成可读文本和结构化数据,供 AI 代理使用。它跑的是真实 Chrome,会渲染页面,然后把页面上可见的文字,连同标题、最终 URL、HTTP 状态码和浏览器观察到的信息一起交给你的应用。本地命令行、自建 HTTP API、或者通过 MCP 接入编码代理,用的都是同一套读取能力。原始项目代码采用 Apache-2.0 许可证,你可以查看、部署到自己的服务器上,也可以提交改进。

浏览器引擎、命令行与 MCP
自建 HTTP API

读取这一步,在代理工作流中的位置

做研究和写代码的代理,经常需要拿到 URL 背后的真实页面。很多资源用轻量 HTTP 请求抓一下就够了;但有些页面得先跑 JavaScript 渲染,才能看到有用的文本。DeepLook 负责的就是这个“用浏览器读页面”的环节:给它一个公开 URL,结果交给你的工作流去用。至于搜索、规划研究步骤、决定跟哪些链接、写最终答案,这些仍然是你应用自己的事。

我希望这条边界足够清晰:发一个页面请求,拿一个结构化结果;页面读不了,就明确报错。

本地试一试

需要 Node.js 22.14+ 和 Google Chrome。本地使用不需要 DeepLook 账号、不需要 LLM API 密钥,也不需要共享的项目令牌。

git clone https://github.com/sayhitogambit/DeepLook.git
cd DeepLook
npm ci
npm run build
node dist/cli.js doctor --json
node dist/cli.js open https://example.com

当应用需要页面元数据时用 JSON;当需要统一的成功/错误返回结构时,用带版本号的机器可读格式:

node dist/cli.js open https://example.com --json
node dist/cli.js open https://example.com --machine --timeout-ms 30000

这些命令直接从 GitHub 源码安装,不依赖公共 npm 仓库的发版。你也可以用 npm pack . 打包并安装自己的 tarball。

给智能体配一个 MCP 工具

DeepLook 内置一个 stdio(标准输入输出)MCP 服务器。项目构建完成后,在你的 MCP 宿主里配置启动它:

{
  "mcpServers": {
    "deeplook": {
      "command": "node",
      "args": [
        "/absolute/path/to/DeepLook/dist/cli.js",
        "mcp"
      ]
    }
  }
}

不同宿主的配置字段名会有差异。该命令对外暴露 deeplook_open 工具,接受一个 URL 和可选的超时时间:

{
  "url": "https://example.com",
  "timeoutMs": 30000
}

调用成功会返回页面文本和结构化结果,调用失败则返回带类型的错误。每个 MCP 进程只允许同时进行一个活跃的读取操作,取消信号会传播到浏览器操作。

页面内容始终是不可信输入。智能体必须把页面里出现的“指令”当作素材看待,而不是来自用户或开发者的指令。

运行自己的 HTTP API

DeepLook-API 在浏览器 CLI 外面包了一层 HTTP 接口,提供鉴权、账户配额、并发限制和生命周期管理。读取页面的接口如下:

POST /v1/open

Authorization: Bearer <your-own-browser-key>

Content-Type: application/json

{"url":"https://example.com","timeoutMs":30000} 成功时,API 会返回页面对象。若出错,则会报告具体错误,比如输入无效、未授权访问、配额已用尽、浏览器繁忙、超时,或页面返回验证挑战而非有效内容。服务器凭证由运营者自行生成和管理。管理员凭证与客户端浏览器密钥角色分离。不存在由创始人持有、供所有人共用的令牌,源码也不会提供访问我的账户或基础设施的途径。凭证指南会逐步讲解如何创建自己的密钥,并将其保存在 Git 仓库之外。CLI 和 MCP 工具也可以通过私有环境变量连接到你自己的 API。

首个版本承诺的功能

项目每次调用只读取一个公开的 HTTP(S) URL。它使用标准 Chrome,并保持沙箱启用。它会检查出站目标,包括重定向和页面资源,并拒绝私有、本地和元数据地址。

它也有明确的限制:不解决 CAPTCHA,也不承诺能绕过机器人检查、登录墙或付费墙。它不提供通用的点击滚动代理,也不支持持久化浏览器会话。Chrome 可执行文件诊断成功,并不代表导航、沙箱就绪或远程密钥权限正常。应用层目标检查仍需配合合理的部署隔离和资源限制。围绕浏览器构建代理时,这些边界很重要。技术参考文档记录了响应契约、错误、截止时间、取消和清理行为。

为便于检查和改进而构建

代码仓库包含确定性测试、使用真实沙箱浏览器的测试、包安装检查以及 HTTP/容器集成测试。这些测试既覆盖实际失败场景,也覆盖成功读取。README 提供英文、巴西葡萄牙文和简体中文版本。DeepLook 网站将提供可选新闻邮件,包含确认和退订链接。浏览器和 API 本身不需要电子邮件凭证。

我之所以提前开源这个项目,是希望开发者能试用真实工作流、检查实现,并帮助塑造后续方向。

查看原文