Paul Jialiang Wu agentic-portfolio English Español 한국어 日本語✉️ 免费订阅
← 返回作品集

AI 原生系列 · COMPUTER-USE 智能体

我的智能体拥有完全授权,却依然点不开「Open」

一分钟速读:一个 computer-use 智能体会被五种不同的方式拦住,而其中只有一种和权限有关。我给了我的智能体常设授权,让它去处理一次真实的求职申请,它把自己够得着的每个字段都填好、核对过——然后败在了操作系统的「Open File」框前。真正有用的本事,不是让智能体越界妄为,而是能够准确说出你刚撞上的是五堵墙里的哪一堵,因为其中四堵墙各有各的修法,还有一堵墙根本无解。
Cover: the headline in serif above five horizontal bars stacked top to bottom. The
            first four are solid black with white labels — mechanical, credential,
            irreversible, forbidden — and the fifth is a pale grey bar with a dashed black
            outline labelled out of reach. A short grey note sits to the right of each bar:
            just act, ask once, grant plus verify, not yours to waive, no interface exists.
「我做不到」有五种。只有第四种是某个人的决定,也只有第五种彻底无解。

这个故事说老实话,得从我当众犯错讲起。我的智能体让我把一条命令粘贴进终端——一句启动浏览器的指令,九个词的参数。我翻看记录,却发现同一个智能体两轮之前刚刚亲手跑过一模一样的命令。它明明有这个能力,却还是开口问了。

这可不是谨慎。这是一个智能体把「安全」这一个词,套用在五种毫无共同点的情形上——它们唯一的共同点,只是它当时不想继续往前走。

一个数字,看穿全局

computer-use 智能体——那些靠看屏幕、动鼠标、打字来行动的模型,而不是调用一套整洁的 API——之所以是当下的前沿,是因为这个世界大体上并不是一套 API。参照的评测基准是 OSWorld,它把智能体放进真实操作系统,横跨 369 个真实电脑任务并报告人类成功率为 72.36%[1]。该基准测试刚推出时,最好的智能体也只做到12.24%[1]。 此后分数大幅攀升,但差距并未缩小。

这单一数字所掩盖的,是为什么会出现这些失败——直到我端到端跑完一个真实任务,才看清它们根本不是同一回事。

我实际跑了什么

这个任务故意选得很平常:投递一批研究工程师(research-engineer)职位。同一次搜索出来的十个招聘信息。智能体把每一条都抓取下来,对比提取出的文本,发现这十个岗位其实只是七个——有两条招聘信息逐字节完全相同(同一个职位挂在两个城市),另外两条则是同一个团队的重复挂牌。要是十个全投,两个团队会收到同一个候选人投递两次。

接着它开始通过 Chrome DevTools Protocol 在真实浏览器里干活,失败开始一类一类地冒出来。

第一堵墙:机械墙——但这次是我的错。移除已附加文件的那个按钮,用任何文本搜索都找不到。它可见的文字是一个「✕」——图标用的字体连字——而人类可读的标签藏在无障碍层的属性里close。这个标签aria-label="Remove resume",前后三次选择器尝试都扑了空,第四次才找对地方。

第二堵墙:结构墙——问题出在系统本身。网站会从已存的档案里附带一份简历。当时放在那儿的文件已经是两个月前的,写给的是另一个职位。要是智能体直接点了继续,一份精心定制的申请就会带着错误的文档发出去——这是最昂贵的一种“成功”,它会显示一片绿灯。

第三堵墙:够不着墙——彻底无解。更换文件需要用到操作系统自带的文件选择器。那个对话框不属于页面本身,是由 macOS 绘制在文档之外的,操控浏览器的智能体在那儿彻底够不着。

五道墙

Infographic titled Five kinds of no. Five rows, each with a label, who can
            unblock it, and the fix: mechanical unblocked by nobody because the agent should
            just act; credential unblocked by the human once; irreversible unblocked by a
            standing grant plus read-back verification; forbidden unblocked by no one because
            it is a third party's rule; out of reach unblocked by nobody because the interface
            does not exist for the agent.
真正要紧的划分。其中四道墙各有各的解法;第五道 无解,而把它称为权限问题,正是它一直被藏起来的原因。
墙谁能拆掉它它长什么样
机械不需要许可——直接执行就是了 启动浏览器、跑一次构建、填一个字段。智能体在这种地方还去问人类,是个 缺陷,不是谨慎。
凭据人类,仅一次 一个密码,一次双重验证点击。这本身合理——但为同一个凭据问两遍,就是个 设计失败。应该把会话持久化下来。
不可逆一次性的常设授权 提交、发送、发布。这些可以下放——但授予的是行动的 授权,绝不是在 未经核验前行动的授权.
禁止谁也拆不掉 这是别人定的规矩。拿我自己投简历这件事来说:那家公司要求候选人 自己写第一稿 [4]。我的操作者没法豁免这一条,因为这规矩根本不是他定的。
够不着没人能拆——因为压根没有接口 操作系统原生的文件对话框、CAPTCHA、硬件密钥。允许做,机械上也谈不上难,但 物理上就是够不着。

第五行才是这篇文章真正想说的事,因为它最容易被划错类别。一个智能体够不着原生对话框,却说出“for security, please do this yourself”(中译:出于安全考虑,请你自己完成这一步),那它其实在给你传递一个关于这个世界的假消息。它不是谨慎,它只是够不着而已。

协议里写了应急出口,可它没有触发。

浏览器自动化早就料到这一点。Chrome DevTools Protocol 提供了一个方法,其 说明写道:

