Reticle

io.github.reticlehq由 GitHub 账号 reticlehq 发布v3.9.0更新于 Nov 3, 2026

Verify a running web app from the inside over MCP: look, act, observe, assert. No screenshots.

已验证STDIO仅桌面浏览器自动化开发者工具

概览

AI 生成的概览

Reticle 让编程助手在浏览器标签页中驱动并验证正在运行的 Web 应用:查看、操作、观察、断言,无需截图。

可以做什么
  • 导航或重新加载已连接的浏览器标签页,列出并释放会话
  • 以语义快照读取页面、把定位器解析为引用、查看状态
  • 对元素执行操作,可单独执行或等待预期结果,并串联多步操作
  • 观察应用行为:事件、网络请求与控制台日志
  • 立即或在预算内断言条件,并重放受代码改动影响的已保存流程
  • 按需发现并调用未公开的额外工具
适用场景
适合助手修改 Web 应用后,需要针对真实运行的应用证明改动有效,而不是仅凭源码推断。适用于需要端到端驱动并验证流程的前端或全栈工作。
运行要求
通过 npx 以 stdio 在本地运行;该包会在本机启动 WebSocket 桥接端点,供应用的浏览器 SDK 连接。项目需接入 SDK 与构建插件(init 会修改 package.json、锁文件和构建配置并启动开发服务器)。需要开发服务器和浏览器会话;未声明任何 API 密钥或环境变量。
安装前请注意
接入项目会修改文件(package.json、锁文件、构建配置)并启动开发服务器,应先征得用户同意。助手可以操作并改变正在运行的应用;只有明确返回通过结论的验证才算通过。RETICLE_ADVERTISE_ALL_TOOLS 等可选环境变量会改变工具负载。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Reticle,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

@reticlehq/server

The Reticle bridge + MCP server. It hosts a localhost WebSocket endpoint your app's @reticlehq/browser SDK connects to, and exposes MCP tools your coding agent uses to look at, act on, observe, and assert against the live app.

bash
npx @reticlehq/server init   # wire the project: SDK + build plugin + MCP registrationnpx @reticlehq/server mcp    # MCP over stdio; auto-starts the bridge on ws://localhost:4400

The package installs a reticle bin, so inside a project reticle mcp and npx @reticlehq/server mcp are the same command. reticle is not a package name on npm.

Point your agent at it. On Claude Code, register it at user scope:

bash
claude mcp add reticle -s user -- npx @reticlehq/server mcp

Default tools (10):

reticle_navigate, reticle_look, reticle_act, reticle_act_and_wait, reticle_observe, reticle_assert, reticle_session, reticle_tools, reticle_run, reticle_verify.

Only reticle_act_and_wait and reticle_assert return a verdict; everything else moves or reads the app.

More tools ship but are not advertised, to keep the per-turn tool payload small: screenshots and visual diff, saved flows, recording, baselines, clock control, viewport, crawl, coverage, network mocking, leases and more. Reach any of them by name with reticle_run, list them with reticle_tools, or advertise the whole surface with RETICLE_ADVERTISE_ALL_TOOLS=1 (this roughly doubles the per-turn tool payload).

See the main README.

License

Apache-2.0.

来源:server/README.md,提交 1c7691b

工具

10

reticle_navigate

Navigate the connected browser tab to a URL, or reload it in place with { reload: true } (add { hard: true } to bypass the cache). e.g. {"url":"/settings"}

输入参数urlhardreloadsessionIdtimeout_ms

reticle_act_and_wait

Act on a ref, then wait for a predicate to hold — one hop for the act->observe->assert loop. e.g. {"ref":"e42","action":"click","until":{"kind":"signal","name":"todos:loaded"}}

输入参数refargsuntilaction必填detailintenttargetdurablepredicatesessionIdtimeout_msrefuseWhenThrottled

reticle_session

By action: "list" (the default) shows connected tabs; "yield" is MANDATORY before you stop; "tune" hides or moves the HUD; "feedback" reports a problem. e.g. {"action":"yield","mode":"waiting"}

输入参数allhudkindmodeneednotetextclaimlevelmodeltraceaction另有 9 个

reticle_verify

The Reticle Harness is { action: "explore" }: when the user asks for the Harness, or asks Reticle to drive and verify the app for you, call it and do not drive… e.g. {"action":"change","files":["src/App.tsx"]}

输入参数appsayflowstopwaitapplyfilesnamesrunIdscopesinceaction必填另有 14 个

reticle_look

Read the page, by action: "page" is the semantic snapshot of what is rendered, "find" resolves a locator (testid/role/text/component) to refs you can act on, "… e.g. {"action":"find","by":"testid","value":"submit"}

输入参数byaltidsrefdiffmodenamepathroleselftextattrs另有 12 个

reticle_observe

What the app DID, by action: "events" is the reaction window since a cursor, "network" the requests it made, "console" what it logged. e.g. {"action":"events"}

输入参数oklevellimitsinceuntilactionassetsbodiesmethodstatusfiltersactionId另有 4 个

reticle_assert

Prove a consequence, by action: "now" evaluates a predicate against the window that already exists, "wait" waits for one to become true within a budget. e.g. {"action":"now"}

输入参数sinceuntilactiondetailintentpredicatesessionIdtimeout_ms

reticle_act

Act WITHOUT checking the result — if the action is supposed to cause something, use reticle_act_and_wait { until } instead and get the verdict in the same call. e.g. {"ref":"e42","action":"fill","args":{"value":"hello"}}

输入参数refargsburststepsactiondetailtargetsessionIdtimeout_msonDeviationrefuseWhenThrottled

reticle_tools

Discover Reticle tools on demand. Call with no arguments to list every tool (name + one-line summary); call with names:["reticle_screenshot", …] to load full descriptions and parameters for specific tools. Then invoke them with reticle_run. This avoids paying for every tool definition on every turn. To make a verification REUSABLE (record once, replay free forever), the flow workflow lives here: reticle_record{action:"start"} → act → reticle_record{action:"stop"} → reticle_flow_save → reticle_verify{action:"flows"} (and reticle_verify { action: "heal" } on drift). Load those names when you want to save or re-run a flow.

输入参数namenamesaction

reticle_run

Invoke any Reticle tool by name (discover names/params first with reticle_tools). On an unknown tool or bad arguments it returns the available names or the tool's params, so you can correct and retry.

输入参数argstool必填sessionId

版本历史

4
  1. v3.9.0最新Oct 29, 2026
  2. v3.8.1Oct 26, 2026
  3. v3.8.0Oct 26, 2026
  4. v3.7.0Oct 13, 2026

评分

已满足适用检查项的 80%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。