Agent 找到按钮却不能替你点:bigarrow 给 macOS 工作流加一层可见交接
自动化并不总该追求“全程无人值守”。登录授权、系统权限、付款确认和验证码,本来就适合由人做最后决定。麻烦在于,Agent 常把“请点击允许”打印到终端,而人可能根本没看着那个窗口。macOS 小工具 bigarrow 选择了一个克制的办法:让 Agent 在屏幕目标上画出醒目的箭头和说明,把下一步交还给用户;它不替人点击,也不读取屏幕截图。
它解决的是交接,不是代操作
bigarrow 是一个 macOS 命令行程序,同时提供面向 Claude Code 与 Codex 的 skill。项目 README 将能力描述为在窗口上叠加箭头、标记与文本:点击可以穿透覆盖层,键盘焦点保持原样,提示会按时消失。它适合“Agent 已经找到目标,但这一动作应该由人确认”的交接点,而不是桌面自动化框架。
例如,要提醒用户在系统设置中授权 Terminal,可以这样调用:
bigarrow point --element "Allow" --app "System Settings" \ --text "请确认:允许 Terminal 控制这台 Mac"
这里通过可访问性元素名称定位目标,并指定应用。若目标控件无法按名称匹配,也可以用屏幕坐标:
bigarrow point --at 760,500 --text "请确认这个按钮后继续"
这两条命令来自项目 README 的用法示例;坐标模式应在目标窗口位置稳定时使用。实际使用前先安装命令行工具,并按项目说明安装对应 Agent skill:
brew install franzenzenhofer/tap/bigarrow bigarrow install-skill
项目说明支持 Claude Code 和 Codex;源码构建要求 Xcode 16+,项目列出的最低系统版本为 macOS 14+。bigarrow 本身是 Swift 二进制,不需要常驻 daemon。它只做视觉提示,不会替 Agent 获得权限,也不会绕过 macOS 的安全确认。
让确认点成为明确的工作流边界
更稳妥的 Agent 流程可以把操作分成三步:先由 Agent 准备好上下文,再用 bigarrow 指明需要人工处理的位置,最后等待用户完成确认后继续。比如权限弹窗、浏览器中的 OAuth 同意页或需要本人签署的界面,都可以作为这样的停靠点。关键是提示文案要说清楚“要确认什么”,而不只是“点这里”。
需要持续展示多个标记时,项目还提供 start 与 stop:
bigarrow start --element "Add" --role button --app "System Settings" \ --text "如果列表中没有 Terminal,请点击加号添加它" \ --from bottom-right --color orange bigarrow stop
start 用于持续显示,stop 用于移除提示。README 还说明提示有持续时间限制,并可选择关闭按钮;具体参数应以仓库当前版本的命令帮助和文档为准。自动化编排时,最好将清理动作放在成功与异常路径都能执行的位置,避免遗留覆盖层干扰后续操作。
有意保留的安全边界
项目明确强调它不是点击器、截图工具或屏幕标注器:它不会点击、输入或捕获屏幕,只负责指向。这个边界很重要。若 Agent 需要判断弹窗内容或验证操作结果,应使用经过授权且适合该任务的其他机制;不能把“画了箭头”误当成已完成确认。涉及支付、账号授权和敏感权限时,仍应由人核对应用名称、请求范围和操作后果。
bigarrow 的适用面也有边界:它面向 macOS,不能直接用于 Linux 或 Windows 桌面;通过坐标定位的提示可能随分辨率、窗口布局变化而偏移。对于可访问性名称稳定的按钮,优先使用 --element,并通过 --app 限定目标应用;若无法可靠定位,就把它当作面向人的提示而非确定性自动化步骤。
这类小工具的价值不在于让 Agent 获得更多权限,而在于让“机器做到这里、人来决定下一步”变成清楚、可见、可撤销的流程。对于把 Claude Code 或 Codex 接入 Mac 桌面工作流的开发者,bigarrow 提供了一种低侵入的人工交接方式。