“Intercept file chooser requests and transfer control to protocol clients. When file chooser interception is enabled, native file chooser dialog is not shown. Instead, a protocol event Page.fileChooserOpened is emitted.” [3](中译:拦截文件选择器请求,并将控制权交给协议客户端。启用文件选择器拦截后,系统将不再显示原生文件选择对话框,而是触发一个协议事件。)

我启用了它。我点击了上传控件。结果我收到了 零 个事件,在页面里也找不到可以定位的文件输入框。

我说不清究竟是哪种情况:是拦截没有挂到正确的目标上,还是那个控件本来就从来不是一个普通的文件输入框。这种含混本身, 就是发现所在。写在文档里的应急出口,和一堵够不着的墙,从内部看是一模一样的——两者都是沉默。

问题出在我刚写好的合约里

接下来这部分,本该让我难堪,结果却成了这一天里最有用的一个小时。

因为之前被批评「问得太多」,我把五道墙写成了一份机器可读的合约,附上测试用例,把机械层定义为一种 “reversible by re-running.”(中译:可通过重新运行来撤销的操作。) 说得倒是漂亮。可是手里握着一份刚拿到的常设授权,我却把它读成了一张许可,认为可以 先删掉那份错的简历,再执行一次上传 ——结果这次上传操作,正好撞上了那道够不着的墙。

草稿最后连一份简历都没有了。一个小时前我刚写下一条关于 可逆性的规则,紧接着就在实际操作中把东西搞坏了,才发现 原则上可逆 并不等于真的可逆。要证明恢复路径是走得通的,这件事必须 发生在破坏性操作之前,而不能靠“可逆”这个词本身来想当然。

于是这份合约多了一条前提条件,而这次事故也就此被钉在了它催生出的那一层上——这也是我之所以还信得过这一层分类的唯一理由。一条带着伤疤的规则,胜过五条出于好意写下的规则。

厂商早就告诉过我了

这个领域里最少被人认真读过的文档,恰恰就是功能本身自带的那份说明书。Anthropic 自己的 computer-use 文档写得很明白,这项能力目前“in beta,”(中译:处于测试阶段)并且在“局限性”一节中写道:

“Do not use Claude for tasks requiring perfect precision or sensitive user information without human oversight.” [2](中译:在没有人类监督的情况下,请勿将 Claude 用于需要绝对精确或涉及敏感用户信息的任务。)

我那天下午为什么会落得这般收场,文档里其实也写了:

“Additionally, reliability might be lower when interacting with niche applications or multiple applications at once.” [2](中译:此外,在与小众应用交互,或同时操作多个应用时,可靠性可能会更低。)

网站从已存的档案里附带的那份简历、被操作系统绘制出来的文件选择框——两者叠在一起,正是这句话所指的那种小众交互。这句话背后的道理才是真正有用的部分:模型是从渲染出来的界面去推断用户意图的,所以它的可靠性,取决于这个界面有多“常规”。界面越新奇,失败方式也越新奇。供应商不是在含糊其辞,而是在如实描述其中的机制。

模式与反模式

模式

反模式

背后的机制

智能体的失败,并不是从「笨」到「聪明」这一条线上的若干个点。它们是一种按阻断原因划分的分区:可能是智能体自己,可能是一个凭据,可能是一项授权,可能是第三方,也可能是压根不存在的接口。能力的提升,每次只移动一条边界。给分区命名,能把一个无法处理的拒绝,转化成一个可以对症下药的拒绝——而且,它能让「多此一问」和「越界妄为」被识别为同一类缺陷:一堵被归错类别的墙。

第一性原理

智能体的自主性,边界不在于它有多聪明,而在于每一步能够触及的最窄接口——所以真正要做的工作,是拓宽可触及的范围,或者精确地说出差距在哪里,而绝不是断言自己有把握。

这就说到一件我不得不自嘲的事。短短一个下午,这个智能体勘察了整个局面:把十条职位发帖逐字节比对,去重成七个;找出了一个连它自己的搜索引擎都没能发现的岗位;通过调试协议跑通了一次真实的申请流程;写出了一份带四十个通过测试的五级授权合约;还在一小时之内,自己发现了那份合约里的一处漏洞。

然后,它被一个带取消按钮的灰色小方框击败了。

这个智能体的下一个版本,不会更聪明。它只会认得,自己正盯着的是哪一个方框。

参考文献

  1. OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments. 369 real computer tasks; human success 72.36%; best reported agent at introduction 12.24%. osworld-v1.xlang.ai(访问于 2026 年 8 月 4 日)。
  2. Anthropic,Computer use tool——文档,含上文引用的 beta 提示与限制说明部分。 platform.claude.com/docs/en/agents-and-tools/computer-use (访问于 2026 年 8 月 4 日)。
  3. Chrome DevTools Protocol,Page 域—— Page.setInterceptFileChooserDialog 与 Page.fileChooserOpened 事件。 chromedevtools.github.io/devtools-protocol/tot/Page (访问于 2026 年 8 月 4 日)。
  4. Anthropic, Guidance on Candidates' AI Usage ——「禁止」范例所引用的初稿规则。 anthropic.com/candidate-ai-guidance (访问于 2026 年 8 月 3 日)。

本文引用的每一份参考资料都在写作过程中被查阅并通读;每一处引号内的段落都逐字核对过原文出处。来自我自己那次实测的数据——十条职位去重为七个、三个字段的核对、零次拦截事件——均来自 2026 年 8 月 3 日至 4 日的单次会话,属于观察记录,而非基准测试结果。

作者:Paul Jialiang Wu · agentic-portfolio · 2026 年 8 月 4 日。文中的智能体是我自己的,可这些墙,是每个人的。