geo_pro 不是又一个 Chrome 壳。它把网页编译成一段带编号的纯文本, AI 直接读 DOM 结构,不是猜坐标——你盯着真实页面操作,AI 同时读同一页, 两边指着同一处东西,一起把问题解掉。
主流做法是「截图 → 视觉模型看图 → 猜坐标点击」。这条路线三个字,不划算。
| 环节 | 截图路线 | geo_pro |
|---|---|---|
| 贵 | 一次截图上千 token,还得挂个能看图的模型 | 纯文本快照,成本按字符算 |
| 慢 | 截图→编码→推理→回传,一轮好几秒 | 微秒级的 DOM 读取 |
| 脆 | 靠像素坐标,布局一变就点错,之前调好的全废 | 语义编号 + 元素身份,布局变了也能对上 |
| 信息 | 看不到「必填」「disabled」「弹窗刚关掉」 | 这些状态本来就在快照里 |
人读的是画面,AI 读的是结构。两边看的是同一个页面的同一次状态。
- link "新闻" [ref=1] - link "地图" [ref=3] - textbox "美国警局喊话R星测试《GTA6》" (空) [ref=8] - button "百度一下" [ref=9] - listitem "男子应聘司机干了6小时倒贴2万" - link "男子应聘司机干了6小时倒贴2万" [ref=13] - paragraph "关于百度" - link "关于百度" [ref=22]
每个可交互元素带 [ref=N] 编号。模型只需要说「点 13 号」。
编号跨轮不稳定是故意的。页面上加了东西编号必然乱,与其让模型拿着过期地图找路,不如每次重扫。迁移映射记在日志里(如「3 号变成了 5 号」)。
用 checkVisibility() 判定,而不是 getBoundingClientRect()。被外层 wrapper 压得计算宽高为 0、但真实可见的元素,不会被丢掉。
可访问名称严格按 W3C accname 的回退顺序推导,不因为「看着更合理」就自己调换优先级。
从你真实填过的表单里学,按字段语义跨站复用。不用为每个站点建模板。
用户名 / 姓名 / 昵称 → name 邮箱 / E-mail / 邮件 → email 主机记录 / 子域 / RR → deploy_record 记录值 / 目标地址 → deploy_value 根目录 / 物理路径 → deploy_root
到 B 站遇到「昵称」输入框,记忆就能命中——A 站填过的姓名直接带过去。 域名解析填六格、站点面板填四格、证书三格,这些重复的那一截,它替你记着。
人机共读不是让 AI 硬扛一切,而是把两边各自擅长的那截对齐。
登录、扫码、短信验证码、实名——这些关卡人必须在场,工具替不了,也不该替。AI 卡住时会调「协助」把你叫出来,你办完它接着干。
结构化读取、跨站复用填好的字段、按语义编号点按钮、反复核对 AI 读不读得懂你的站。省的是打断次数——你从被叫 4 次降到 1 次。
session cookie 只活在内存里,进程一退出就没了。geo_pro 定期把 cookie 快照到本机磁盘,启动时灌回去。 你的窗口和 AI 的后台窗口登录态可隔离,也可共用——你登一次,AI 直接继承,不用再登。
geo_pro 不做账号体系,不需要注册、不需要手机号。所有数据只存在你自己电脑上。
问它自己拉一次就行,不用信任开发者:
GET http://127.0.0.1:8789/api/memory?token=<token>
{
"memory": { "email": {...}, "name": {...} },
"remember_sensitive": false
}
token 在安装目录的 geo-pro.token 里。
127.0.0.1:8789,需要 token。语义 API:/api/open /api/read /api/click /api/type /api/snapshot /api/assist /api/memory /api/status。不能,也不该。短信验证码、扫码、实名这一关人必须在场,工具替不了。它做的是把「必须过网页」的那一截里重复的部分缩短,把打断次数从 4 次降到 1 次。
它不是一个批量硬爬工具。签名、批量接口、高频请求一上去就是风控加违规。它更适合「人在场、AI 打辅助」的场景:登录态是你自己的,节奏由你控制。
三点:① AI 读的是 DOM 语义快照,不是截图;② 表单记忆按字段语义跨站复用;③ 人机共读——你的窗口和 AI 的窗口看同一个页面,你登一次 AI 直接继承。
目前只出了 Windows 版。核心是 Electron,理论上可以打包其他平台,需要的话在 issues 里提。
不会。没有账号体系,不上传任何东西。想自己验:GET /api/memory 看它记住了什么,GET /api/status 看状态。