Show HN:Selector Forge —— 浏览器扩展,利用AI生成弹性的选择器

Hacker News Top 工具

摘要

Selector Forge 是一款浏览器扩展,利用AI生成并验证可靠的CSS/XPath选择器,用于网页自动化,帮助开发者构建稳健的选择器,适用于测试、数据抓取和页面自动化。

Hi HN,我是Intuned(<a href="https://intunedhq.com">https://intunedhq.com</a>)团队的Ahmad。今天,我们发布并开源了Selector Forge(<a href="https://selectorforge.ai/" rel="nofollow">https://selectorforge.ai/</a>),这是一款使用AI生成可靠CSS/XPath选择器的浏览器扩展。<p>你可以用它为单个元素或一组元素创建选择器。它生成的选择器具有“语义”性,相比Chrome DevTools的“Copy Selector”(以及其他类似扩展)生成的选择器,更能抵抗页面变化。后者往往会给你一个脆弱的选择器,比如`#top > div.w-100.ph0-l.ph3.ph4-m > h1 > span`,页面稍有改动就可能失效。Selector Forge的目标是生成不易失效的选择器。以下是Selector Forge创建的一些选择器:`//div[@aria-label="Showing weekly downloads"]//p[@aria-live="polite"]`(单项选择器)和`//*[local-name()='svg' and @aria-label="Download statistics"]/following-sibling::div`(列表选择器)。<p>这里有一个使用该扩展的视频演示:<a href="https://www.youtube.com/watch?v=8IjjeDQkKmo" rel="nofollow">https://www.youtube.com/watch?v=8IjjeDQkKmo</a><p>Selector Forge在Chrome上:<a href="https://chromewebstore.google.com/detail/lbendfnlmhdakbeblajoffkfmafbfaha" rel="nofollow">https://chromewebstore.google.com/detail/lbendfnlmhdakbeblaj...</a><p>Selector Forge在Firefox上:<a href="https://addons.mozilla.org/en-US/firefox/addon/selector-forge/" rel="nofollow">https://addons.mozilla.org/en-US/firefox/addon/selector-forge/</a><p>Selector Forge开源代码:<a href="https://github.com/Intuned/selector-forge" rel="nofollow">https://github.com/Intuned/selector-forge</a><p>背景故事:过去几年里,我们一直在构建Intuned Agent,一个用于构建和维护浏览器自动化的编码代理。我们很快发现,任何浏览器代码中最脆弱的环节通常是选择器,而创建良好的选择器可以大大提升自动化本身的质量和可靠性。<p>因此,我们将选择器创建抽象为一个独立的代理,封装成一个工具,并让我们的代码生成代理调用它。默认情况下,LLM在生成优质选择器方面表现并不出色,所以这个工具非常有用,显著改善了我们的代理生成的代码。<p>最近我们认为这个选择器代理/创建工具本身(独立于我们的平台)非常有用,于是将其打包成一个浏览器扩展。这就是本篇帖子!<p>Selector Forge是开源的,浏览器商店(Chrome和Firefox)中的版本每月免费使用200次选择器。无限使用属于我们的付费计划。<p>我们意识到大多数开发者已经不再手动编写这类代码,因此下一步是将此功能以CLI或MCP的方式暴露出来,让编码代理可以直接调用。这是我们的路线图:<a href="https://github.com/Intuned/selector-forge#roadmap" rel="nofollow">https://github.com/Intuned/selector-forge#roadmap</a><p>非常期待听到大家的想法、问题和反馈!
查看原文
查看缓存全文

缓存时间: 2026/06/22 19:35

Intuned/selector-forge 源代码:https://github.com/Intuned/selector-forge # Selector Forge

在任意页面上选取一个元素,就能获得一个可靠的选择器——由 AI 生成并评判,然后在您看到之前通过真实 DOM 重新验证。

Selector Forge 是一款独立的浏览器扩展(支持 Chrome 和 Firefox,使用 MV3),帮助您直接从正在查看的页面构建健壮的 CSS 或 XPath 选择器。您只需指向目标元素,扩展与 Intuned(https://intuned.io)的选择器后端会完成其余工作——提出候选方案、在真实页面上测试它们,并丢弃任何无法正确解析的选项。这在编写端到端测试、构建爬虫以及自动化任何可能因脆弱选择器而带来后续问题的页面时非常有用。

安装

  • Chrome — Chrome 网上应用店 (https://chromewebstore.google.com/detail/selector-forge-ai-selecto/lbendfnlmhdakbeblajoffkfmafbfaha)
  • Firefox — Firefox 附加组件 (https://addons.mozilla.org/en-US/firefox/addon/selector-forge/)

工作原理

  1. 打开任意页面,点击扩展图标。
  2. 选择一种选择模式,直接在实时页面上选取一个或多个元素。
  3. 扩展捕获所选内容的紧凑快照(选中的目标、DOM 上下文、初始候选选择器)并发送到后端。
  4. 后端提出并排序候选选择器;扩展针对真实 DOM 测试每个候选,并将结果反馈回去。
  5. 此循环重复进行,直到后端确定出最优选择器。
  6. 弹出窗口仅展示经过重新验证的选择器,每个都配有复制按钮。

浏览器始终是选择器实际匹配内容的唯一真相来源。AI 负责提出和排序,但绝不拥有对正确性的最终决定权。

信任边界

  • 扩展持有选择器创建会话状态——这是循环连续性的来源。
  • 浏览器是唯一真相来源——每个结果都必须经过重新验证。
  • AI 提出并排序选择器,但不证明正确性。
  • 对于列表,验证会检查完整的预期集合,因此过度匹配或不足匹配的选择器都会被拒绝。

详见 ARCHITECTURE.md 了解模块地图、消息层、后台/内容脚本/弹出窗口上下文以及认证和 CLI 接口。

选择模式

模式您要做的您将获得
单个选取一个元素经过验证的候选选择器,精准匹配该元素——按钮、输入框、链接、标签、一次性目标等。
列表从重复集合中选取两个示例经过验证的容器选择器,覆盖整个集合,保存前可预览。

开发者快速入门

需要 Node 18+ 和 Yarn。

yarn install # 同时运行 `wxt prepare`
yarn dev     # 监听 + 在 Chrome 中加载 .output/chrome-mv3 (解压后)
yarn dev:firefox # 同样适用于 Firefox

首次运行 yarn dev 后,在 chrome://extensions(开启开发者模式)中加载解压后的扩展,路径为 .output/chrome-mv3。

命令

命令作用
yarn dev / yarn dev:firefox监听构建,可作为解压扩展加载
yarn compiletsc --noEmit 类型检查
yarn testVitest — 包含单元测试和真实 Chromium 浏览器项目
yarn build / yarn build:firefox生产环境扩展打包
yarn build:e2eE2E 版本(携带 <all_urls> 权限——切勿发布)
yarn e2e先 build:e2e,再使用 Playwright 测试打包后的扩展
yarn zip / yarn zip:firefox生成商店可用的 zip 包
yarn icons重新生成图标资源
yarn ladle在 http://localhost:61010 上预览独立弹出组件

组件预览(Ladle)

yarn ladle 在隔离环境中提供弹出窗口的 React 组件预览,用于设计和审查——无需重新加载扩展,也无需真实后端。故事文件位于 stories/(*.stories.tsx);Ladle 配置在 .ladle/ 中。弹出窗口依赖于 WXT 注入的 browser 全局变量,因此 .ladle/wxt-globals.ts 安装了一个无操作桩。yarn ladle:build 会在 dist/ladle 下生成静态包。

测试层次

  • 单元测试 — 快速的 Vitest 测试(node/happy-dom),用于选择器逻辑、状态转换、存储和确定性回退。
  • 浏览器测试 — Vitest 浏览器模式测试,针对真实 DOM 运行选择器生成,并证明每个候选能精确解析到预期元素集合。这是正确性的判定标准。两个层次都通过 yarn test 运行。
  • 端到端测试 — 使用 Playwright 对打包后的 MV3 扩展进行测试,涵盖真实页面、指针操作流程、弹出窗口、内容脚本和后台服务工作进程。通过 yarn e2e 运行。

项目结构

entrypoints/
  background.ts         后台服务工作进程——会话状态、代理循环、网络 I/O
  content.ts            内容脚本——选择器覆盖层、DOM 访问、选择器测试
  popup/                 React 弹出窗口——模式控件、结果、复制操作
lib/
  agent/                代理循环控制器(后端轮询)
  content/              选择器覆盖层、元素注册表、DOM 检查
  background/           处理程序、上下文菜单、会话连接、CLI 桥
  messaging/            类型化、方向分区的运行时消息协议
  state/                会话状态、历史、模式、偏好
  auth/                 认证客户端 + 令牌处理
  graphql/              工作空间 + 使用查询
  config.ts             API 基础地址 + 运行时配置
tests/
  vitest (unit + browser)
e2e/
  playwright against the built extension
ARCHITECTURE.md         模块映射、信任边界、代理循环、接口

基于 WXT (https://wxt.dev) 构建,弹出窗口使用 React。

路线图

  • CLI 控制 — 通过 Intuned CLI 驱动扩展:Intuned IDE 支持、本地代理运行端到端测试和自动化任务,以及通过 MCP 暴露功能。(基础连接——tabs 权限和基于 CDP 的会话启动——已就绪。)
  • 智能选择工具 — 一种 multiple 模式,允许在一次操作中选择多个元素,由扩展将它们分组为单个项和列表化集合;此外还有 AI 字段检测功能,可自动为页面建议有用的字段、名称和选择器。
  • 深入选择模式 — 选择后的精确细化:沿 XPath/DOM 树导航到实际想要的目标(子 span → 按钮 → 行 → 标签 → 父容器),将列表选择移至父级或子级,或添加必要示例、排除错误元素。
  • 自带后端 — 目前扩展依赖 Intuned 进行认证和选择器生成。我们计划提供一个轻量级、可自托管的参考后端,能够替换该接口并完全取代 Intuned——包括一个用于生成和评判可靠选择器的开源代理——让您在自己的基础设施上运行完整循环。更远期计划:选择器/自动化历史、导出为 Playwright 或纯 JavaScript、自动分页检测,以及跨 iframe / Shadow DOM 支持。

贡献

欢迎提交 Issue 和 Pull Request。在提交 PR 前,请运行 yarn compile 和 yarn test。

许可证

MIT © The Metrics Shop, Inc.

相似文章

Selector Forge

Product Hunt

Selector Forge 是一个浏览器扩展程序,利用 AI 为开发者生成健壮的选择器。