

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 构建和评估计算机用途代理的最佳实践
<a name="agent-access-best-practices"></a>

计算机使用代理是循环运行的：它看着屏幕，采取行动，然后再看。以下做法可帮助您构建代理，以更少的步骤和更低的成本可靠地完成任务。它们适用于工作流程和模型系列。结果因工作流程、模型、提示和环境而异，因此请根据自己的任务来衡量每一次变化。

## 设计动作循环
<a name="agent-access-best-practices-loop"></a>

代理的大部分精力都集中在阅读屏幕和打字上，而不是在窗口之间移动。在调整导航之前，减少读取错误和步骤数。
+ **为代理提供文本而不是像素**。从屏幕截图中读取确切的值，例如姓名、电子邮件地址和账号，是常见的错误来源。当数据有文本副本时，通过工具提供。对于表或列中的值，也让代理查看图像，因为文本层可能会混淆各列。
+ **将说明放在屏幕截图之前**。当代理必须找到并单击某项内容时，将指令放在请求中的图像前面，以便代理知道要查找什么。
+ **从已知布局开始**。在代理运行之前，使用键盘快捷键最大化每个应用程序。一致的布局使重复的流程更具可预测性，并减少滚动。
+ **更喜欢键盘**。使用键盘快捷键滚动、最大化窗口和打开菜单，尤其是对于小型或难以点击的控件。快捷方式不依赖于在屏幕上找到控件。
+ **确认每项操作**。繁忙的应用程序可以忽略按键。每次操作后稍等片刻，查看几张最近的屏幕截图，然后让代理重复一个没有效果的操作。
+ **仅在安全的地方使用 Tab**。Tab 键在纯文本字段中效果很好。点击字段失去焦点时应用程序会做出反应的字段，例如带有自动填充、下拉列表或日期选择器的字段。
+ **Switch，不要重新启动**。要在正在运行的应用程序之间移动，请使用任务栏或应用程序切换器。重新启动应用程序会增加步骤。
+ **在当前屏幕上找到控件**。当窗口移动时，从之前的屏幕复制的坐标会过时。仅在最大化的固定布局中使用固定坐标。
+ **检测没有任何改变的动作**。当连续两个操作使屏幕保持不变时，使用代理变更方法。限制重复滚动，这样跑步就不会将步数预算花在一项操作上。
+ **谨慎批量操作**。批次仅显示代理上次操作后的屏幕，因此在代理需要阅读的一个屏幕上结束批处理。在依赖批处理之前，先衡量批处理是否可以节省整个工作流程的时间。批量错误仅以文本形式返回，因为某些模型拒绝包含图像的错误结果。

## 适应模型家族
<a name="agent-access-best-practices-models"></a>

型号家族对台式机的操作方式有所不同。建立一次代理回路，然后调整每个家庭的技能和设置。为一个家庭调整的技能通常需要先进行更正，然后才能与另一个家庭一起使用。
+ **每次更改后发送新的屏幕截图**。有些模型会继续根据旧的屏幕截图进行操作，而不会发出任何问题的信号。在每次更改屏幕的操作后附上新的屏幕截图。
+ **明确处理坐标**。有些模型报告像素坐标，而另一些模型则在必须转换为像素的标准化网格上报告坐标。在提示符中注明屏幕大小和有效坐标范围，并检查每次点击是否在屏幕内。
+ **根据模型调整屏幕截图大小**。将屏幕截图分辨率与模型的图像限制相匹配。如果您缩小屏幕截图的比例，请在单击之前重新缩放模型的坐标。
+ **键入前清除字段**。在某些模型上，键入会附加到字段而不是替换其值。聚焦字段，选择全部，删除，键入一次，然后读回值。
+ **控制并行工具调用**。如果模型无论提示如何都会在一条消息中发送多个操作，请在客户端中关闭并行工具调用。按顺序运行批处理操作，并在第一次失败时停止。
+ **默认情况下，将推理工作量保持在较低水平**。简单的任务通常以较低的工作量获得成功，而较高的努力会增加成本，而不会提高准确性。加大分支或多步任务的工作量。
+ **将提示长度与模型相匹配**。更强的模型可以从短期目标起作用。仅在模型需要时添加规则，并随着模型的改进缩短提示。
+ **在回合之间继续推理**。如果您通过框架或兼容性 API 调用推理模型，请确认该模型的推理从一个回合延续到下一个回合。掉落的循环可能会停滞不前。
+ **比较每项完成任务的成本**。模型每步使用多少代币不同，因此单靠每个代币的价格并不能预测成本。将模型与计划使用的刀具表面进行比较。

## 撰写技巧和提示
<a name="agent-access-best-practices-skills"></a>

