不确定变化的推动者
从压缩技巧到多代理团队合作,这就是他们的动力。
来自 OpenAI、Anthropic 和 Google 的 AI 编码代理现在可以致力于软件项目几个小时一次,编写完整的应用程序,运行测试,并在人工监督下修复错误。但这些工具并不神奇,它们不但不会简化软件项目,反而会使软件项目变得复杂。了解它们的工作原理可以帮助开发人员知道何时(以及是否)使用它们,同时避免常见的陷阱。
我们将从基础开始:每个 AI 编码代理的核心都是一种称为大语言模型 (LLM) 的技术,它是一种基于大量文本数据(包括大量编程代码)进行训练的神经网络。它是一种模式匹配机,使用提示来“提取”训练期间看到的数据的压缩统计表示,并提供该模式的合理延续作为输出。在这个提取中,法学硕士可以插值跨领域和概念,如果做得好的话,会产生一些有用的逻辑推论虚构错误当做得不好时。
然后,通过对精选示例进行微调和根据人类反馈进行强化学习 (RLHF) 等技术进一步完善这些基础模型,这些技术使模型能够遵循指令、使用工具并产生更有用的输出。
Claude Code 命令行界面的屏幕截图。信用:人择
在过去的几年里,人工智能研究人员一直在探索法学硕士的缺陷,并寻找解决这些缺陷的方法。最近的一项创新是模拟推理模型,它以推理式文本的形式生成上下文(扩展提示),可以帮助法学硕士获得更准确的输出。另一项创新是应用程序称为“代理”将多个法学硕士连接在一起以同时执行任务并评估输出。
编码代理的结构如何
从这个意义上说,每个人工智能编码代理都是一个与多个法学硕士一起工作的程序包装器。通常有一个“监督”法学硕士来解释人类用户的任务(提示),然后将这些任务分配给可以使用软件工具执行指令的并行法学硕士。监督代理可以中断其下面的任务并评估子任务结果以了解项目的进展情况。Anthropic 的工程文档描述该模式为“收集背景、采取行动、验证工作、重复。”
如果通过命令行界面 (CLI) 在本地运行,用户会向代理授予在本地计算机上写入文件(代码或所需的任何内容)、运行探索性命令(例如,“ls”以列出目录中的文件)、获取网站(通常使用“curl”)、下载软件或将文件上传到远程服务器的条件权限。有很多可能性(并且潜在危险)采用这种方法,因此需要谨慎使用。
相比之下,当用户在基于 Web 的代理(例如 Codex 和 Claude Code 的 Web 版本)中启动任务时,系统规定一个沙箱化的预加载了用户代码存储库的云容器,Codex 可以在其中读取和编辑文件、运行命令(包括测试工具和 linter)以及独立执行代码。Anthropic 的 Claude Code 使用操作系统级功能来创建文件系统和网络边界,代理可以在其中更自由地工作。
上下文问题
可以说,每个法学硕士都有短期记忆,这会限制其在“忘记”正在做什么之前可以处理的数据量。这称为“上下文”。每次您向监督代理提交响应时,您都在修改一个巨大的提示,其中包括迄今为止的整个对话历史记录(以及生成的所有代码,加上模型用于“思考”更多问题的模拟推理标记)。然后,人工智能模型评估该提示并产生输出。这是一个计算成本非常高随着提示大小呈二次方增加的过程,因为 LLM 处理每个标记(数据块)反对提示中的所有其他标记。
Anthropic 的工程团队描述上下文是一种收益递减的有限资源。研究揭示了研究人员所说的“上下文旋转”:随着上下文窗口中标记数量的增加,模型准确回忆信息的能力会下降。每个新代币都会耗尽文档中所说的“注意力预算”。
这种上下文限制自然会限制 LLM 一次可以处理的代码库的大小,如果您向 AI 模型提供大量巨大的代码文件(每次发送另一个响应时 LLM 都必须重新评估这些代码文件),它可以很快耗尽令牌或使用限制。
交易技巧
为了绕过这些限制,编码代理的创建者使用了多种技巧。例如,人工智能模型经过微调,可以编写代码将活动外包给其他软件工具。例如,他们可能会编写 Python 脚本来从图像或文件中提取数据,而不是通过 LLM 提供整个文件,这样可以节省令牌并避免不准确的结果。
Anthropic 的文档笔记Claude Code 还使用这种方法对大型数据库执行复杂的数据分析,编写有针对性的查询并使用“head”和“tail”等 Bash 命令来分析大量数据,而无需将完整的数据对象加载到上下文中。
(在某种程度上,这些人工智能代理是受引导但半自主的工具使用程序,这是我们的概念的主要延伸第一次看到2023 年初。)
代理的另一个重大突破来自动态上下文管理。代理可以通过几种在专有编码模型中未完全公开的方式来做到这一点,但我们确实知道他们使用的最重要的技术:上下文压缩。
在 macOS 终端窗口中运行的 OpenAI Codex 命令行版本。信用:本杰·爱德华兹
当编码法学硕士接近其上下文限制时,该技术通过总结来压缩上下文历史记录,在过程中丢失细节,但将历史记录缩短为关键细节。Anthropic 的文档描述这种“压缩”是以高保真方式提取上下文内容,保留架构决策和未解决的错误等关键细节,同时丢弃冗余的工具输出。
这意味着每次压缩发生时,AI 编码代理都会定期“忘记”他们正在做的大部分事情,但与旧的基于 LLM 的系统不同,他们并不是完全不知道发生了什么,并且可以通过阅读现有代码、文件中留下的书面注释、更改日志等来快速重新定位自己。
Anthropic 的文档推荐使用 CLAUDE.md 文件记录常见的 bash 命令、核心文件、实用函数、代码风格指南和测试说明。代理.md现已成为多公司标准,是在上下文刷新之间指导代理操作的另一种有用方法。这些文件充当外部注释,使代理可以跟踪复杂任务的进度,同时维护否则会丢失的关键上下文。
对于需要长时间工作的任务,两家公司都采用多代理架构。根据 Anthropic 的研究文档,其系统采用“协调员-工作人员模式”,其中首席代理协调流程,同时委托给并行操作的专门子代理。当用户提交查询时,主导代理会对其进行分析,制定策略,并生成子代理以同时探索不同的方面。子代理充当智能过滤器,仅将相关信息而不是完整上下文返回给主导代理。
多代理方法会迅速消耗代币。Anthropic 的文档笔记代理通常使用比聊天机器人交互多约四倍的令牌,多代理系统使用比聊天多约 15 倍的令牌。为了经济可行性,这些系统需要价值足够高的任务来证明增加的成本是合理的。
人类的最佳实践
虽然在某些编程圈中使用这些代理存在争议,但如果您使用这些代理来编写项目,了解良好的软件开发实践有助于避免未来出现问题。例如,了解版本控制、进行增量备份、一次实现一项功能以及在继续之前对其进行测试是很好的。
人们称之为什么 –振动编码“在不了解人工智能生成的代码在做什么的情况下创建它”对于生产工作来说显然是危险的。在生产环境中传送不是您自己编写的代码是有风险的,因为它可能会引入安全问题或其他错误,或者开始积累技术债务,随着时间的推移,这些债务可能会像滚雪球一样越滚越大。
独立人工智能研究员 Simon Willison 最近争论使用编码代理的开发人员仍然有责任证明他们的代码有效。“几乎任何人都可以提示法学硕士生成千行补丁并将其提交进行代码审查,”威利森写道。——那不再有价值了。有价值的是贡献被证明有效的代码。”
事实上,人的规划是关键。Claude Code 的最佳实践文档推荐复杂问题的具体工作流程:首先要求Agent阅读相关文件并明确告诉它不要编写任何代码,然后要求它制定计划。文件警告说,如果没有这些研究和规划步骤,克劳德的输出往往会直接跳到编写解决方案。
如果没有计划,法学硕士有时会寻求快速解决方案来满足暂时的目标,如果项目扩展,该目标可能会在以后打破。因此,了解如何构建一个可以随时间扩展的模块化程序的良好架构可以帮助您指导法学硕士制作更耐用的东西。
如上所述,这些代理并不完美,有些人根本不想使用它们。随机对照试验发表非营利研究组织 METR 在 2025 年 7 月发现,经验丰富的开源开发人员在使用 AI 工具时实际上需要多花 19% 的时间来完成任务,尽管他们认为自己的工作速度更快。该研究的作者指出了几个注意事项:开发人员对其代码库经验丰富(平均五年和 1,500 次提交),存储库庞大且成熟,并且使用的模型(主要是通过 Cursor 的 Claude 3.5 和 3.7 Sonnet)已被功能更强大的版本所取代。
新模型是否会产生不同的结果仍然是一个悬而未决的问题,但研究表明人工智能编码工具可能并不总是提供普遍的加速,特别是对于已经熟悉其代码库的开发人员来说。
考虑到这些潜在的危险,编码概念验证演示和内部工具可能是目前编码代理的理想用途。由于人工智能模型已经无实际代理机构(尽管被称为代理人)并且不是可以对错误负责的人,人为监督是关键。
