AI编码代理的秘密配方
我们正处于完全自主编码代理的早期阶段,事情无疑将继续变化,但我确定的是,如果我们希望代理产生高质量的结果,我们需要为它们提供不受限制的令牌访问、有节制地使用合适的工具和非常具体的上下文。

最新一季的《黑镜》非常符合品牌风格——反乌托邦、扭曲,有时甚至在科技与人类状况交汇处的评论中显得相当严厉。加入一些黑暗幽默,在你最意想不到的时候点缀其中,你就拥有了一个值得一看的脑力激荡之作。
在我最近观看的一个剧集中,当事情开始变得奇怪时,我被吸引了进去,其中一个角色,一名工程师,震惊地喊道:“AI正在获得自主性!!”
不涉及剧透,这个AI开始做一些它不应该(训练)做的事情,以引出工程师的这种动画反应。
这让我停下来思考。当代理获得自主性时,这是件坏事吗?或者这正是代理的目的——去行动?为了行动,它应该拥有所有工具和资源,还是我们应该限制它们以确保代理在安全范围内?
在过去的几个月里,我与编码代理一起工作,它们是我的专属搭档,产生了数千行代码。这让我开始思考。我现在可以访问一种新事物,它可以无限接近地了解所有编程语言、模式、语法和已知错误信息,并且我可以让它做我原本不太擅长的事情——编写代码。因此,在我的情况下,我希望它拥有更多的自主性、更多的工具和资源,以便有效地、准确地完成我想要它做的事情。然而,有时我不希望它做我没有要求它做的事情——例如,当我要求它创建一个新页面时,它却开始发明一个新的JS框架(稍后会详细说明)。
那么,代理需要什么才能与我的需求保持同步呢? 我想到了三件事——工具、令牌和上下文。
首先,我们来看最容易的一点——工具。截至目前,你可以向代理提供尽可能多的工具,使用MCP服务器。 你能提供给代理的工具数量有没有限制?当然没有。
你应该给它无限制的工具吗?
让我用另一个问题来回答这个问题? 我应该把冰箱里所有的32盒冰淇淋都塞进嘴里吗?(等一下,不要回答!)
认真地说,在我的经验中,一个你可以轻松添加和删除工具,并且在你想让代理使用这些工具时非常明确的代理,比没有任何工具或更糟糕的是,提供大量MCP服务器和工具的代理要好得多。此外,明确告诉代理如何使用这些工具可以产生更好的动作质量。例如,我现在通常会给出如下提示: “使用你的sourcegraph工具首先在所有我的仓库中搜索supabase,列出代码片段,然后使用其他工具获取所有相关文件的内容,阅读它们,然后写一个计划在当前仓库中实现supabase的认证。” 与“在这个代码库中实现supabase的认证”相比。
接下来是令牌。 这是我目前大多数编码代理的痛点。你每月支付20美元,一旦代理开始消耗令牌,代理突然表现得差很多。为什么?可能是代理提供商更换模型和/或减少令牌使用量以获得更好的性价比?

当你给予代理不受限制的令牌访问权限时会发生什么? 在撰写本文时,有两个编码代理允许你这样做——Amp 和 Claude code。在这两个代理中,你会明显看到更好的性能。
那么,为什么令牌对代理性能很重要? 因为令牌是代理具有自主性的方法,即行动。它们需要令牌与LLMs交流,以理解它需要做什么并理解上下文。令牌对于代理来说就像智能手机的电池寿命,作家的咖啡因,宇航员的氧气……抱歉,我有点夸张了。想象一个卫星不断向母舰发送消息,以确定天线应指向哪里,收集哪些信息并返回哪些信息。现在想象一下,你开始限制通信以降低成本。 代理有些类似。
你减少令牌的数量,你减少了工作单位,从而影响其自主性的质量。所以作为用户,你应该怎么做以确保你的编码代理不会被限制令牌?
很简单,使用一个不是为20美元定价计划优化的编码代理。
最后,让我们谈谈上下文。 上下文本身就是一个话题,但就赋予代理执行任务的有效性而言,它们需要关于代码库的知识(长期记忆)、关于当前任务和最近发生的事情可能影响下一步行动的上下文(短期记忆)。对于长期上下文,我发现让代理理解代码库然后将其理解存储在文档文件夹中是有用的(在验证之后)。这包括对架构的一般理解、文件夹结构、一些高层次组件及其相互关系以及关键交互的序列图。此外,大多数编码代理还允许你为每个操作记录一组规则,例如,在每次更改后检查lint错误并进行构建,你可以在代码库级别维护这些规则。
然而,让代理做正确的事情的最有效方法是给出非常明确的指示,例如,不要说“实现supabase的认证”,而是说——“使用你的Brave搜索和获取工具搜索Supabase文档以及如何在Nextjs应用程序中实现认证。一旦找到正确的链接并阅读它们,创建一个文档列出实现Supabase的步骤。将其写成具体的任务,包含创建文件和代码的指令,这样我可以将该文档提供给工程师在我的代码库中实现Supabase。” 一旦代理写出了文档,我通常会做一个粗略的检查,如果看起来不错,我会将该文档作为上下文注入到与代理的新线程中,并要求它逐步遵循实现文档。
还有许多其他最佳实践可以帮助代理做正确的事情,例如,指定在特定任务中不要做什么。例如,“通过使用现有组件创建一个新页面而不安装新包或创建新包。” 谁能想到,即使在AI时代,沟通仍然是人类社会的支柱之一?
我们正处于完全自主编码代理的早期阶段,事情无疑将继续变化,但我确定的是,如果我们希望代理产生高质量的结果,我们需要为它们提供不受限制的令牌访问、有节制地使用合适的工具和非常具体的上下文。
相信我,这些原则同样适用于雇佣高自主性的软件工程师——给他们需要的工具,给他们具体的目标和任务,不受限制地提供咖啡因,然后让他们自由发挥。
原文链接:The secret recipe of powerful AI coding Agents
汇智网翻译整理,转载请标明出处