这项技能，即你向代理人提供的工作流程指令，对准确性和成本有很大影响。设计不当的通用提示音可能比没有提示音更差。
+ **包括一些工作规则**。例如：记住所读内容，在继续前进之前进行验证，在两次尝试失败后更改方法，等待应用程序响应。
+ **提供事实，而不是程序**。当前模型需要的分步指导较少。保持技能简短，包括代理无法发现的事实，例如文件路径、字段格式和应用程序怪癖。
+ **定义高价值字段**。说明诸如标识符和帐号之类的字段的确切格式，并让代理在键入之前根据该格式检查每个值。
+ **要求进行有针对性的验证**。代理可以完全放心地输入错误的值，因此不要将验证留给代理判断。在键入每个值后立即检查一次，并在保存之前读回几个高值字段。在不提高准确性的情况下，对每个字段进行全面重新检查会增加步骤。
+ **更正原处的错误**。当值错误时，让代理修复该字段，而不是清除并重新键入整个表单。
+ **干净利落地交给子代理**。向子代理提供完整的指令，最后要求提供报告，而不是边检查其工作。
+ **从自己的跑步中提高技能**。查看每次运行的屏幕截图、操作和推理，一次更改一条规则，并且仅在每次运行都成功时才保留更改。将工作流程划分为里程碑，这样您就可以看到失败的运行在哪里停止。

## 管理背景和成本
<a name="agent-access-best-practices-cost"></a>

成本主要取决于模型的背景和运行中的步骤数。每次通话都会重新发送历史记录，因此每增加一个步骤的成本都比上次更高。降低成本的最有效方法是选择以最少的步骤完成任务的模型和技能。
+ **重置任务之间的上下文**。从简洁的环境和已知的屏幕状态开始每项独立任务。
+ **只保留最近的屏幕截图**。保留一些最近的屏幕截图，例如最后三张屏幕截图，并用简短的文字说明替换旧的图像。只保留一张屏幕截图会增加成本，因为代理会向后滚动以查看丢失了什么。
+ **告诉代理你删除了什么**。解释一下旧的屏幕截图是故意删除的，并让代理在屏幕上显示该值时在回复中记录每个值。

提示缓存可以显著降低成本，但前提是您仔细构建有效负载：
+ 仅添加到对话的结尾。缓存从一开始就与有效载荷相匹配，因此对较早的回合进行编辑会使缓存失效。
+ 批量删除旧屏幕截图，而不是每轮都移除，这样缓存的前缀在两次删除之间保持不变。
+ 不要每回合都重建对话。每回合都会变化的有效载荷使用缓存可能比没有缓存的成本更高。
+ 确认缓存已启用。模型具有用于缓存的最小前缀大小，较小的前缀不会被缓存，也不会返回错误。

## 衡量结果
<a name="agent-access-best-practices-measure"></a>
+ **进行足够多的试验**。相同运行的结果会有所不同。在得出一个版本更好的结论之前，先进行多次试验，报告价差，并使用统计测试（例如配对测试）。
+ **计算每种代币类型的成本**。包括新的输入、输出、缓存写入和缓存读取。提供商报告缓存令牌的方式不同，因此请检查每个提供商如何计算缓存令牌。报告代币和成本。
+ **用分数报告成本**。尽管更改会增加成本，但可以保持相同的成功率。同时报告成功率、成本和步骤，并将跑步及格和失败的成本分开。
+ **谨慎设定步数限制**。将限制设置在工作流程需求之上，并报告达到该限制的运行次数。用完步骤的运行需要与产生错误结果的运行不同的修复方法。还要设置时间和费用限制，并取消支持。
+ **一次改变一件事**。将其他所有内容固定不变，这样您就可以看到每次更改的效果。
+ **按原因对失败进行排序**。将读取屏幕失败与行动失败区分开来。技能可以改善代理的行为，但不能改善模型的读取效果。在将改进归因于规则之前，请检查代理是否遵守了该规则。
+ **对结果进行评分，而不是代理的报告**。使用自动评估器检查保存的记录和最终屏幕，该评估器要求每个字段都匹配，并包括阴性对照。代理可以将任务报告为已完成。
+ **检查您的测试设置**。评估器或环境中的错误可能看起来像代理故障。记录所有提示、屏幕截图和操作，以便您可以跟踪失败的运行。不要发布无法重现的结果。

## 监督和安全
<a name="agent-access-best-practices-safety"></a>
+ **让一个人了解情况**。要求在相应或难以撤销的操作（例如付款、删除或提交）之前进行确认。将向表单中键入敏感数据视为发送敏感数据。在批量执行每项操作之前检查所需的确认，并在人员批准后再次找到目标，因为屏幕可能已更改。
+ **将代理的问题传递给某人**。有些模型会自行停下来要求确认，例如当屏幕提示生产系统时。确保你的循环可以向他人显示问题。
+ **限制代理可以达到的范围**。在隔离的环境中以最低权限运行代理。尽可能将登录凭据放在代理无法访问的地方，并将互联网访问限制在域名允许列表内。
+ **将屏幕上的内容视为不可信内容**。页面或文档中的文本无法授予权限或更改任务。不要让屏幕上的指令重定向代理。
+ **让代理远离开放的网络**。将代理需要的信息放入技能中，而不是让它在网上搜索，在那里它可能会遇到验证码和不可信的内容。

## 相关资源
<a name="agent-access-best-practices-resources"></a>

模型提供者为其模型发布计算机使用指南。他们当前的文档描述了特定模型的细节，例如支持的屏幕尺寸、坐标系和工具。
+ [电脑使用工具](https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool) 在 Anthropic 文档中
+ [计算机的使用](https://developers.openai.com/api/docs/guides/tools-computer-use) 在 OpenAI 文档中
+ [计算机的使用](https://ai.google.dev/gemini-api/docs/computer-use) 在 Gemini API 文档中