如何让AI编程代理更高效?三大实用技巧揭秘

15 阅读7分钟

在本文中,我将讨论如何促进更有效的AI编码代理。图片由ChatGPT生成。

使用AI进行编程是提高编码速度的有效方式。AI代理可以处理大量简单重复的任务,而您可以充当代理的协调者。 然而,我经常遇到的一个问题是,我脑海中掌握的上下文信息比任何AI代理所能掌握的都要多。这可能包括:

  • 某个功能的商业目标
  • 办公室里发生的口头技术讨论
  • 讨论过不同主题的会议
  • 历史知识

所有这些信息的共同点是,它们通常没有被写下来,并且在实现代码时肯定无法被您的AI代理获取。 这张信息图突出了本文的主要内容。我将讨论当今编码代理面临的一个主要挑战,即它们无法获取与人类相同的上下文。此外,我将介绍我使用的一些具体技术,以尽可能为我的编码代理提供相关的上下文信息。图片由Gemini生成。 然而,我们都知道,要成为一名尽可能高效的程序员,您需要广泛的上下文信息。您需要知道为什么要构建某个功能,以便在实现代码时做出正确的决策。办公室里的技术讨论对于理解代码库很重要,项目也经常在会议中成形。那么问题来了:

我们如何让AI拥有与人类程序员相同的上下文?

我认为答案是严格要求写下所有知识(现在使用AI工具做这件事简单多了),并提供工具让AI能够访问这些信息。 在本文中,我将讨论我如何努力使我的编码代理尽可能高效。我相信这在很大程度上只是确保AI能够访问我拥有的相同信息,我将讨论我每天使用的三种具体技术来实现这一点。

我认为编码代理效率不高的一个重要原因,仅仅是因为它们无法获取与人类相同的上下文。

为何要为AI提供所有上下文

为您的AI编码代理提供尽可能多上下文的主要原因是,AI拥有的信息越多,其表现就越好。 假设您想实现一个功能,例如,一个总结会议的工具。如果您不知道以下信息,开发这个功能将非常困难:

  • 代码应该属于哪个代码库?
  • 它应该总结所有会议,还是只总结外部会议?
  • 总结需要多快完成?5秒,还是5分钟?

这些问题都是您作为人类能获得的上下文,而编码代理本身无法访问。 您知道要在哪个代码库中实现代码,因为您之前在该代码库中工作过。 您知道它应该只总结外部会议,并且只需要在5分钟内完成总结,因为这是在上周的构思会议上讨论过的。 但是,如果您在实现时不向您的编码代理提供这些上下文,它将永远无法按照您想要的方式实现该功能。

如果代理缺乏您所拥有的上下文,您会注意到代理开始执行不期望的操作。这既令人沮丧又耗时,但可以通过同步您的上下文与编码代理的上下文来消除。

为AI提供上下文的3种技术

在本节中,我将介绍我在日常工作中使用的具体技术,以尽可能为我的编码代理提供上下文。我相信这些技术对于我成为一名高效的程序员至关重要,并且我一直在寻找更多的技术以变得更有成效。

将IaC架构存储在Markdown文件中

您可以使用的一种简单技术是将您的基础设施即代码(IaC)存储在一个易于访问的文件中,以给予AI更多上下文。 IaC是代表诸如以下信息的代码:

  • 表名
  • 某中心S3存储桶和前缀
  • 生产日志
  • 权限等

当您在一家公司工作一段时间后,您可能已经记住了所有这些信息。您记得最重要表的表名,哪些S3存储桶存储了什么,以及在哪些前缀下。 然而,您的编码代理无法简单地访问这些信息,除非您提供访问权限。最简单的方法是:

  1. 将所有IaC存储库存储在一个文件夹中
  2. 告诉一个编码代理遍历所有这些存储库,并在单个Markdown文件中总结所有IaC
  3. 现在,每当您希望代理处理任何与IaC相关的事情时,您都可以引用这个Markdown文件

很难解释这为我节省了多少时间。我的代理不必在找到存储所需信息的正确表之前列出所有数据库表。相反,它只是知道所有这些表名并直接访问正确的信息。这使得代理更快,也更便宜,因为它花费更少的代币来查找所需信息。

识别编码代理缺失上下文的时机

另一个重点是,要警惕您的AI何时缺失上下文。如果您没有总结您的IaC(如上一节所述),您可能会注意到代理总是:

  • 列出所有表名
  • 推理现在应该访问哪个表是正确的
  • 尝试访问一个表,有时会出错,然后不得不尝试另一个表

这是您的编码代理缺少重要上下文的结果。每当您注意到这样的模式时,您应该立即中断并告知编码代理:

“当您查找文档时,可以在名为DocumentTable的表中找到它们。请在AGENTS.md中记住这一点。” 现在,代理下次就会记住这一点,您将节省大量时间和代币。

我敦促您始终留意您的编码代理遇到困难的情况。如果某个任务花费的时间比平时长,通常是因为它缺少上下文,而您的工作就是为AI编码代理提供该上下文。

使用AI工具总结会议

您可以使用另一种简单的技术来为编码代理提供更多上下文,即使用AI工具(例如某机构)总结会议,并将其作为上下文提供给您的编码代理。 例如,如果您有一个讨论如何实现某个功能的构思会议,您可以总结该会议,并在实现该功能时将其作为上下文提供给您的编码代理。 这样,代理就拥有了与您相同的关于应如何实现该功能的所有信息。这是一种廉价且简单的技术,您可以用来改善编码代理的上下文。

为了补充上一节,我还想强调,构思会议通常应该在项目管理工具(如Linear)中产生适当成形的任务。 例如,您正在实现的功能应该被完整地总结并塑造成一个Linear问题或项目。如果是这种情况,您只需为AI代理提供访问Linear问题的权限(您可以通过Linear MCP实现),以确保它能访问所有相关信息。

结论

在本文中,我介绍了如何促进更有效的AI编码代理编程。我讨论了编码代理的一个非常常见的问题,即它们无法获取与人类程序员相同的上下文。这仅仅是因为主题在会议中和办公室周围被讨论,而这些信息没有被写下来。我重点介绍了三种我用来为编码代理提供尽可能多上下文的具体技术。我相信在未来几年,我们将看到编码代理性能的巨大改进,这仅仅是因为我们能够更好地为它们提供有效完成任务所需的所有上下文。