跳到主要内容
给 agent 配了支激光笔,它会指着屏幕跟你说"点这儿"

给 agent 配了支激光笔,它会指着屏幕跟你说"点这儿"

小周
小周

· 阅读约 4 分钟

半夜刷 GitHub notifications,顺手往旁边的 trending 瞟了一眼,瞟到一个名字特别不正经的仓库:franzenzenhofer/big-arrow-on-the-screen。点进去之前我以为又是个 meme——一百多个 star,2 个 fork,0 个 watcher,标准的"作者自己写着玩顺手发出来"配置。README 看完,我坐直了。

一句话定调:给 AI 代理配的一支激光笔。代理在 Mac 屏幕上画个大箭头,指着某个按钮跟你说"点这儿"。

这痛点凡是真让 agent 干过活的都懂。2FA 验证码、OAuth 授权页、passkey 弹窗、支付确认、签个法律勾选框——这些地方 agent 就是不能替你点,也不该替你点。于是它只能甩一句"请在你的浏览器中完成验证后告诉我",然后你俩互相等。人在写到一半的代码里回过神,四十分钟过去了。工具好不好用先放一边,这个"我只能说到这儿了"的死角是真存在的。

它到底做了什么

一个很小的 Swift 二进制。没有守护进程,没有菜单栏图标,没有账号,没有遥测,一行 AI 逻辑都没有——这点我挺欣赏,它压根没打算当 agent 的一部分,就是个被 agent 调用的哑工具。

覆盖层的设计是整套东西里我最服的:除标志牌和箭杆外全部可点击穿透,不抢键盘焦点,画完自己消失。项目还专门修过一个 bug,NSApplication.run() 会让分离出去的箭头把焦点抢回来,后来改成自己接管事件循环,并写了测试确认最前台的应用没变。这种细节骗不了人,是真被人抱怨过才会去修的。

子命令就 point、start、stop 几个。point 指一下默认停 8 秒,start 可以挂着,stop --all 清场。目标定位支持坐标、矩形、鼠标位置、窗口、可访问性元素标签,还能读 Peekaboo 的 see --json 当目标源。所有命令都能 --json,退出码分得很老实:0 成功、2 输入错、3 找不到目标、4 缺权限。

退出码 4 我想多说一句。bigarrow doctor 会把权限状况、权限归属方、显示器信息一列,缺权限就返回 4,意思是"让 agent 去请用户授权"。这个约定看着小,但它把"权限不够"从一句模糊的失败变成一个 agent 能识别、能转述给人听的状态——做 agent 工具的没几个在这个层面动过脑子。

门槛

装很轻松:

brew install franzenzenhofer/tap/bigarrow

然后 bigarrow install-skill 会把技能塞进 Claude Code 和 Codex 的技能目录,一个 SKILL.md 两边共用,Codex 那边多一个 agents/openai.yaml。从装到第一条箭头画出来,五分钟。摸了半小时,还没上重度场景,这句先声明。

不顺的地方得说在前头。画个纯箭头不要任何权限,但你只要用 --element 定位、--until-click 等点击、或者带标题去读窗口,就要辅助功能权限——而且这权限是给运行 shell 的那个应用的,不是给 bigarrow 自己的。最坑的是 --window App:title 读窗口标题在 macOS 26 上还要屏幕录制权限,不带标题的 --window App 反而不要。--element 在 Electron 应用里正常,Chrome 下得带 --force-renderer-accessibility 启动或者开着 VoiceOver,否则只能退回去按页面坐标指。这些坑 README 里都写了,问题是你得读到那一段。

项目自己说"有 87 个自动化测试",我扫了一眼测试目录,覆盖率这事我没法自己验,先原样转述,别当成我的结论。其中一条是拿录制的 window server 做金样图对比,还有 17 项行为检查跑在真实的点击、遮挡、拔显示器、Stage Manager 切 Space 上;CPU 占用说 CI 上是 1.4%,动画交给 Core Animation 在渲染服务器做。信不信由你,我至少能说它测试目录不是摆设。

谁用得上

写 agent 工具链、又在 macOS 上跑的人。agent 一旦碰到"这一步只能人来",你现在除了打印一行提示没别的招,这个能给支笔。远程协助、录屏演示、给文档截个高亮图,顺手也能用。

不适合谁:不是 Mac 的直接跳过。想要"agent 自动点按钮"的,这不是那东西——它明确不点击、不输入、不截图,只做指向,作者在 README 里把这条边界画得很死。还有一类得提醒:手上已经有一套成熟的 agent 向用户提需求的交互,加这个可能是多余的抽象。

有个细节我特别喜欢:多个箭头同时在屏幕上,标志牌会互相避让。说明它真被拿来做过多提示场景,不是只对着一个箭头调过。

候选池里还蹲着一个同方向的 Windows 版本,不确定是不是就一个人在扛,再观察一阵。能不能打,自己拉下来跑一圈最准——记得先跑 doctor。